Eroare BR-CO-10 e-Factura: ce inseamna si cum o rezolvi
Eroarea BR-CO-10 apare cand suma liniilor de factura nu coincide cu totalul net. Afla cauza exacta si cum o corectezi in XML.
Eroarea BR-CO-10 este returnata de ANAF cu mesajul: "The sum of Invoice line net amounts (BT-131) shall equal the invoice net amount (BT-106)." Este o regula din standardul european EN 16931, implementata in profilul CIUS-RO obligatoriu in Romania. Eroarea apare exclusiv din cauza neconcordantei matematice dintre valorile din XML, nu din cauza datelor fiscale ale firmei sau ale cumparatorului.
Ce inseamna eroarea BR-CO-10
Regula BR-CO-10 verifica o conditie simpla: suma tuturor valorilor nete de pe liniile de factura trebuie sa fie exact egala cu valoarea neta totala a facturii.
Sunt implicate doua campuri din XML:
- BT-131 (InvoiceLine / LineExtensionAmount): valoarea neta a fiecarei linii, adica cantitate x pret unitar, fara TVA, fara reduceri globale
- BT-106 (LegalMonetaryTotal / LineExtensionAmount): suma tuturor valorilor BT-131 din toate liniile facturii
In UBL 2.1, structura relevanta arata astfel:
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="RON">99.99</cbc:LineExtensionAmount>
<!-- ... -->
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:LineExtensionAmount currencyID="RON">33.33</cbc:LineExtensionAmount>
<!-- ... -->
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:LineExtensionAmount currencyID="RON">33.33</cbc:LineExtensionAmount>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:LineExtensionAmount currencyID="RON">33.33</cbc:LineExtensionAmount>
</cac:InvoiceLine>In exemplul de mai sus, suma liniilor este 99.99, dar daca BT-106 este setat la 100.00, ANAF respinge factura cu eroarea BR-CO-10.
De ce apare aceasta eroare
Cauza principala este rotunjirea neconsistenta a valorilor monetare. Exista mai multe scenarii tipice:
- Pretul unitar are mai mult de 2 zecimale. Daca un produs costa 33.333 RON si ai 3 bucati, valoarea exacta este 99.999 RON. Sistemul rotunjeste fiecare linie la 33.33 RON, obtine suma 99.99 RON, dar calculeaza totalul din 3 x 33.333 = 99.999 rotunjit la 100.00 RON. Diferenta de 0.01 RON cauzeaza eroarea.
- Editarea manuala a XML-ului. Un utilizator modifica un pret pe o linie fara sa actualizeze si totalul din LegalMonetaryTotal.
- Sisteme ERP cu logica de rotunjire proprie. Unele sisteme rotunjesc subtotalurile la nivel de grup de linii, apoi insuma grupurile, introducand erori cumulate.
- Reduceri aplicate incorect. Daca o reducere de linie este calculata separat si scazuta dupa rotunjire, totalul poate diferi de suma liniilor.
Exemplu XML
Situatie: 3 linii cu pret unitar 33.333 RON, cantitate 1 bucata fiecare.
<!-- INCORECT: suma liniilor (99.99) nu egaleaza totalul (100.00) -->
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="RON">100.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="RON">100.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="RON">119.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="RON">119.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:LineExtensionAmount currencyID="RON">33.33</cbc:LineExtensionAmount>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>2</cbc:ID>
<cbc:LineExtensionAmount currencyID="RON">33.33</cbc:LineExtensionAmount>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>3</cbc:ID>
<cbc:LineExtensionAmount currencyID="RON">33.33</cbc:LineExtensionAmount>
</cac:InvoiceLine><!-- CORECT: ajustezi una dintre linii pentru a egala totalul dorit
sau calculezi totalul ca suma a liniilor rotunjite -->
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="RON">99.99</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="RON">99.99</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="RON">118.99</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="RON">118.99</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:LineExtensionAmount currencyID="RON">33.33</cbc:LineExtensionAmount>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>2</cbc:ID>
<cbc:LineExtensionAmount currencyID="RON">33.33</cbc:LineExtensionAmount>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>3</cbc:ID>
<cbc:LineExtensionAmount currencyID="RON">33.33</cbc:LineExtensionAmount>
</cac:InvoiceLine>
<!-- SAU: ajustezi ultima linie la 33.34 pentru a obtine totalul 100.00 -->Regula de baza: calculeaza BT-106 ca suma a valorilor BT-131 dupa ce acestea au fost deja rotunjite la 2 zecimale. Nu rotunzi suma valorilor nerotunjite.
Cum o rezolvi pas cu pas
- Identifica valorile BT-131 din toate elementele InvoiceLine din XML. Aduna-le cu precizie de 2 zecimale.
- Compara suma cu BT-106 din LegalMonetaryTotal / LineExtensionAmount. Daca difera, ai gasit sursa erorii.
- Alege una dintre doua abordari:
- Seteaza BT-106 egal cu suma efectiva a valorilor BT-131 rotunjite. Aceasta este abordarea recomandata.
- Ajusteaza ultima linie (BT-131) cu diferenta de rotunjire, astfel incat suma sa coincida cu totalul dorit. Aceasta este abordarea standard pentru distribuirea erorii de rotunjire.
- Actualizeaza si celelalte campuri din LegalMonetaryTotal care depind de LineExtensionAmount: TaxExclusiveAmount, TaxInclusiveAmount, PayableAmount. Toate trebuie sa fie consistente.
- Retransmite factura la ANAF si verifica raspunsul.
Daca folosesti un sistem ERP sau o aplicatie de facturare, cauta setarile de rotunjire. Unele sisteme au optiuni pentru "rotunjire pe linie" vs "rotunjire pe total". Selecteaza "rotunjire pe linie" si recalculeaza totalul ca suma a liniilor rotunjite.
Previne eroarea cu Billyou
Billyou calculeaza automat toate valorile monetare respectand regulile de rotunjire din specificatia CIUS-RO. BT-106 este intotdeauna calculat ca suma exacta a valorilor BT-131 deja rotunjite. Eroarea BR-CO-10 nu poate aparea in facturile generate prin Billyou.
Billyou valideaza automat fiecare factura inainte de trimitere la ANAF. Daca exista o eroare in structura XML, Billyou o corecteaza automat sau te notifica inainte sa fie respinsa. Nu vei mai vedea aceasta eroare.
Poti incepe gratuit la app.billyou.ro/register.
Daca construiesti o integrare, API-ul Billyou gestioneaza toata logica de rotunjire si validare CIUS-RO pe server. Primesti un raspuns clar pentru fiecare factura, cu sandbox inclus pentru testare. Astfel nu mai trebuie sa implementezi si sa intretii regulile de calcul in codul tau.
Intrebari frecvente
Ce diferenta poate cauza eroarea BR-CO-10?
Chiar si o diferenta de 0.01 RON intre suma liniilor si totalul net este suficienta pentru a declansa eroarea. ANAF valideaza egalitatea exacta, fara marja de toleranta.
Pot folosi mai mult de 2 zecimale pentru pretul unitar?
Da, pretul unitar (BT-146) poate avea mai multe zecimale. Dar valoarea neta a liniei (BT-131) trebuie calculata si trecuta in XML cu cel mult 2 zecimale, conform regulilor CIUS-RO. Rotunjeste BT-131 la 2 zecimale inainte sa calculezi totalul BT-106.
Cum distribui eroarea de rotunjire intre linii?
Practica standard este sa adaugi diferenta de rotunjire pe ultima linie sau pe linia cu valoarea cea mai mare. De exemplu, daca 3 linii de 33.333 RON trebuie sa totalizeze 100.00 RON, pui doua linii la 33.33 RON si ultima la 33.34 RON.
Eroarea BR-CO-10 apare si la facturi cu o singura linie?
Teoretic nu, deoarece o singura valoare BT-131 este intotdeauna egala cu ea insasi. Daca apare la o factura cu o singura linie, cauza este probabil o editare manuala a XML-ului in care una dintre valori a fost modificata fara a fi actualizata si cealalta.
Articole conexe: Erori BR-O-08 si BR-O-09 pentru neplatitori de TVA, Eroare BR-07: CUI cumparator invalid.