oneapi
Autentificare
Anaf v1 / e-Factura

Randează factura

Factura în PDF, de trimis clientului. Răspunsul e documentul, nu JSON; dacă ai nevoie de PDF cu XML-ul încorporat, vezi Factur-X din zona de interoperabilitate.

POST
https://oneapi.ro/api/anaf/v1/efactura/render

Corpul cererii

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

Factură UBL CIUS-RO

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

Factură corectată

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

Notă de credit

efactura-stornare.xml application/xml · 3,6 KB — se trimite ca atare, în corpul cererii.

Factură în euro

efactura-intracomunitara.xml application/xml · 4,2 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 facturi CIUS-RO şi întoarce PDF-ul ei — reprezentarea vizuală, umană, a documentului. Răspunsul e binar (application/pdf), nu JSON.
  • PDF-ul se generează local şi in-memory: nu se apelează niciun serviciu extern şi nimic nu se scrie pe disc. Ca la celelalte rute, e zero retenţie — XML-ul primit nu se loghează.
  • Util pentru a arăta factura unui om (client, contabil) sau pentru a o arhiva alături de XML-ul depus. XML-ul rămâne documentul oficial; PDF-ul e doar reprezentarea lui.
  • Un XML care nu se poate parsa întoarce 422 cu un corp JSON {eroare:{cod,mesaj,camp}} (nu PDF), ca eroarea să fie citibilă.

La ce folosește

  • Afişarea sau tipărirea facturii pentru client.
  • Arhivarea unui PDF lizibil alături de XML-ul CIUS-RO depus.
  • Ataşarea PDF-ului la un e-mail de notificare a facturii.

Structura răspunsului

Toate câmpurile de mai jos sunt în data.

CâmpTipDescriere
body Corpul răspunsului este PDF-ul binar (Content-Type: application/pdf), nu un envelope JSON.

Exemple de răspuns

body: @efactura.xml

POSThttps://oneapi.ro/api/anaf/v1/efactura/render
Răspunsul e un document binar, nu JSON: application/pdf, 23,5 KB în acest exemplu.

Descarcă documentul întors de acest exemplu

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422xml_invalidCorpul nu e XML parsabil. Eroarea vine ca JSON {eroare:{cod,mesaj,camp}}, nu ca PDF.
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": "Corpul nu e XML parsabil. Eroarea vine ca JSON {eroare:{cod,mesaj,camp}}, nu ca PDF.",
        "camp": null,
        "request_id": "0199c1f0-6e1a-7c3d-9b2f-4a8e5d1c7b04"
    }
}