Construiește declarația
Trimiţi datele de business în JSON şi primeşti XML-ul formularului, validat pe schema oficială înainte de a-ţi fi dat. Dacă nu trece, primeşti erorile schemei, nu un fişier pe care ANAF l-ar refuza.
Parametri de cale
D100, D112, D300, D394…). Lista completă e la /anaf/v1/declaratii/forms.
Corpul cererii
Se trimite ca JSON, în corpul cererii (Content-Type: application/json) — nu în şirul de interogare.
{
"luna": 9,
"an": 2026,
"tip_D394": "L",
"declarant": {
"cui": "990000005",
"caen": "6201",
"telefon": "0264000000",
"adresa": "Cluj-Napoca, Str. Memorandumului 28",
"den": "Exemplu Furnizor SRL"
},
"parteneri": [
{
"tip": "L",
"tip_partener": 1,
"cota": 21,
"cui": "990000072",
"den": "Exemplu Client SRL",
"nr_facturi": 1,
"baza": 700,
"tva": 147
}
],
"reprezentant": {
"den": "Exemplu Reprezentant",
"functie": "Administrator",
"adresa": "Cluj-Napoca, Str. Memorandumului 28"
},
"intocmit": {
"den": "Exemplu Contabil",
"cif": "990000005"
}
}
{
"luna": 9,
"an": 2026,
"tip_decont": "L",
"declarant": {
"cui": "990000005",
"den": "Exemplu Furnizor SRL",
"nume": "Exemplu",
"prenume": "Ion",
"functie": "Administrator",
"adresa": "Cluj-Napoca, Str. Memorandumului 28",
"banca": "Banca Exemplu",
"cont": "RO49AAAA1B31007593840000",
"caen": "6201"
},
"randuri": {
"R9_1": 1700,
"R9_2": 357,
"R64_1": 357
}
}
{
"luna": 9,
"an": 2026,
"declarant": {
"cui": "990000005",
"den": "Exemplu Furnizor SRL",
"nume": "Exemplu",
"prenume": "Ion",
"functie": "Administrator",
"adresa": "Cluj-Napoca, Str. Memorandumului 28"
},
"obligatii": [
{
"cod_oblig": "102",
"cod_bugetar": "20100101",
"scadenta": "2026-10-25",
"nr_evid": "1",
"suma_dat": 1200,
"suma_plata": 1200
}
]
}
{
"luna": 9,
"an": 2026,
"declarant": {
"cui": "990000005",
"den": "Exemplu Furnizor SRL",
"nume": "Exemplu",
"prenume": "Ion",
"functie": "Administrator",
"adresa": "Cluj-Napoca, Str. Memorandumului 28"
},
"operatiuni": [
{
"tip": "L",
"tara": "DE",
"cod": "999000009",
"denumire": "Exemplu Client GmbH",
"baza": 15000
}
]
}
{
"luna": 9,
"an": 2026,
"temei": "1",
"total_plata": 850,
"declarant": {
"cui": "990000005",
"den": "Exemplu Furnizor SRL",
"nume": "Exemplu",
"prenume": "Ion",
"functie": "Administrator",
"adresa": "Cluj-Napoca, Str. Memorandumului 28"
}
}
Parametri de interogare
local (implicit, XSD oficial) sau none.
ex. localex. anafex. none
true (implicit) întoarce 422 fără XML dacă validarea eșuează; false întoarce XML-ul oricum.
ex. false
xml (implicit) sau base64.
ex. base64
Cum se comportă
- Primește un JSON de business și întoarce declarația fiscală ca XML în formatul oficial ANAF al formularului din cale ({form}, ex.
D390). Totalurile se calculează automat din rânduri. - Formularele suportate se văd la
GET /anaf/v1/declaratii/forms— sunt 13: D100, D101, D112, D205, D212, D230, D300, D301, D311, D390, D394, D700, D710. Câmpurile fiecăruia (din XSD-ul oficial) se văd laGET /anaf/v1/declaratii/{form}/campuri. - Un câmp necunoscut în corp e respins, nu ignorat. Dacă trimiți
emaillîn loc demail, primești422 camp_necunoscutcu lista celor acceptate la acel nivel — altfel ai fi primit o declarație validă, dar incompletă, fără să afli de ce. validatealege validarea:local(implicit) rulează XSD-ul oficial al formularului;nonedoar generează.- Zero retenție și fără submitere la SPV — livrăm XML-ul gata de depus; depunerea o face contribuabilul.
La ce folosește
- Generarea XML-ului D390 din evidența operațiunilor intracomunitare, înainte de depunere.
Structura răspunsului
null la validate=none.
strict=false (la strict=true vin în plicul de eroare).
Exemple de răspuns
body: {"luna": 9, "an": 2026, "tip_D394": "L", "declarant": {"cui": "990000005", "caen": "6201", "telefon": "0264000000", "adresa": "Cluj-Napoca, Str. Memorandumului 28", "den": "Exemplu Furnizor SRL"}, "parteneri": [{"tip": "L", "tip_partener": 1, "cota": 21, "cui": "990000072", "den": "Exemplu Client SRL", "nr_facturi": 1, "baza": 700, "tva": 147}], "reprezentant": {"den": "Exemplu Reprezentant", "functie": "Administrator", "adresa": "Cluj-Napoca, Str. Memorandumului 28"}, "intocmit": {"den": "Exemplu Contabil", "cif": "990000005"}}
{
"data": {
"valid": true,
"formular": "D394",
"schema": "d394_v5.xsd",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<declaratie394 xmlns=\"mfp:anaf:dgti:d394:declaratie:v5\" luna=\"9\" an=\"2026\" tip_D394=\"L\" sistemTVA=\"0\" op_efectuate=\"1\" cui=\"990000005\" caen=\"6201\" den=\"Exemplu Furnizor SRL\" adresa=\"Cluj-Napoca, Str. Memorandumului 28\" telefon=\"0264000000\" totalPlata_A=\"701\" denR=\"Exemplu Reprezentant\" functie_reprez=\"Administrator\" adresaR=\"Cluj-Napoca, Str. Memorandumului 28\" tip_intocmit=\"0\" den_intocmit=\"Exemplu Contabil\" cif_intocmit=\"990000005\" calitate_intocmit=\"administrator\" optiune=\"0\" prsAfiliat=\"0\">\n <informatii nrCui1=\"1\" nrCui2=\"0\" nrCui3=\"0\" nrCui4=\"0\" nr_BF_i1=\"0\" incasari_i1=\"0\" incasari_i2=\"0\" nrFacturi_terti=\"0\" nrFacturi_benef=\"0\" nrFacturi=\"1\" nrFacturiL_PF=\"0\" nrFacturiLS_PF=\"0\" val_LS_PF=\"0\" tvaDedAI24=\"0\" tvaDedAI21=\"0\" tvaDedAI11=\"0\" tvaDedAI20=\"0\" tvaDedAI19=\"0\" tvaDedAI9=\"0\" tvaDedAI5=\"0\" solicit=\"0\"/>\n <rezumat1 tip_partener=\"1\" cota=\"21\" facturiL=\"1\" bazaL=\"700\" tvaL=\"147\"/>\n <rezumat2 cota=\"21\" bazaFSLcod=\"0\" TVAFSLcod=\"0\" bazaFSL=\"0\" TVAFSL=\"0\" bazaFSA=\"0\" TVAFSA=\"0\" bazaFSAI=\"0\" TVAFSAI=\"0\" bazaBFAI=\"0\" TVABFAI=\"0\" nrFacturiL=\"1\" bazaL=\"700\" tvaL=\"147\" nrFacturiA=\"0\" bazaA=\"0\" tvaA=\"0\" nrFacturiAI=\"0\" bazaAI=\"0\" tvaAI=\"0\" bazaL_PF=\"0\" tvaL_PF=\"0\"/>\n <op1 tip=\"L\" tip_partener=\"1\" cota=\"21\" cuiP=\"990000072\" denP=\"Exemplu Client SRL\" nrFact=\"1\" baza=\"700\" tva=\"147\"/>\n</declaratie394>\n",
"meta": {
"namespace": "mfp:anaf:dgti:d394:declaratie:v5",
"op_efectuate": 1,
"nr_parteneri": 1,
"nr_rezumat1": 1,
"nr_rezumat2": 1,
"total_plata_A": 701
},
"errors": [],
"warnings": []
},
"meta": {
"generat_la": "2026-10-06T23: 59: 41+03: 00"
}
}
body: {"luna": 9, "an": 2026, "tip_decont": "L", "declarant": {"cui": "990000005", "den": "Exemplu Furnizor SRL", "nume": "Exemplu", "prenume": "Ion", "functie": "Administrator", "adresa": "Cluj-Napoca, Str. Memorandumului 28", "banca": "Banca Exemplu", "cont": "RO49AAAA1B31007593840000", "caen": "6201"}, "randuri": {"R9_1": 1700, "R9_2": 357, "R64_1": 357}}
{
"data": {
"valid": true,
"formular": "D300",
"schema": "d300_v12.xsd",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<declaratie300 xmlns=\"mfp:anaf:dgti:d300:declaratie:v12\" luna=\"9\" an=\"2026\" depusReprezentant=\"0\" bifa_interne=\"0\" temei=\"0\" nume_declar=\"Exemplu\" prenume_declar=\"Ion\" functie_declar=\"Administrator\" cui=\"990000005\" den=\"Exemplu Furnizor SRL\" adresa=\"Cluj-Napoca, Str. Memorandumului 28\" banca=\"Banca Exemplu\" cont=\"RO49AAAA1B31007593840000\" caen=\"6201\" tip_decont=\"L\" pro_rata=\"0\" bifa_cereale=\"N\" bifa_mob=\"N\" bifa_disp=\"N\" bifa_cons=\"N\" solicit_ramb=\"N\" nr_evid=\"0\" totalPlata_A=\"357\" R9_1=\"1700\" R9_2=\"357\" R64_1=\"357\"/>\n",
"meta": {
"namespace": "mfp:anaf:dgti:d300:declaratie:v12",
"nr_randuri": 3,
"total_plata": 357
},
"errors": [],
"warnings": []
},
"meta": {
"generat_la": "2026-10-06T23: 59: 41+03: 00"
}
}
body: {"luna": 9, "an": 2026, "declarant": {"cui": "990000005", "den": "Exemplu Furnizor SRL", "nume": "Exemplu", "prenume": "Ion", "functie": "Administrator", "adresa": "Cluj-Napoca, Str. Memorandumului 28"}, "obligatii": [{"cod_oblig": "102", "cod_bugetar": "20100101", "scadenta": "2026-10-25", "nr_evid": "1", "suma_dat": 1200, "suma_plata": 1200}]}
{
"data": {
"valid": true,
"formular": "D100",
"schema": "d100_v2.xsd",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<declaratie100 xmlns=\"mfp:anaf:dgti:d100:declaratie:v2\" luna=\"9\" an=\"2026\" d_anulare=\"0\" nume_declar=\"Exemplu\" prenume_declar=\"Ion\" functie_declar=\"Administrator\" cui=\"990000005\" den=\"Exemplu Furnizor SRL\" adresa=\"Cluj-Napoca, Str. Memorandumului 28\" totalPlata_A=\"2400\">\n <obligatie cod_oblig=\"102\" cod_bugetar=\"20100101\" scadenta=\"25.10.2026\" nr_evid=\"1\" suma_dat=\"1200\" suma_plata=\"1200\"/>\n</declaratie100>\n",
"meta": {
"namespace": "mfp:anaf:dgti:d100:declaratie:v2",
"nr_obligatii": 1,
"total_plata": 2400
},
"errors": [],
"warnings": []
},
"meta": {
"generat_la": "2026-10-06T23: 59: 41+03: 00"
}
}
body: {"luna": 9, "an": 2026, "declarant": {"cui": "990000005", "den": "Exemplu Furnizor SRL", "nume": "Exemplu", "prenume": "Ion", "functie": "Administrator", "adresa": "Cluj-Napoca, Str. Memorandumului 28"}, "operatiuni": [{"tip": "L", "tara": "DE", "cod": "999000009", "denumire": "Exemplu Client GmbH", "baza": 15000}]}
{
"data": {
"valid": true,
"formular": "D390",
"schema": "d390_v3.xsd",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<declaratie390 xmlns=\"mfp:anaf:dgti:d390:declaratie:v3\" luna=\"9\" an=\"2026\" d_rec=\"0\" nume_declar=\"Exemplu\" prenume_declar=\"Ion\" functie_declar=\"Administrator\" cui=\"990000005\" den=\"Exemplu Furnizor SRL\" adresa=\"Cluj-Napoca, Str. Memorandumului 28\" totalPlata_A=\"0\">\n <rezumat nr_pag=\"1\" nrOPI=\"1\" bazaL=\"15000\" bazaT=\"0\" bazaA=\"0\" bazaP=\"0\" bazaS=\"0\" bazaR=\"0\" total_baza=\"15000\"/>\n <operatie tip=\"L\" tara=\"DE\" codO=\"999000009\" denO=\"Exemplu Client GmbH\" baza=\"15000\"/>\n</declaratie390>\n",
"meta": {
"namespace": "mfp:anaf:dgti:d390:declaratie:v3",
"total_baza": 15000,
"nr_operatiuni": 1,
"baze": {
"bazaL": 15000,
"bazaT": 0,
"bazaA": 0,
"bazaP": 0,
"bazaS": 0,
"bazaR": 0
}
},
"errors": [],
"warnings": []
},
"meta": {
"generat_la": "2026-10-06T23: 59: 41+03: 00"
}
}
body: {"luna": 9, "an": 2026, "temei": "1", "total_plata": 850, "declarant": {"cui": "990000005", "den": "Exemplu Furnizor SRL", "nume": "Exemplu", "prenume": "Ion", "functie": "Administrator", "adresa": "Cluj-Napoca, Str. Memorandumului 28"}}
{
"data": {
"valid": true,
"formular": "D311",
"schema": "d311_v1.xsd",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<declaratie311 xmlns=\"mfp:anaf:dgti:d311:declaratie:v1\" luna=\"9\" an=\"2026\" d_rec=\"0\" d_anulare=\"0\" temei=\"1\" nume_declar=\"Exemplu\" prenume_declar=\"Ion\" functie_declar=\"Administrator\" cui=\"990000005\" den=\"Exemplu Furnizor SRL\" adresa=\"Cluj-Napoca, Str. Memorandumului 28\" Data_A=\"06.10.2026\" d_anul1=\"0\" d_anul2=\"0\" totalPlata_A=\"850\"/>\n",
"meta": {
"namespace": "mfp:anaf:dgti:d311:declaratie:v1",
"nr_obligatii": 0,
"total_plata": 850
},
"errors": [],
"warnings": []
},
"meta": {
"generat_la": "2026-10-06T23: 59: 41+03: 00"
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 404 | negasit | Formular nesuportat. |
| 422 | xml_invalid | JSON invalid sau — la strict=true — declarație care nu trece validarea. |
| 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": "xml_invalid",
"mesaj": "JSON invalid sau — la strict=true — declarație care nu trece validarea.",
"camp": "form",
"request_id": "0199c1f0-6e1a-7c3d-9b2f-4a8e5d1c7b04"
}
}