8 min citire · Actualizat 17 aprilie 2026
Cum emiți o factură ANAF e-Factura — Ghid complet 2026
Tot ce trebuie să știi pentru a respecta obligația B2B și B2G de a emite facturi electronice prin sistemul ANAF e-Factura.
1. Pregătire: certificat și autentificare
Pentru a folosi ANAF e-Factura ai nevoie de:
- Un certificat digital calificat (de la CertSign, DigiSign, Trans Sped etc.)
- Cont la SPV (Spațiul Privat Virtual ANAF)
- Autentificare OAuth 2.0 din aplicația ta cu token de durată 90 zile
2. Generare XML UBL 2.1
Factura ANAF e un fișier XML conform specificației Universal Business Language (UBL) 2.1. Structura include:
- Date emitent (CUI, denumire, adresă)
- Date beneficiar (CUI sau CNP, denumire)
- Linii factură (descriere, cantitate, preț unitar, TVA)
- Sume totale și defalcate pe cote TVA
- Mențiuni speciale (taxare inversă, neimpozabil etc.)
3. Validare CUI
Înainte de submit, ANAF validează CUI-ul beneficiarului. Financium face acest pas automat prin API-ul anaf.ro/api/PlatitorTvaRest. Dacă CUI-ul e invalid sau firma e inactivă, factura e respinsă.
4. Submit la ANAF
Submit-ul se face printr-un POST către api.anaf.ro/prod/FCTEL/rest/upload. Headers necesare: Authorization: Bearer <token> și Content-Type: application/xml.
ANAF returnează un indexUpload (ID-ul submit-ului) pe care îl folosești pentru polling status.
5. Polling status
Pollingul se face periodic (la 30s-5min) către api.anaf.ro/prod/FCTEL/rest/stareMesaj. Statusurile posibile:
- nok — eroare validare
- ok — factură acceptată; poți descărca răspunsul semnat
- in prelucrare — încă se procesează
- XML cu erori nepreluat de sistem — XML invalid
6. Idempotency și retry
Best practice: trimite cu un idempotency key propriu (UUID), salvează-l în DB și verifică-l înainte de retry. Astfel eviți duplicate la nivelul ANAF.
Strategia recomandată: 5 retries cu exponential backoff (1s, 2s, 4s, 8s, 16s). După 5 eșecuri, mută factura în dead-letter queue și notifică admin.
7. Descărcare răspuns ANAF
După acceptare, descarcă XML-ul semnat de ANAF de la api.anaf.ro/prod/FCTEL/rest/descarcare. Acest XML reprezintă dovada legală a transmiterii. Salvează-l permanent (S3, Vercel Blob, etc.) — e necesar pentru audit fiscal.
Cum face Financium toate astea pentru tine
În loc să integrezi de la zero ANAF e-Factura (validări, OAuth, XML, polling, retry, idempotency, storage), Financium oferă un wrapper testat care:
- Generează XML UBL 2.1 automat din factura din UI
- Re-autentifică OAuth înainte de expirare token
- Trimite cu idempotency keys și 5 retries cu backoff
- Polling status în background (cron job)
- Descărcare automată a răspunsului semnat
- Dashboard cu istoric, erori, bulk submit pentru facturi vechi
Întrebări frecvente
E obligatorie folosirea ANAF e-Factura?
Da, pentru tranzacțiile B2B din 2024 și pentru relația cu instituțiile publice (B2G). Nedepunerea atrage sancțiuni.
Ce e XML UBL 2.1?
Universal Business Language 2.1 — standardul XML acceptat de ANAF pentru factura electronică. Conține structura facturii (emitent, beneficiar, linii, sume, TVA).
Cât timp trebuie să mă autentific cu certificat?
Token-ul OAuth 2.0 ANAF e valabil 90 zile. Financium re-autentifică automat înainte de expirare.
Ce fac dacă ANAF respinge factura?
Verifică mesajele din răspuns (lipsă cod fiscal valid, sume incorecte, etc.), corectează factura și retrimite. Financium loghează toate erorile cu detalii pentru debug.
Începe cu Financium
ANAF e-Factura plug-and-play, integrat cu facturarea ta. Plan Explorer gratuit.
Încearcă gratuit