Financiar v1 / Fiscal
Total employer cost
What a gross salary costs the employer: the gross plus the work insurance contribution, with that contribution shown separately and with its legal basis.
⚠️ It is the only contribution owed by the employer under the post-2018 regime — the rest are withheld from the employee's gross. That is why the total cost is gross + work insurance contribution, not gross + all contributions.
POST
https://oneapi.ro/api/financiar/v1/calcul/salariu/cost-angajator
Request body
Sent as JSON in the request body (Content-Type: application/json) — not in the query string.
NameTypeDescriptionAccepted values
brutrequired
integer | null
Required, in whole lei.
1 – 100000000
la_dataoptional
string | null
Optional,
YYYY-MM-DD; defaults to today.
5,000 lei gross
Request body
{
"brut": 5000
}
10,000 lei gross
Request body
{
"brut": 10000
}
At the minimum wage
Request body
{
"brut": 4050
}
The 2023 rates
Request body
{
"brut": 5000,
"la_data": "2023-06-15"
}
Query parameters
This route accepts no query parameters.
How it behaves
- What a gross salary costs the employer: the gross plus the work insurance contribution, with CAM shown separately and with its legal basis.
- ⚠️ CAM is the only contribution owed by the employer under the post-2018 regime — the rest are withheld from the employee gross. That is why the total cost is gross + CAM, not gross + all contributions. It is the classic mistake when budgeting a hire.
- ⚠️ POST and zero retention, as with the other calculators.
What it is for
- Budgeting a hire from the negotiated gross.
- The real cost of a team, for a month.
Response structure
FieldTypeDescription
data.brut
integer
The smallest whole gross that yields exactly the requested net.
data.cam
integer
The work insurance contribution, rounded to the leu.
data.cost_total
integer
Gross + CAM.
data.la_data
string
The date the returned values are valid on.
data.facilitate
null
data.componente[].cod
string
Code from the source code list — the key you filter on.
data.componente[].denumire
string
The name, exactly as the source publishes it.
data.componente[].baza_de_calcul
integer
The amount the rate was applied to — for income tax it is the taxable base, not the gross.
data.componente[].cota
string
data.componente[].valoare
integer
The value published by the source for the combination above.
data.componente[].act_normativ
string
The legal basis of the rate applied to that component.
data.componente[].de_verificat
boolean
meta.sursa
string
The official source the data comes from, with its licence where one is required.
meta.retentie
string
Confirmation that the input was not stored anywhere.
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 rates do not cover the requested date.
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
body: {"brut": 5000}
POSThttps://oneapi.ro/api/financiar/v1/calcul/salariu/cost-angajator
{
"data": {
"brut": 5000,
"cam": 113,
"cost_total": 5113,
"la_data": "2026-10-07",
"facilitate": null,
"componente": [
{
"cod": "cam",
"denumire": "Contribuţia asiguratorie pentru muncă",
"baza_de_calcul": 5000,
"cota": "2.25%",
"valoare": 113,
"act_normativ": "Codul Fiscal art.220^3",
"de_verificat": false
}
]
},
"meta": {
"sursa": "Cotele vin din registrul comun `business_indicatori_fiscali`; facilităţile şi grila deducerii, din `Modules/Financiar/resources/fiscal`, cu act normativ pe fiecare valoare.",
"retentie": "Zero. Intrarea nu se scrie nicăieri — nici în bază, nici în cache, nici în log.",
"nota_acoperire": "Ce e acoperit şi ce nu: /financiar/v1/fiscal/acoperire."
}
}
body: {"brut": 10000}
POSThttps://oneapi.ro/api/financiar/v1/calcul/salariu/cost-angajator
{
"data": {
"brut": 10000,
"cam": 225,
"cost_total": 10225,
"la_data": "2026-10-07",
"facilitate": null,
"componente": [
{
"cod": "cam",
"denumire": "Contribuţia asiguratorie pentru muncă",
"baza_de_calcul": 10000,
"cota": "2.25%",
"valoare": 225,
"act_normativ": "Codul Fiscal art.220^3",
"de_verificat": false
}
]
},
"meta": {
"sursa": "Cotele vin din registrul comun `business_indicatori_fiscali`; facilităţile şi grila deducerii, din `Modules/Financiar/resources/fiscal`, cu act normativ pe fiecare valoare.",
"retentie": "Zero. Intrarea nu se scrie nicăieri — nici în bază, nici în cache, nici în log.",
"nota_acoperire": "Ce e acoperit şi ce nu: /financiar/v1/fiscal/acoperire."
}
}
body: {"brut": 4050}
POSThttps://oneapi.ro/api/financiar/v1/calcul/salariu/cost-angajator
{
"data": {
"brut": 4050,
"cam": 91,
"cost_total": 4141,
"la_data": "2026-10-07",
"facilitate": null,
"componente": [
{
"cod": "cam",
"denumire": "Contribuţia asiguratorie pentru muncă",
"baza_de_calcul": 4050,
"cota": "2.25%",
"valoare": 91,
"act_normativ": "Codul Fiscal art.220^3",
"de_verificat": false
}
]
},
"meta": {
"sursa": "Cotele vin din registrul comun `business_indicatori_fiscali`; facilităţile şi grila deducerii, din `Modules/Financiar/resources/fiscal`, cu act normativ pe fiecare valoare.",
"retentie": "Zero. Intrarea nu se scrie nicăieri — nici în bază, nici în cache, nici în log.",
"nota_acoperire": "Ce e acoperit şi ce nu: /financiar/v1/fiscal/acoperire."
}
}
body: {"brut": 5000, "la_data": "2023-06-15"}
POSThttps://oneapi.ro/api/financiar/v1/calcul/salariu/cost-angajator
{
"data": {
"brut": 5000,
"cam": 113,
"cost_total": 5113,
"la_data": "2023-06-15",
"facilitate": null,
"componente": [
{
"cod": "cam",
"denumire": "Contribuţia asiguratorie pentru muncă",
"baza_de_calcul": 5000,
"cota": "2.25%",
"valoare": 113,
"act_normativ": "Codul Fiscal art.220^3",
"de_verificat": false
}
]
},
"meta": {
"sursa": "Cotele vin din registrul comun `business_indicatori_fiscali`; facilităţile şi grila deducerii, din `Modules/Financiar/resources/fiscal`, cu act normativ pe fiecare valoare.",
"retentie": "Zero. Intrarea nu se scrie nicăieri — nici în bază, nici în cache, nici în log.",
"nota_acoperire": "Ce e acoperit şi ce nu: /financiar/v1/fiscal/acoperire."
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Missing or invalid token. |
| 403 | feature_indisponibil | financiar.fiscal_calcul is not in the current plan. |
| 422 | validare | brut_lipsa. |
| 429 | cota_depasita | The 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": "brut_lipsa."
}
}