Anaf v1 / e-Factura
Nomenclatoare
Codurile publice de care ai nevoie ca să construieşti o factură valabilă: unităţi de măsură, categorii de TVA, mijloace de plată, subdiviziuni. Exact listele pe care le verifică validarea.
GET
https://oneapi.ro/api/anaf/v1/efactura/codes/{nomenclator}
Parametri de cale
NumeTipDescriereExemplu
nomenclatorobligatoriu
string
Numele nomenclatorului de coduri cerut (unităţi de măsură, ţări, tipuri de operaţiune…).
Parametri de interogare
Ruta nu acceptă parametri de interogare.
Cum se comportă
- Întoarce valorile unui nomenclator public folosit la construirea unei facturi: unităţi de măsură (
units), categorii de TVA (vat_categories), modalităţi de plată (payment_means), judeţe (counties). Nomenclatorul cerut vine în path. - Este o rută de discovery, deschisă — fără feature gate — tocmai ca să poţi popula liste de selecţie sau valida coduri local înainte de a chema
build. Codurile sunt cele oficiale CIUS-RO / EN 16931. - Un nomenclator necunoscut întoarce
404cucod: nomenclator_necunoscut, nu o listă goală — ca o greşeală de nume să fie vizibilă, nu tăcută.
La ce folosește
- Popularea unui dropdown de unităţi de măsură sau modalităţi de plată în UI.
- Validarea locală a unui cod (ex. categorie TVA) înainte de a-l trimite la
build. - Maparea codurilor din răspunsuri la denumiri lizibile, fetchate o singură dată.
Structura răspunsului
CâmpTipDescriere
data.nomenclator
string
Numele nomenclatorului cerut, ecou al parametrului din path.
data.valori
object
Lista de coduri, fiecare cu codul şi denumirea lizibilă.
meta.generat_la
string
Momentul la care s-a construit răspunsul (ISO 8601).
Exemple de răspuns
GEThttps://oneapi.ro/api/anaf/v1/efactura/codes/units
{
"data": {
"nomenclator": "units",
"valori": {
"buc": "H87",
"bucata": "H87",
"bucati": "H87",
"pcs": "H87",
"piece": "H87",
"unitate": "C62",
"unit": "C62",
"ub": "C62",
"serviciu": "C62",
"abonament": "C62",
"lucrare": "C62",
"kg": "KGM",
"kilogram": "KGM",
"g": "GRM",
"gram": "GRM",
"t": "TNE",
"tona": "TNE",
"l": "LTR",
"litru": "LTR",
"litri": "LTR",
"ml": "MLT",
"m": "MTR",
"metru": "MTR",
"ml liniar": "MTR",
"mp": "MTK",
"m2": "MTK",
"metru patrat": "MTK",
"mc": "MTQ",
"m3": "MTQ",
"metru cub": "MTQ",
"km": "KMT",
"ora": "HUR",
"h": "HUR",
"ore": "HUR",
"zi": "DAY",
"zile": "DAY",
"day": "DAY",
"luna": "MON",
"month": "MON",
"an": "ANN",
"ani": "ANN",
"year": "ANN",
"set": "SET",
"pereche": "PR",
"kwh": "KWH"
}
},
"meta": {
"generat_la": "2026-10-06T23: 59: 42+03: 00"
}
}
GEThttps://oneapi.ro/api/anaf/v1/efactura/codes/vat_categories
{
"data": {
"nomenclator": "vat_categories",
"valori": {
"S": {
"name": "Cotă standard sau redusă",
"zero": false
},
"AE": {
"name": "Taxare inversă",
"zero": true
},
"E": {
"name": "Scutit fără drept de deducere",
"zero": true
},
"K": {
"name": "Livrare intracomunitară",
"zero": true
},
"G": {
"name": "Export, scutit cu drept de deducere",
"zero": true
},
"O": {
"name": "În afara sferei TVA",
"zero": true
},
"Z": {
"name": "Cotă zero",
"zero": true
}
}
},
"meta": {
"generat_la": "2026-10-06T23: 59: 42+03: 00"
}
}
GEThttps://oneapi.ro/api/anaf/v1/efactura/codes/payment_means
{
"data": {
"nomenclator": "payment_means",
"valori": {
"1": "Nespecificat",
"10": "Numerar",
"20": "Cec",
"30": "Virament bancar",
"42": "Plată în cont bancar",
"48": "Card bancar",
"49": "Debit direct",
"58": "Transfer SEPA",
"97": "Compensare"
}
},
"meta": {
"generat_la": "2026-10-06T23: 59: 42+03: 00"
}
}
GEThttps://oneapi.ro/api/anaf/v1/efactura/codes/counties
{
"data": {
"nomenclator": "counties",
"valori": {
"ab": "RO-AB",
"alba": "RO-AB",
"ar": "RO-AR",
"arad": "RO-AR",
"ag": "RO-AG",
"arges": "RO-AG",
"bc": "RO-BC",
"bacau": "RO-BC",
"bh": "RO-BH",
"bihor": "RO-BH",
"bn": "RO-BN",
"bistrita-nasaud": "RO-BN",
"bistrita nasaud": "RO-BN",
"bt": "RO-BT",
"botosani": "RO-BT",
"bv": "RO-BV",
"brasov": "RO-BV",
"br": "RO-BR",
"braila": "RO-BR",
"bz": "RO-BZ",
"buzau": "RO-BZ",
"cs": "RO-CS",
"caras-severin": "RO-CS",
"caras severin": "RO-CS",
"cl": "RO-CL",
"calarasi": "RO-CL",
"cj": "RO-CJ",
"cluj": "RO-CJ",
"ct": "RO-CT",
"constanta": "RO-CT",
"cv": "RO-CV",
"covasna": "RO-CV",
"db": "RO-DB",
"dambovita": "RO-DB",
"dj": "RO-DJ",
"dolj": "RO-DJ",
"gl": "RO-GL",
"galati": "RO-GL",
"gr": "RO-GR",
"giurgiu": "RO-GR",
"gj": "RO-GJ",
"gorj": "RO-GJ",
"hr": "RO-HR",
"harghita": "RO-HR",
"hd": "RO-HD",
"hunedoara": "RO-HD",
"il": "RO-IL",
"ialomita": "RO-IL",
"is": "RO-IS",
"iasi": "RO-IS",
"if": "RO-IF",
"ilfov": "RO-IF",
"mm": "RO-MM",
"maramures": "RO-MM",
"mh": "RO-MH",
"mehedinti": "RO-MH",
"ms": "RO-MS",
"mures": "RO-MS",
"nt": "RO-NT",
"neamt": "RO-NT",
"ot": "RO-OT",
"olt": "RO-OT",
"ph": "RO-PH",
"prahova": "RO-PH",
"sm": "RO-SM",
"satu mare": "RO-SM",
"satu-mare": "RO-SM",
"sj": "RO-SJ",
"salaj": "RO-SJ",
"sb": "RO-SB",
"sibiu": "RO-SB",
"sv": "RO-SV",
"suceava": "RO-SV",
"tr": "RO-TR",
"teleorman": "RO-TR",
"tm": "RO-TM",
"timis": "RO-TM",
"tl": "RO-TL",
"tulcea": "RO-TL",
"vs": "RO-VS",
"vaslui": "RO-VS",
"vl": "RO-VL",
"valcea": "RO-VL",
"vn": "RO-VN",
"vrancea": "RO-VN",
"b": "RO-B",
"bucuresti": "RO-B",
"municipiul bucuresti": "RO-B"
}
},
"meta": {
"generat_la": "2026-10-06T23: 59: 42+03: 00"
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | modul_interzis | Tokenul nu are acces la modulul rutei. |
| 404 | negasit | nomenclator_necunoscut: numele din path nu corespunde niciunui nomenclator. |
| 429 | cota_depasita | Cota lunară a planului a fost depăşită (vezi Retry-After). |
Erorile modulului Anaf au acelaşi plic ca restul platformei, cu două câmpuri în plus: {eroare: {cod, mesaj, camp, request_id}}. eroare.cod e stabil şi e cel după care ramifici în cod; la validare (422) codul e specific cazului: xml_invalid, xml_nu_e_factura, unitate_necunoscuta, luna_invalida ş.a. camp arată câmpul vinovat, când se poate identifica.
{
"eroare": {
"cod": "negasit",
"mesaj": "nomenclator_necunoscut: numele din path nu corespunde niciunui nomenclator.",
"camp": "nomenclator",
"request_id": "0199c1f0-6e1a-7c3d-9b2f-4a8e5d1c7b04"
}
}