Cum integrăm e-Factura ANAF într-un ERP custom sau într-un program vechi (ghid 2026)
Ghid practic pentru firmele care facturează dintr-un sistem propriu: ce cere ANAF, cele trei căi de integrare, pașii tehnici cu OAuth, XML CIUS-RO, trimitere și facturi primite, erorile frecvente, cât durează și cât costă.
Ghidul acesta e pentru firmele care își emit facturile dintr-un sistem propriu: un magazin online, un ERP sau un program de gestiune fără modul e-Factura, o aplicație scrisă la comandă sau chiar un Excel bine ținut. La final știi ce cere ANAF, ce căi de integrare există, ce presupune fiecare pas tehnic, ce greșeli apar cel mai des și cât durează și cât costă o integrare făcută ca lumea. Actualizat în septembrie 2026.
Ce cere ANAF, pe scurt
- Toate facturile trec prin sistemul e-Factura. Pentru relațiile între firme (B2B) din iulie 2024, pentru facturile către persoane fizice (B2C) din ianuarie 2025. Factura oficială este cea din SPV, nu PDF-ul trimis pe email.
- Formatul este XML UBL 2.1, cu regulile românești CIUS-RO. Un PDF, un Excel sau o factură dintr-un program vechi trebuie convertite în acest XML.
- Termenul de transmitere este de cel mult cinci zile de la emitere. Întârzierile se sancționează pe factură, cu amenzi între 1.000 și 10.000 de lei, în funcție de categoria firmei.
- Facturile de la furnizori ajung tot în SPV și rămân descărcabile 60 de zile. O integrare completă le aduce în sistemul tău, în loc să le descarce cineva manual.
- Cotele de TVA din 2026 sunt 21% (standard) și 11% (redusă). XML-ul le declară pe fiecare linie și le totalizează pe cote.
Cele trei căi de integrare
1. Direct la API-ul ANAF
Sistemul tău generează XML-ul, îl trimite la ANAF, urmărește starea și descarcă răspunsurile. Ai control complet, zero abonamente intermediare și un jurnal propriu cu fiecare factură. Este calea potrivită pentru un ERP, un magazin online sau o aplicație la comandă care emite deja facturile. Restul ghidului descrie această cale.
2. Prin programul de facturare pe care îl ai deja
Programe precum SmartBill, Saga sau Oblio au e-Factura inclusă. Dacă facturile pornesc de fapt din alt sistem, integrarea înseamnă un export automat din sistemul tău către programul de facturare, care le trimite mai departe. Merge bine când programul de facturare rămâne sursa contabilă și vrei un singur loc în care se văd toate facturile.
3. Printr-un API intermediar
Există servicii care fac în locul tău autorizarea la ANAF, conversia în XML și urmărirea stărilor, contra unui abonament lunar. Reduc munca de integrare la câteva apeluri simple. Costul recurent și dependența de un furnizor în plus sunt prețul acestei simplități.
Pașii integrării directe
1. Înrolarea la ANAF
Firma are nevoie de un certificat digital calificat înregistrat în SPV (al administratorului sau al contabilului, cu împuternicire pentru firmă) și de o aplicație OAuth înregistrată în portalul ANAF, din care rezultă un client ID și un secret. Cu certificatul, aplicația obține un token de acces valabil 90 de zile și un token de reîmprospătare valabil un an. Tokenul se păstrează criptat, se reînnoiește automat înainte de expirare, iar o alertă pe email anunță când reînnoirea cere din nou certificatul.
2. Generarea XML-ului
Factura se construiește ca document UBL 2.1 de tip Invoice, cu identificatorul de personalizare CIUS-RO:
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:efactura.mfinante.ro:CIUS-RO:1.0.1</cbc:CustomizationID>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
Câmpurile care dau cele mai multe bătăi de cap, în ordinea în care apar în practică:
- Identificarea firmelor: CUI-ul cu prefixul RO pentru plătitorii de TVA și fără prefix pentru restul, numele exact din Registrul Comerțului, adresa cu codul de județ (pentru București, sectorul se trece în câmpul de localitate).
- Liniile de factură: cantitate cu unitate de măsură din nomenclatorul UN/ECE (de exemplu
H87pentru bucată,C62pentru unitate), preț unitar, categoria și cota de TVA pe fiecare linie. - Totalurile de TVA pe fiecare cotă și categorie: standard, redusă, scutit, taxare inversă. Rotunjirile se fac la nivel de total, nu pe linie, altfel validarea respinge diferențele de un ban.
- Valuta: facturile în altă monedă declară și echivalentul TVA în lei, la cursul BNR din data emiterii.
- Documentele legate: stornările și facturile de corecție referă factura inițială și folosesc tipul de document potrivit.
3. Validarea înainte de trimitere
ANAF pune la dispoziție un validator public, fără autentificare, care verifică XML-ul pe schemele și regulile CIUS-RO:
POST https://webservicesp.anaf.ro/prod/FCTEL/rest/validare/FACT1
Content-Type: text/plain
[XML-ul facturii]
Pentru testarea întregului flux există mediul de test https://api.anaf.ro/test/FCTEL/rest/, cu aceeași autorizare ca
în producție. Așa se testează legal: validatorul și mediul de test acceptă orice factură, iar în producție se trimit doar facturi reale.
4. Trimiterea și urmărirea stării
POST https://api.anaf.ro/prod/FCTEL/rest/upload?standard=UBL&cif=43340189
Authorization: Bearer {token}
Content-Type: text/plain
[XML-ul facturii]
→ <header index_incarcare="5001234567" ExecutionStatus="0"/>
Indexul de încărcare se salvează pe factură. Cu el se interoghează starea până când ANAF încheie prelucrarea:
GET https://api.anaf.ro/prod/FCTEL/rest/stareMesaj?id_incarcare=5001234567
→ stare="in prelucrare" | "ok" (cu id_descarcare) | "nok" (cu id_descarcare pentru erori)
La ok, arhiva descărcată cu descarcare?id= conține XML-ul facturii și semnătura Ministerului de Finanțe;
ea este documentul oficial și se păstrează în arhiva firmei. La nok, aceeași arhivă conține lista erorilor, care se afișează
în sistemul tău, în română, lângă factură.
5. Facturile primite de la furnizori
GET https://api.anaf.ro/prod/FCTEL/rest/listaMesajeFactura?zile=7&cif=43340189
→ mesaje de tip FACTURA PRIMITA, FACTURA TRIMISA, ERORI FACTURA, MESAJ CUMPARATOR
Un job zilnic ia mesajele noi, descarcă facturile primite și le importă în gestiune sau în contabilitate, cu furnizorul, liniile și TVA-ul deja completate. Mesajele stau în SPV 60 de zile, deci descărcarea automată protejează și arhiva.
6. Jurnal, alerte și reluări
- Fiecare factură are o stare vizibilă: de trimis, trimisă, acceptată, respinsă, cu data și ora fiecărei schimbări.
- Trimiterea este idempotentă: o factură deja încărcată are indexul salvat și nu pleacă a doua oară.
- Erorile temporare de rețea sau ale API-ului se reiau automat, cu pauze crescătoare, iar cele definitive ajung la un om.
- Alertele pe email acoperă trei situații: factură respinsă, factură netrimisă la apropierea termenului legal, token pe cale să expire.
Erorile pe care le vedem cel mai des
- CUI diferit între token și factură. Tokenul aparține unui certificat cu drepturi pe anumite firme; factura se trimite cu
cif-ul firmei emitente, exact cel din SPV. - Adrese incomplete. Codul de județ lipsă sau sectorul Bucureștiului trecut greșit sunt cele mai frecvente respingeri la validare.
- Rotunjiri de un ban. Totalurile calculate pe linie și însumate diferă de totalul pe cotă; regula corectă este calculul pe total.
- Unități de măsură inventate. „buc” sau „ore” în loc de codurile din nomenclator.
- Trimitere dublă. Un buton apăsat de două ori fără index salvat produce două facturi identice în SPV, iar corectarea cere stornare.
- Token expirat în tăcere. După 90 de zile, trimiterile eșuează fără ca cineva să observe; de aceea există alerta de expirare.
Ce înseamnă pentru un program vechi, fără API
Multe firme facturează dintr-un program scris cu ani în urmă, care merge perfect, dar nu știe de ANAF. Integrarea se face pe lângă el, din ce oferă programul:
- Export (CSV, XML, DBF): un job citește fișierele exportate la interval fix și construiește XML-urile.
- Baza de date accesibilă (Access, SQL Server, MySQL, Firebird): integrarea citește direct facturile emise, cu drepturi doar de citire.
- Doar ecran: ca ultimă variantă, automatizarea de interfață, care apasă în locul unui om. Merge, dar cere întreținere la fiecare schimbare a programului.
Din partea firmei sunt necesare: seriile și numerotarea facturilor, datele complete ale clienților (CUI, adresă cu județ), cotele de TVA pe fiecare produs sau serviciu și unitățile de măsură. Curățarea acestor date este, de obicei, jumătate din proiect.
Cât durează și cât costă
Pe piața românească, o integrare pornește de la 2.000–5.000 de lei pentru un sistem cu export sau API documentat și urcă spre 10.000 de lei și peste pentru programe vechi, fără documentație, sau pentru fluxuri cu mai multe firme și sincronizare în ambele sensuri. Pachetul nostru e-Factura conectată pornește de la 2.500 de lei și e gata în 10 zile lucrătoare: conectarea sursei de facturi, trimiterea automată, citirea răspunsurilor, facturile de furnizori din SPV, alerte pe email, o documentație scurtă și o oră de instruire. Dacă sursa cere lucru în plus, spunem prețul înainte să începem.
Lista de verificare înainte de a începe
- Cine deține certificatul digital și pentru ce firme are drepturi în SPV.
- De unde pornesc facturile azi: program, magazin, Excel, mai multe surse.
- Ce poate scoate sistemul: API, export, bază de date, doar ecran.
- Ce cote de TVA și ce situații speciale apar: scutiri, taxare inversă, valută, avansuri, stornări.
- Câte facturi pe lună se emit și câte se primesc.
- Cine trebuie anunțat la o respingere și cine corectează factura.
- Unde se arhivează XML-urile semnate și pentru cât timp.
- Cum se face testarea: validator, mediul de test, apoi prima factură reală, urmărită împreună.
Întrebări frecvente
Trebuie certificat digital pentru fiecare firmă?
Certificatul este al unei persoane, care are drepturi în SPV pentru una sau mai multe firme. Un contabil cu împuternicire poate autoriza aplicația pentru toți clienții lui, iar aplicația trimite pentru fiecare firmă cu propriul CUI.
Pot testa fără să trimit facturi reale?
Da. Validatorul public verifică XML-ul, iar mediul de test al ANAF acceptă întregul flux, cu autorizare reală. În producție se trimit doar facturi emise cu adevărat.
Ce fac cu o factură respinsă?
Se corectează cauza în sistemul tău și se retrimite aceeași factură; respingerea la validare înseamnă că factura nu a ajuns în SPV. O factură acceptată cu date greșite se corectează prin stornare și o factură nouă.
Merge și din Excel?
Da, dacă fișierul are coloane stabile: date client, serie și număr, linii cu cantitate, preț, cotă de TVA și unitate. Un job citește fișierul, construiește XML-ul și îl trimite. E o soluție bună de tranziție până la un sistem de facturare.
Cine păstrează facturile?
Firma ta. Arhiva semnată descărcată de la ANAF se păstrează în sistemul tău, cu perioada de arhivare cerută de legislația contabilă. Copia din SPV este disponibilă doar 60 de zile.