oneapi
Sign in
Financiar v1 / Fiscal

Tax rates in force

The contribution and tax rates in force at a date — pension, health, income tax, corporate tax, the work insurance contribution and VAT — each with its article of the Tax Code and its period.

⚠️ de_verificat is not decoration. It marks values that have not been confirmed against the text of the legislation; today those are the ones from the 2025 and 2026 tax packages. A response containing them says so explicitly, so that nobody takes as legally confirmed something that is not.

⚠️ No extrapolation. A date outside the covered period gets an error with the coverage in the message, not the last known value — which would be plausible and wrong.

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

Query parameters

NameTypeDescriptionAccepted values
la_dataoptional string | null Optional, YYYY-MM-DD; defaults to today. e.g. 2024-06-15e.g. 2024-06-14
tipoptional string | null Optional: cota_cas, cota_cass, cota_impozit_venit, cota_impozit_profit, cota_cam, cota_tva_standard. cota_cascota_casscota_impozit_venitcota_impozit_profitcota_camcota_tva_standard

How it behaves

  • Contribution and tax rates valid at a given date — pension (CAS), health (CASS), income tax, profit tax, the work insurance contribution (CAM) and VAT — each with the Tax Code article that sets it and its period of application.
  • ⚠️ de_verificat is not decoration. It marks values that have not been confirmed against the text of the legal act. Today there are four in the whole registry, all from the 2025 and 2026 tax packages. A response containing any of them says so explicitly in meta, so nobody takes as legally confirmed something that is not.
  • ⚠️ No extrapolation. A date outside the covered period returns an error, with the coverage in the message — never the "last known value". Here a plausible wrong value means a wrongly calculated salary.
  • The rates come from the shared registry business_indicatori_fiscali, read cross-module. There is no second copy in Financiar: two tables holding the pension rate would drift apart silently, and the answer would depend on which route you happened to hit.

What it is for

  • The exact rate applicable at a document date, with its legal basis, for a payroll calculation.
  • Checking which rate was in force at a past date, in a dispute or a reconciliation.
  • Feeding your own calculator without tracking legislative changes yourself.

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 Unit of measure of the values. Read it before plotting or summing them.
data.valori[].de_la string Start of the covered interval.
data.valori[].pana_la null null means in force, with no end date.
data.valori[].act_normativ string The legal basis of the value — the Tax Code article or the act that amended it.
data.valori[].de_verificat boolean true when the value has not been confirmed against the text of the act. Do not treat it as legally confirmed.
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 rate exists at the source, but our import is behind; the response says how far our data goes. The date is outside the covered period; the response gives the coverage.
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/cote
{
    "data": {
        "la_data": "2026-10-07",
        "valori": [
            {
                "indicator": "cota_cam",
                "valoare": "2.25",
                "unitate": "%",
                "de_la": "2018-01-01",
                "pana_la": null,
                "act_normativ": "Codul Fiscal art.220^3",
                "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 rate (thresholds are at /fiscal/praguri) or la_data is not in the YYYY-MM-DD shape; 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 rate (thresholds are at /fiscal/praguri) or la_data is not in the YYYY-MM-DD shape; detalii says which.",
        "detalii": {
            "la_data": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}