oneapi
Autentificare
Financiar v1 / Fiscal

Costul total al angajatorului

Cât îl costă pe angajator un salariu brut: brutul plus contribuţia asiguratorie pentru muncă,
cu CAM separat şi cu temeiul ei.

⚠️ CAM e singura contribuţie datorată de angajator în regimul de după 2018 — restul se reţin din
brutul salariatului. De aceea costul total e brut + CAM, nu brut + toate contribuţiile.

POST
https://oneapi.ro/api/financiar/v1/calcul/salariu/cost-angajator

Corpul cererii

Se trimite ca JSON, în corpul cererii (Content-Type: application/json) — nu în şirul de interogare.

NumeTipDescriereValori acceptate
brutobligatoriu integer | null Obligatoriu, în lei întregi. 1 – 100000000
la_dataopțional string | null Opţional, AAAA-LL-ZZ; implicit ziua curentă.
5.000 lei brut Corpul cererii
{
    "brut": 5000
}
10.000 lei brut Corpul cererii
{
    "brut": 10000
}
La salariul minim Corpul cererii
{
    "brut": 4050
}
Cotele din 2023 Corpul cererii
{
    "brut": 5000,
    "la_data": "2023-06-15"
}

Parametri de interogare

Ruta nu acceptă parametri de interogare.

Cum se comportă

  • Cât îl costă pe angajator un salariu brut: brutul plus contribuţia asiguratorie pentru muncă, cu CAM separat şi cu temeiul ei.
  • ⚠️ CAM e singura contribuţie datorată de angajator în regimul de după 2018 — restul se reţin din brutul salariatului. De aceea costul total e brut + CAM, nu brut + toate contribuţiile. E greşeala clasică la bugetarea unei angajări.
  • ⚠️ POST şi retenţie zero, ca la celelalte calculatoare.

La ce folosește

  • Bugetarea unei angajări, pornind de la brutul negociat.
  • Costul real al unei echipe, pe o lună.

Structura răspunsului

CâmpTipDescriere
data.brut integer Cel mai mic brut întreg care dă exact netul cerut.
data.cam integer Contribuţia asiguratorie pentru muncă, rotunjită la leu.
data.cost_total integer Brut + CAM.
data.la_data string Data la care sunt valabile valorile întoarse.
data.facilitate null
data.componente[].cod string Codul din nomenclatorul sursei — cheia pe care se filtrează.
data.componente[].denumire string Denumirea, aşa cum o publică sursa.
data.componente[].baza_de_calcul integer Suma pe care s-a aplicat cota — la impozit e baza impozabilă, nu brutul.
data.componente[].cota string
data.componente[].valoare integer Valoarea publicată de sursă pentru combinaţia de mai sus.
data.componente[].act_normativ string Temeiul cotei aplicate componentei.
data.componente[].de_verificat boolean
meta.sursa string Sursa oficială din care vin datele, cu licenţa ei acolo unde e cerută.
meta.retentie string Confirmarea că intrarea nu s-a scris nicăieri.
meta.nota_acoperire string De ce totalul e o limită de jos, în proză. meta.total_e_limita_de_jos e cuvântul pe care comuţi în cod.
meta.fara_date data e null, iar aici stă motivul. Cotele nu acoperă data cerută.
meta.fara_date_cod Cuvântul scurt şi STABIL al motivului, pentru clienţii care comută pe el în cod: fara_date e proză şi se poate reformula, ăsta nu.

Exemple de răspuns

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."
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă sau invalid.
403feature_indisponibilfinanciar.fiscal_calcul nu e în planul curent.
422validarebrut_lipsa.
429cota_depasitaCota lunară a planului a fost depăşită (vezi Retry-After).

Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "brut_lipsa."
    }
}