oneapi
Sign in
Financiar v1 / Fiscal

Fiscal thresholds in force

The micro-enterprise ceiling and the VAT exemption threshold, at a date. The same source as the rates, but a separate route because it is a different question: a threshold says „from here the regime changes", a rate says „this much is paid".

⚠️ plafon_micro has a gap from 1 January 2025 — the source has no entry after 31 December 2024. A la_data after that gets an error, and the gap is also listed at /fiscal/acoperire.

GET
https://oneapi.ro/api/financiar/v1/fiscal/praguri

Query parameters

NameTypeDescriptionAccepted values
la_dataoptional string | null Optional, YYYY-MM-DD; defaults to today. e.g. 2024-06-15
tipoptional string | null Optional: plafon_micro or prag_tva_scutire. plafon_microprag_tva_scutire

How it behaves

  • The micro-enterprise ceiling and the VAT exemption threshold at a given date, from the same shared registry as the rates.
  • A separate route from /fiscal/cote because it is a different question: a threshold says "past this point the regime changes", a rate says "this much is paid". Someone looking for a threshold does not want to filter through rates.
  • ⚠️ plafon_micro has a gap from 1 January 2025 — the registry holds no entry after 31.12.2024. A later la_data returns an error rather than the last known value. The gap is also listed explicitly at /fiscal/acoperire.

What it is for

  • Checking whether a company still qualifies as a micro-enterprise at a given date.
  • The threshold above which VAT registration becomes mandatory.

Response structure

FieldTypeDescription
data.la_data string The date the returned values are valid on.
data.valori[].indicator string The statistical indicator the value refers to.
data.valori[].valoare string The value published by the source for the combination above.
data.valori[].unitate string eur for the micro ceiling, lei for the VAT threshold — the thresholds are not all in the same currency.
data.valori[].de_la string Start of the covered interval.
data.valori[].pana_la null End of the covered interval, inclusive.
data.valori[].act_normativ string
data.valori[].de_verificat boolean true when the value has not been confirmed against the text of the act.
meta.sursa string The official source the data comes from, with its licence where one is required.
meta.de_verificat array Which values used are not legally confirmed. Empty means all are.
meta.nota_acoperire string Why the total is a lower bound, in prose. meta.total_e_limita_de_jos is the word to switch on in code.
meta.fara_date data is null and this says why. The quote exists at the source, but our import is behind; the response says how far our data goes. For plafon_micro, any date from 2025 onwards.
meta.fara_date_cod The short, STABLE word for the reason, for clients that branch on it in code: fara_date is prose and may be rephrased, this is not.

Response examples

GEThttps://oneapi.ro/api/financiar/v1/fiscal/praguri
{
    "data": {
        "la_data": "2026-10-07",
        "valori": [
            {
                "indicator": "plafon_micro",
                "valoare": "100000",
                "unitate": "eur",
                "de_la": "2026-01-01",
                "pana_la": null,
                "act_normativ": "OUG 156/2024",
                "de_verificat": false
            }
        ]
    },
    "meta": {
        "sursa": "Legislaţia fiscală, curatată manual, cu act normativ pe fiecare valoare. Cotele, pragurile şi salariul minim se citesc din registrul comun `business_indicatori_fiscali`.",
        "de_verificat": [],
        "nota_acoperire": "Ce perioade acoperă fiecare set şi ce e neconfirmat: /financiar/v1/fiscal/acoperire."
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatMissing or invalid token.
403feature_indisponibilfinanciar.fiscal_referinta is not in the current plan.
422validaretip is not a threshold (rates are at /fiscal/cote) or la_data is not a date; detalii says which.
429cota_depasitaThe plan's monthly quota has been exceeded (see Retry-After).

All errors share the same shape. eroare.cod is stable and is the value you should branch on in code — not the text in mesaj, which may change.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "tip is not a threshold (rates are at /fiscal/cote) or la_data is not a date; detalii says which.",
        "detalii": {
            "la_data": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}