Normele anuale de venit
Normele de venit pe judeţ şi cod CAEN, pentru un an.
⚠️ Setul nu e încă populat şi ruta o spune deschis (200 + meta.fara_date), în loc să întoarcă
o listă goală care ar putea trece drept „judeţul ăsta n-are norme". Sunt mii de combinaţii
stabilite prin ordine anuale ale direcţiilor regionale ANAF; se aduc pe traseul obişnuit al
platformei — sursă, fişier, import — nu se reconstituie din memorie.
Parametri de interogare
CJ, DJ, B pentru Bucureşti. Un cod inexistent dă 422, nu o listă goală. Un judeţ care EXISTĂ dar nu e în set dă 200 cu judet_neacoperit.
ex. DJex. B
meta.zone, fiindcă nu pot fi ghicite.
max 120 car.
caen — 1, 2 sau 3 — când forma lui e ambiguă (4932 înseamnă altceva în Rev.2 şi în Rev.3).
123
Cum se comportă
- Normele anuale de venit pentru activităţile independente impuse la normă — pe judeţ, activitate, cod CAEN şi zona în care se desfăşoară activitatea.
- ⚠️ O normă nu are o valoare, are una per ZONĂ. Aşa o cere legea („la locul desfăşurării activităţii") şi aşa o publică judeţele, pe coloane. În Dolj, activităţile veterinare au 52.974 lei în Craiova şi 48.600 în oraşe şi comune. Parametrul
zonafiltrează pe eticheta publicată de judeţ;meta.zonespune ce valori acceptă pentru judeţul cerut. - ⚠️ Zonele NU sunt o listă fixă — fiecare judeţ îşi defineşte propriile. Dolj: „Municipiul Craiova / Oraşe / Comune". Cluj desparte municipiile reşedinţă de cele nereşedinţă. Mureş le numeşte cu nume de oraşe: „TÂRGU MUREŞ / REGHIN / … / Zona rurală". Bucureştiul are 18, câte trei pentru fiecare administraţie de sector: „AS1FP Centru A Zona 0", „AS1FP Semicentru B Zona I", „AS1FP Periferie C+D Zona II+III", şi aşa până la AS6FP. De aceea
zonae text, exact cum îl publică judeţul, şi nu un cod. - ⚠️ Nici granularitatea nu e aceeaşi. Dolj publică o normă per ACTIVITATE: activitatea „Comerţ cu produse agricole şi alimentare" listează şase coduri CAEN şi are o singură valoare pe zonă. Cluj publică o normă per COD: sub „Confecţionare şi/sau comercializare de încălţăminte", codul 1520 are 51.700 lei şi codul 4772 are 86.400, în aceeaşi zonă. Răspunsul le aduce pe amândouă la aceeaşi formă — un rând per activitate × cod × zonă — deci nu trebuie să ştii care judeţ publică cum.
- ⚠️ Setul e PARŢIAL, şi ruta o spune deschis.
meta.judete_acoperitelistează judeţele din bază (azi 19 din 42, Bucureştiul inclus). Pentru un judeţ care nu e acolo, răspunsul e 200 cumeta.fara_date_cod = judet_neacoperitşi explicaţia — NU o listă goală, care ar trece drept „aici nu există norme". Motivul e la sursă: ANAF publică un PDF per judeţ, iar o parte sunt scanuri de imagine (fără text de citit), iar la altele antetul nu dă etichete de zonă distincte — o normă pusă pe zona greşită e o bază de impozitare greşită, deci preferăm gaura declarată. Cele şapte judeţe care lipsesc de pe pagina centrală se aduc de pe portalul DGRFP Ploieşti; trei dintre ele au intrat aşa. - ⚠️ Toate valorile sunt marcate
de_verificat. Sunt citite automat din tabele PDF făcute de mână, fiecare judeţ altfel. Marcajul nu e o formalitate: cine calculează un impozit pe baza lor să verifice cifra în documentul judeţului, al cărui număr de decizie stă înact_normativcând sursa îl tipăreşte. - Activitatea se cere ca pe toată platforma.
caenprimeşte orice cod, de orice nivel şi din orice revizie, şi se caută în AMBELE revizii publicate (normele pentru 2026 vin cu Rev.2 şi Rev.3 pe coloane separate) — fiindcă clientul nu poate şti în care revizie a fost publicat codul lui.
La ce folosește
- Norma de venit aplicabilă unei activităţi independente impuse la normă, în localitatea unde se desfăşoară.
- Compararea normelor între zonele aceluiaşi judeţ — diferenţa dintre municipiu şi comună poate fi de 10-30%.
- Compararea normelor între judeţe pentru acelaşi cod CAEN.
Structura răspunsului
null unde sursa nu l-a numerotat.
null unde judeţul publică doar Rev.3.
de_verificat.
true pe TOT setul — v. nota despre citirea automată.
meta.total_e_limita_de_jos e cuvântul pe care comuţi în cod.
zona. Absent când nu s-a cerut un judeţ. La Bucureşti sunt 18: 6 administraţii de sector × 3 zone, numite cum le publică sursa („AS1FP Centru A Zona 0").
data e null, iar aici stă motivul.
judet_neacoperit ori set_nepopulat.
caen: codul cerut, revizia în care s-a citit şi codul pe care l-a folosit ruta. La o listă de coduri, câte un obiect pe cod.
caen_versiune, altfel prima în care există.
sectiune, subsectiune, diviziune, grupa, clasa sau agregat.
Exemple de răspuns
{
"data": {
"an": 2026,
"norme": [
{
"judet_cod": "B",
"nr_crt": 1,
"activitate": "Boiangerie",
"zona": "AS1FP Centru A Zona 0",
"caen": "1330",
"caen_rev3": null,
"norma_lei": 53000,
"act_normativ": "Norme publicate de ANAF pentru 2026 (Bucuresti), fără număr de decizie în document",
"de_verificat": true
}
]
},
"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`.",
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 11115,
"pagini": 2223
},
"ani_acoperiti": [
2026
],
"judete_acoperite": [
"B",
"BR",
"CJ",
"CT",
"CV",
"DJ",
"GL",
"GR",
"HR",
"IL",
"IS",
"MM",
"MS",
"SB",
"SJ",
"SM",
"TL",
"TR",
"VN"
],
"nota_acoperire": "Ce perioade acoperă fiecare set şi ce e neconfirmat: /financiar/v1/fiscal/acoperire."
}
}
meta.zone spune ce valori acceptă zona pentru judeţul cerut — nu pot fi ghicite.
{
"data": {
"an": 2026,
"norme": [
{
"judet_cod": "DJ",
"nr_crt": 1,
"activitate": "Boiangerie Comerţ cu amănuntul in magazine nespecializate, cu vanzare predominanta de produse alimentare, bauturi si tutun",
"zona": "COMUNE",
"caen": "1330",
"caen_rev3": null,
"norma_lei": 48600,
"act_normativ": "Norme publicate de ANAF pentru 2026 (Dolj), fără număr de decizie în document",
"de_verificat": true
}
]
},
"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`.",
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 471,
"pagini": 95
},
"ani_acoperiti": [
2026
],
"judete_acoperite": [
"B",
"BR",
"CJ",
"CT",
"CV",
"DJ",
"GL",
"GR",
"HR",
"IL",
"IS",
"MM",
"MS",
"SB",
"SJ",
"SM",
"TL",
"TR",
"VN"
],
"zone": [
"COMUNE",
"MUNICIPIUL CRAIOVA",
"ORASE"
],
"nota_acoperire": "Ce perioade acoperă fiecare set şi ce e neconfirmat: /financiar/v1/fiscal/acoperire."
}
}
Eticheta se scrie cum o publică judeţul; diacriticele şi majusculele nu contează.
{
"data": {
"an": 2026,
"norme": [
{
"judet_cod": "DJ",
"nr_crt": 1,
"activitate": "Boiangerie Comerţ cu amănuntul in magazine nespecializate, cu vanzare predominanta de produse alimentare, bauturi si tutun",
"zona": "COMUNE",
"caen": "1330",
"caen_rev3": null,
"norma_lei": 48600,
"act_normativ": "Norme publicate de ANAF pentru 2026 (Dolj), fără număr de decizie în document",
"de_verificat": true
}
]
},
"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`.",
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 157,
"pagini": 32
},
"ani_acoperiti": [
2026
],
"judete_acoperite": [
"B",
"BR",
"CJ",
"CT",
"CV",
"DJ",
"GL",
"GR",
"HR",
"IL",
"IS",
"MM",
"MS",
"SB",
"SJ",
"SM",
"TL",
"TR",
"VN"
],
"zone": [
"COMUNE",
"MUNICIPIUL CRAIOVA",
"ORASE"
],
"nota_acoperire": "Ce perioade acoperă fiecare set şi ce e neconfirmat: /financiar/v1/fiscal/acoperire."
}
}
{
"data": {
"an": 2026,
"norme": [
{
"judet_cod": "B",
"nr_crt": 6,
"activitate": "Comerţ cu îmbrăcăminte şi încălţăminte nouă şi uzată",
"zona": "AS1FP Centru A Zona 0",
"caen": "4772",
"caen_rev3": null,
"norma_lei": 53000,
"act_normativ": "Norme publicate de ANAF pentru 2026 (Bucuresti), fără număr de decizie în document",
"de_verificat": true
}
]
},
"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`.",
"paginare": {
"pagina": 1,
"per_pagina": 5,
"total": 155,
"pagini": 31
},
"ani_acoperiti": [
2026
],
"judete_acoperite": [
"B",
"BR",
"CJ",
"CT",
"CV",
"DJ",
"GL",
"GR",
"HR",
"IL",
"IS",
"MM",
"MS",
"SB",
"SJ",
"SM",
"TL",
"TR",
"VN"
],
"nota_acoperire": "Ce perioade acoperă fiecare set şi ce e neconfirmat: /financiar/v1/fiscal/acoperire.",
"caen": {
"cerut": "4772",
"versiune_cerut": "Rev.3",
"nivel": "clasa",
"denumire": "Comerț cu amănuntul al încălțămintei și articolelor din piele"
}
}
}
200 cu meta.fara_date_cod = judet_neacoperit, NU listă goală: lipsa e a citirii noastre, nu a normelor.
{
"data": {
"an": 2026,
"norme": [
{
"judet_cod": "B",
"nr_crt": 1,
"activitate": "Boiangerie",
"zona": "AS1FP Centru A Zona 0",
"caen": "1330",
"caen_rev3": null,
"norma_lei": 53000,
"act_normativ": "Norme publicate de ANAF pentru 2026 (Bucuresti), fără număr de decizie în document",
"de_verificat": true
}
]
},
"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`.",
"paginare": {
"pagina": 1,
"per_pagina": 100,
"total": 5400,
"pagini": 54
},
"ani_acoperiti": [
2026
],
"judete_acoperite": [
"B",
"BR",
"CJ",
"CT",
"CV",
"DJ",
"GL",
"GR",
"HR",
"IL",
"IS",
"MM",
"MS",
"SB",
"SJ",
"SM",
"TL",
"TR",
"VN"
],
"zone": [
"AS1FP Centru A Zona 0",
"AS1FP Periferie C+D Zona II+III",
"AS1FP Semicentru B Zona I",
"AS2FP Centru A Zona 0",
"AS2FP Periferie C+D Zona II+III",
"AS2FP Semicentru B Zona I",
"AS3FP Centru A Zona 0",
"AS3FP Periferie C+D Zona II+III",
"AS3FP Semicentru B Zona I",
"AS4FP Centru A Zona 0",
"AS4FP Periferie C+D Zona II+III",
"AS4FP Semicentru B Zona I",
"AS5FP Centru A Zona 0",
"AS5FP Periferie C+D Zona II+III",
"AS5FP Semicentru B Zona I",
"AS6FP Centru A Zona 0",
"AS6FP Periferie C+D Zona II+III",
"AS6FP Semicentru B Zona I"
],
"nota_acoperire": "Ce perioade acoperă fiecare set şi ce e neconfirmat: /financiar/v1/fiscal/acoperire."
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă sau invalid. |
| 403 | feature_indisponibil | financiar.fiscal_referinta nu e în planul curent. |
| 404 | caen_inexistent | Codul nu există în nicio revizie CAEN. |
| 422 | validare | judet care nu e codul auto al unui judeţ, caen fără forma CAEN, ori caen_versiune fără caen. |
| 429 | cota_depasita | Cota 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": "judet care nu e codul auto al unui judeţ, caen fără forma CAEN, ori caen_versiune fără caen.",
"detalii": {
"an": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}