O factură pleacă din softul de facturare cu totalurile afișate corect pe ecran, dar ANAF o respinge la validare cu codul BR-CO-10 sau BR-CO-15. Motivul aproape întotdeauna: XML-ul generat conține o rotunjire, o formulă sau un câmp greșit undeva în lanțul de calcul al totalurilor, deși valorile afișate în interfața softului par corecte la ochiul liber.
BR-CO-10 verifică dacă suma valorilor de pe liniile facturii se potrivește cu totalul net declarat la nivel de document, iar BR-CO-15 verifică dacă totalul cu TVA se potrivește cu suma dintre totalul fără TVA și TVA-ul calculat. Sunt două verigi diferite din același lanț de totaluri („totals chain") definit de standardul european EN 16931, pe care se bazează și specificația tehnică românească RO_CIUS. Ultima actualizare: 09.08.2026.
Ghidul explică punctual ce calcul verifică fiecare regulă, unde apar cel mai des cele două erori în XML-ul generat de un soft propriu sau de un ERP, și ce pași concreți rezolvă fiecare dintre ele. Este util atât dezvoltatorilor care generează XML pentru RO e-Factura, cât și contabililor care primesc mesajul de eroare de la softul de facturare și vor să înțeleagă rapid dacă problema ține de liniile facturii sau de calculul TVA.
Diferența pe scurt între BR-CO-10 și BR-CO-15
Ambele coduri fac parte din grupul de reguli de coerență („business rules - consistency") care verifică relații matematice între câmpurile facturii electronice, dar fiecare privește o altă porțiune a calculului.
| Aspect | BR-CO-10 | BR-CO-15 |
|---|---|---|
| Ce verifică | Totalul net al facturii (BT-106) trebuie să fie egal cu suma valorilor nete de pe liniile facturii (BT-131) | Totalul cu TVA al facturii (BT-112) trebuie să fie egal cu totalul fără TVA (BT-109) plus totalul TVA (BT-110) |
| Zona din XML afectată | cac:InvoiceLine și cac:LegalMonetaryTotal | cac:LegalMonetaryTotal și cac:TaxTotal |
| Cauză tipică | Câmpuri inversate (LineExtensionAmount vs PriceAmount) sau linii omise din calculul totalului | TVA calculat separat de suma folosită în total, rotunjire diferită între TaxAmount și valoarea reală adunată |
| Cine e afectat mai des | Integrări care calculează totalul documentului independent de liniile facturii | Integrări cu mai multe cote de TVA pe aceeași factură sau cu rotunjire pe linie în loc de rotunjire pe total |
Practic, dacă eroarea vine din nepotrivirea dintre linii și totalul fără TVA, este BR-CO-10. Dacă vine din nepotrivirea dintre totalul fără TVA, TVA și totalul cu TVA, este BR-CO-15 — iar cele două apar frecvent împreună atunci când problema de fond este o rotunjire inconsistentă aplicată în mai multe puncte ale calculului.
Eroarea BR-CO-10: ce înseamnă și când apare
BR-CO-10 verifică o singură condiție matematică: totalul net al facturii, calculat la nivel de document (BT-106, elementul cac:LegalMonetaryTotal/cbc:LineExtensionAmount), trebuie să fie identic cu suma valorilor nete individuale ale fiecărei linii de factură (BT-131, elementul cac:InvoiceLine/cbc:LineExtensionAmount, repetat pe fiecare linie). Dacă suma liniilor nu se potrivește exact cu totalul declarat, ANAF respinge factura înainte de a-i acorda index de încărcare.
Cele mai frecvente cauze întâlnite în integrări reale sunt inversarea câmpurilor LineExtensionAmount (subtotalul liniei) cu PriceAmount (prețul unitar), o linie de discount sau de transport omisă din bucla care generează totalul, și rotunjirea inconsistentă între suma liniilor și totalul facturii. Pentru o analiză tehnică detaliată, cu exemplu de cod XML greșit și corect, consultă ghidul dedicat erorii BR-CO-10 — articolul de față tratează BR-CO-10 doar în context comparativ cu BR-CO-15, nu reia din nou fiecare pas de corectare.
Eroarea BR-CO-15: ce înseamnă și când apare
BR-CO-15 provine tot din standardul EN 16931 și verifică ultima verigă din lanțul de totaluri: totalul facturii cu TVA (BT-112) trebuie să fie exact egal cu totalul fără TVA (BT-109) plus totalul TVA (BT-110). În XML, cele trei valori se regăsesc în elementele cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount, cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount și cac:TaxTotal/cbc:TaxAmount.
Spre deosebire de BR-CO-10, care privește doar zona liniilor, BR-CO-15 privește sfârșitul calculului — punctul în care TVA-ul, calculat de obicei pe grupe de cote diferite, este adunat înapoi la totalul fără TVA pentru a obține suma finală de plată. Orice diferență de rotunjire apărută mai devreme în calcul, chiar și de un bănuț, se propagă și declanșează BR-CO-15 aici, la final.
Cauze tehnice frecvente ale erorii BR-CO-15
În integrările proprii, BR-CO-15 apare de regulă din una dintre următoarele situații:
- TVA calculat pe fiecare linie și apoi rotunjit din nou la total. Dacă softul rotunjește TVA-ul separat pe fiecare linie, iar apoi adună valorile rotunjite, suma poate diferi cu un bănuț față de TVA-ul calculat direct din totalul fără TVA — diferența minimă e suficientă pentru ca regula să respingă factura.
- Facturi cu mai multe cote de TVA (19%, 9%, 5%, scutit) tratate global, în loc să fie grupate corect pe fiecare cotă în
cac:TaxSubtotalînainte de a fi adunate încac:TaxTotal/cbc:TaxAmount. - Câmpul
TaxExclusiveAmountpopulat dintr-o sursă diferită de cea folosită pentru validarea BR-CO-10 — de exemplu un total calculat înainte de aplicarea unui discount global, în timp ce TVA-ul este calculat după discount. - Valoare TVA scrisă manual sau preluată dintr-un câmp cache, neactualizată după o modificare de ultim moment a cantității sau prețului unei linii, deci nemaifiind sincronă cu
TaxExclusiveAmount.
O verificare rapidă utilă: adună manual, cu calculatorul, totalul fără TVA și TVA-ul afișate în XML. Dacă suma nu coincide exact cu totalul cu TVA din același fișier, ai identificat sursa erorii BR-CO-15 înainte să deschizi codul sursă.
Cum rezolvi eroarea BR-CO-15 pas cu pas
- Deschide fișierul de răspuns de la ANAF și confirmă exact codul de eroare BR-CO-15, separat de orice alt cod prezent în același răspuns (de exemplu BR-CO-10).
- Extrage din XML cele trei valori:
TaxExclusiveAmount(BT-109),TaxAmountdincac:TaxTotal(BT-110) șiTaxInclusiveAmount(BT-112). - Verifică dacă TVA-ul este suma corectă a subtotalurilor pe cotă, din
cac:TaxSubtotal, atunci când factura are mai multe cote de TVA pe aceeași linie de document. - Recalculează în cod totalul cu TVA ca sumă directă între totalul fără TVA și TVA-ul total, în loc să preiei o valoare stocată separat sau calculată la un pas anterior.
- Aplică rotunjirea o singură dată, la nivel de total, nu separat pe fiecare linie și apoi din nou la total — aceasta este cauza cea mai frecventă a diferențelor de un bănuț.
- Regenerează XML-ul și retrimite factura ca document nou în SPV — o factură respinsă la validarea BR-CO-15 nu a primit index de încărcare, deci nu necesită stornare.
Riscuri și greșeli frecvente la corectarea celor două erori
Cea mai frecventă greșeală, când ambele coduri apar în același răspuns, este corectarea rotunjirii doar la nivelul liniilor (pentru BR-CO-10) și retransmiterea facturii fără să verifici dacă și calculul TVA (BR-CO-15) mai este afectat de aceeași sursă de rotunjire — ceea ce duce la o a doua respingere, cu întârziere suplimentară.
O a doua greșeală tipică este să corectezi manual, într-un editor de text, un singur XML deja respins, fără să modifici și codul sursă care generează facturile viitoare — diferența de rotunjire revine la următoarea factură cu mai multe linii sau cu mai multe cote de TVA.
A treia situație de risc apare la facturile cu discounturi aplicate pe total, nu pe linie: dacă discountul este scăzut din totalul fără TVA, dar TVA-ul rămâne calculat din suma brută a liniilor, totalul cu TVA nu se mai potrivește cu suma dintre cele două componente, chiar dacă fiecare valoare e corectă izolat.
Plan practic: checklist de verificare pentru ambele erori
Înainte de a retrimite o factură respinsă cu BR-CO-10, BR-CO-15 sau ambele, parcurge lista de mai jos:
- Ai citit toate codurile de eroare din fișierul de răspuns, nu doar primul afișat?
- Pentru BR-CO-10: suma valorilor
LineExtensionAmountde pe toate liniile este egală, la bănuț, cu totalul dincac:LegalMonetaryTotal/cbc:LineExtensionAmount? - Pentru BR-CO-15:
TaxExclusiveAmount+TaxAmounteste egal, la bănuț, cuTaxInclusiveAmount? - Dacă factura are mai multe cote de TVA, fiecare cotă este calculată separat în
cac:TaxSubtotalînainte de a fi adunată în totalul general? - Rotunjirea este aplicată o singură dată, la nivel de total, nu separat pe fiecare linie sau cotă?
- Ai regenerat și retrimis XML-ul ca document nou, nu ca modificare a facturii respinse?
Surse
- ANAF - pagina dedicată Spațiului Privat Virtual (SPV) și RO e-Factura: anaf.ro - SPV
- ANAF - documentația tehnică RO e-Factura: anaf.ro - spv-efactura
- Ministerul Finanțelor - pagina tehnică e-Factura: mfinante.gov.ro - informații tehnice e-Factura
- Comisia Europeană - implementarea de referință a standardului EN 16931, care stă la baza regulilor de validare RO_CIUS (inclusiv BR-CO-10 și BR-CO-15): eInvoicing-EN16931 - reguli de validare oficiale
Data ultimei verificări a surselor: 09.08.2026. Acest material este informativ și tehnic; nu înlocuiește verificarea formatului XML cu un validator RO_CIUS actualizat înainte de transmiterea în producție. Regulile de validare se pot completa sau modifica prin actualizări tehnice ulterioare ale ANAF — confirmă întotdeauna versiunea curentă a specificației pe anaf.ro.
FAQ - Întrebări frecvente despre erorile BR-CO-10 și BR-CO-15
1. Pot apărea BR-CO-10 și BR-CO-15 în același fișier de răspuns de la ANAF?
Da, și apar frecvent împreună atunci când sursa problemei este o rotunjire inconsistentă aplicată în mai multe puncte ale calculului: la nivelul liniilor (BR-CO-10) și la nivelul TVA-ului total (BR-CO-15). Citește lista completă de coduri din răspuns înainte de a retrimite factura.
2. Care este diferența principală dintre cele două erori?
BR-CO-10 verifică dacă suma valorilor nete de pe liniile facturii se potrivește cu totalul net declarat la nivel de document. BR-CO-15 verifică dacă totalul cu TVA se potrivește cu suma dintre totalul fără TVA și TVA-ul total — practic, ultima verigă din lanțul de calcul al totalurilor.
3. De ce apare BR-CO-15 doar la unele facturi, nu la toate?
De regulă, apare la facturile cu mai multe cote de TVA pe același document sau cu discount aplicat la nivel de total. La facturile cu o singură cotă de TVA și fără discounturi, calculul e mai simplu și mai puțin expus rotunjirilor multiple, deci eroarea apare mai rar.
4. Ce fac dacă totalurile par corecte în softul de facturare, dar tot primesc BR-CO-15?
Interfața softului rotunjește de obicei la afișare valorile la 2 zecimale, dar XML-ul poate păstra intern mai multe zecimale sau poate calcula TVA-ul dintr-o sursă diferită de cea afișată. Compară valorile exacte din XML, nu ecranul softului, iar dacă diferența e de ordinul unui bănuț, cauza este aproape sigur rotunjirea aplicată de mai multe ori în calcul.
5. O factură respinsă cu aceste erori necesită stornare?
Nu. O factură respinsă la validarea XML, indiferent dacă din cauza BR-CO-10, BR-CO-15 sau a altui cod, nu primește niciodată index de încărcare în SPV și nu este considerată transmisă. Corectezi XML-ul și retrimiți factura ca document nou, cu aceleași date.
Concluzie
BR-CO-10 și BR-CO-15 sunt două verigi diferite din același lanț de totaluri al facturii electronice: BR-CO-10 verifică relația dintre linii și totalul net, BR-CO-15 verifică relația dintre totalul net, TVA și totalul final cu TVA. Când apar împreună, cauza este aproape întotdeauna aceeași — o rotunjire aplicată inconsistent în mai multe puncte ale calculului — și se rezolvă prin mutarea rotunjirii într-un singur loc, la nivel de total.
Lucrăm soluții software compatibile cu SPV și e-Factura, cu generare corectă a XML-ului direct din sistemul tău de facturare sau ERP, inclusiv pentru facturi cu mai multe cote de TVA. Contactează-ne sau vezi serviciile noastre de dezvoltare software custom. Pentru detalii tehnice suplimentare despre BR-CO-10, cu exemplu complet de cod XML, citește ghidul dedicat erorii BR-CO-10.
Imagine generată cu AI, folosită în scop ilustrativ.
Write a comment