oneapi
Autentificare
Anaf v1 / Declarații D

Citește declarația

Drumul invers al construirii: dintr-o declaraţie depusă scoate datele de business în JSON, cu aceleaşi chei pe care le-ai trimite la build.

POST
https://oneapi.ro/api/anaf/v1/declaratii/{form}/parse

Parametri de cale

NumeTipDescriereExemplu
formobligatoriu string Codul formularului (D100, D112, D300, D394…). Lista completă e la /anaf/v1/declaratii/forms.

Corpul cererii

Corpul cererii e documentul întreg, trimis brut (Content-Type: application/xml) — nu un obiect cu câmpuri.

D394 depus

d394.xml application/xml · 1,3 KB — se trimite ca atare, în corpul cererii.

D100 depus

d100.xml application/xml · 0,4 KB — se trimite ca atare, în corpul cererii.

D390 depus

d390.xml application/xml · 0,5 KB — se trimite ca atare, în corpul cererii.

D311 depus

d311.xml application/xml · 0,4 KB — se trimite ca atare, în corpul cererii.

Parametri de interogare

Ruta nu acceptă parametri de interogare.

Cum se comportă

  • Documentul se poate trimite şi ca fişier: multipart/form-data cu câmpul fisier (curl -F fisier=@document.xml), în locul corpului brut. Conţinutul fişierului devine corpul cererii, deci rezultatul e identic; opţiunile rămân în query string, iar alt câmp de formular lângă fisier dă 422 camp_necunoscut.
  • Primește XML-ul unei declarații „D" și întoarce JSON-ul de business — inversul lui build.
  • Zero retenție: parsarea e stateless, in-memory.

La ce folosește

  • Citirea unei declarații primite/generate, fără a scrie parser de XML.

Structura răspunsului

CâmpTipDescriere
data object JSON-ul de business — aceeași formă pe care o acceptă build.
data.luna integer Luna la care se referă datele.
data.an integer Anul la care se referă datele.
data.tip_D394 string
data.op_efectuate boolean
data.declarant.cui string Codul de identificare fiscală, fără prefixul RO.
data.declarant.caen string Codul CAEN al activităţii, în revizia seriei.
data.declarant.den string
data.declarant.adresa string Adresa, în forma publicată de sursă.
data.declarant.telefon string
data.reprezentant.den string
data.reprezentant.functie string
data.reprezentant.adresa string Adresa, în forma publicată de sursă.
data.intocmit.den string
data.intocmit.cif string
data.intocmit.calitate string
data.informatii.nrCui1 string
data.informatii.nrCui2 string
data.informatii.nrCui3 string
data.informatii.nrCui4 string
data.informatii.nr_BF_i1 string
data.informatii.incasari_i1 string
data.informatii.incasari_i2 string
data.informatii.nrFacturi_terti string
data.informatii.nrFacturi_benef string
data.informatii.nrFacturi string
data.informatii.nrFacturiL_PF string
data.informatii.nrFacturiLS_PF string
data.informatii.val_LS_PF string
data.informatii.tvaDedAI24 string
data.informatii.tvaDedAI21 string
data.informatii.tvaDedAI11 string
data.informatii.tvaDedAI20 string
data.informatii.tvaDedAI19 string
data.informatii.tvaDedAI9 string
data.informatii.tvaDedAI5 string
data.informatii.solicit string
data.rezumat1[].tip_partener string
data.rezumat1[].cota string
data.rezumat1[].facturiL string
data.rezumat1[].bazaL string
data.rezumat1[].tvaL string
data.rezumat2[].cota string
data.rezumat2[].bazaFSLcod string
data.rezumat2[].TVAFSLcod string
data.rezumat2[].bazaFSL string
data.rezumat2[].TVAFSL string
data.rezumat2[].bazaFSA string
data.rezumat2[].TVAFSA string
data.rezumat2[].bazaFSAI string
data.rezumat2[].TVAFSAI string
data.rezumat2[].bazaBFAI string
data.rezumat2[].TVABFAI string
data.rezumat2[].nrFacturiL string
data.rezumat2[].bazaL string
data.rezumat2[].tvaL string
data.rezumat2[].nrFacturiA string
data.rezumat2[].bazaA string
data.rezumat2[].tvaA string
data.rezumat2[].nrFacturiAI string
data.rezumat2[].bazaAI string
data.rezumat2[].tvaAI string
data.rezumat2[].bazaL_PF string
data.rezumat2[].tvaL_PF string
data.parteneri[].tip string
data.parteneri[].tip_partener integer
data.parteneri[].cota integer
data.parteneri[].cui string Codul de identificare fiscală, fără prefixul RO.
data.parteneri[].den string
data.parteneri[].nr_facturi integer
data.parteneri[].baza integer
data.parteneri[].tva integer
meta.generat_la string Momentul la care s-a construit răspunsul (ISO 8601).

Exemple de răspuns

body: @d394.xml

POSThttps://oneapi.ro/api/anaf/v1/declaratii/D394/parse
{
    "data": {
        "luna": 9,
        "an": 2026,
        "tip_D394": "L",
        "op_efectuate": true,
        "declarant": {
            "cui": "990000005",
            "caen": "6201",
            "den": "Exemplu Furnizor SRL",
            "adresa": "Cluj-Napoca, Str. Memorandumului 28",
            "telefon": "0264000000"
        },
        "reprezentant": {
            "den": "Exemplu Reprezentant",
            "functie": "Administrator",
            "adresa": "Cluj-Napoca, Str. Memorandumului 28"
        },
        "intocmit": {
            "den": "Exemplu Contabil",
            "cif": "990000005",
            "calitate": "administrator"
        },
        "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"
        },
        "rezumat1": [
            {
                "tip_partener": "1",
                "cota": "21",
                "facturiL": "1",
                "bazaL": "700",
                "tvaL": "147"
            }
        ],
        "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"
            }
        ],
        "parteneri": [
            {
                "tip": "L",
                "tip_partener": 1,
                "cota": 21,
                "cui": "990000072",
                "den": "Exemplu Client SRL",
                "nr_facturi": 1,
                "baza": 700,
                "tva": 147
            }
        ]
    },
    "meta": {
        "generat_la": "2026-10-06T23: 59: 41+03: 00"
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
404negasitFormular nesuportat.
422xml_invalidXML care nu se poate parsa sau nu e formularul așteptat.
429cota_depasitaCota 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": "XML care nu se poate parsa sau nu e formularul așteptat.",
        "camp": "form",
        "request_id": "0199c1f0-6e1a-7c3d-9b2f-4a8e5d1c7b04"
    }
}