Erori e-Factura

EN16931

BT-107 (total reduceri de pe factura) se scrie cu maximum 2 zecimale

Codul regulii este BR-DEC-10.

Mesajul exact din validatorul ANAF

textEroare=[BR-DEC-10]-The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.
textEroare=[UBL-DT-01]-Amounts shall be decimal up to two fraction digits
textEroare= [BR-RO-Z2]-Numarul maxim permis de zecimale pentru Suma deducerilor la nivelul documentului (BT-107) este 2. #The allowed maximum number of decimals for the Sum of allowances on document level(BT-107) is 2.

Ce înseamnă

BT-107 este suma tuturor reducerilor acordate la nivel de document (nu pe linie) și se scrie în UBL în cac:LegalMonetaryTotal/cbc:AllowanceTotalAmount. Regula BR-DEC-10 spune că această sumă poate avea cel mult 2 zecimale. Dacă programul scrie 0.000 sau 12.345, factura este respinsă de validator chiar dacă suma totală de plată este corectă. Atenție: regula se referă la zecimale, nu la mărimea sumei - un discount corect rotunjit la 2 zecimale trece fără probleme.

Cum repari

În programul de facturare, formatează numeric câmpul pentru total reduceri de document cu două zecimale fix (0.00, 12.34, 100.00), nu cu zecimalele rezultate din calculul procentual. Rotunjește la 2 zecimale înainte de a-l scrie în XML, exact cum faci la celelalte sume din LegalMonetaryTotal.

Exemplu

Așa pică

<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
             xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
             xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="RON">1000.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="RON">1190.00</cbc:TaxInclusiveAmount>
    <cbc:AllowanceTotalAmount currencyID="RON">0.000</cbc:AllowanceTotalAmount>
    <cbc:PayableAmount currencyID="RON">1190.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
</ubl:Invoice>

Așa trece

<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
             xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
             xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="RON">1000.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="RON">1190.00</cbc:TaxInclusiveAmount>
    <cbc:AllowanceTotalAmount currencyID="RON">0.00</cbc:AllowanceTotalAmount>
    <cbc:PayableAmount currencyID="RON">1190.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
</ubl:Invoice>

Greșeala asta strică și alte verificări, deci în același răspuns vei găsi și: BR-DEC-RO-10, UBL-DT-01. Le repari pe toate odată cu asta.

Verificat. Am pus fiecare din cele două fragmente într-o factură completă și le-am trecut prin validatorul oficial ANAF, versiunea ro16931-ubl-1.0.9. Factura cu fragmentul din stânga a fost respinsă cu exact mesajul de mai sus; cea cu fragmentul din dreapta a trecut fără nicio eroare. Verificarea s-a făcut pe 14.09.2026.
Regula așa cum e scrisă în schematronul oficial

Textul oficial, în engleză

The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.

Unde se aplică

$Document_totals

Condiția care trebuie să fie adevărată

$BR-DEC-10
Ce nu rezultă din textul oficial al regulii

Elementul BT-107 (cac:AllowanceTotalAmount) nu există în factura de referință, așa că l-am adăugat în ambele variante, între TaxInclusiveAmount și PayableAmount, poziția lui din secvența UBL a lui LegalMonetaryTotal. Am folosit valoarea 0.00 ca să nu modific nicio altă sumă din factura (BR-CO-12 rămâne valabil: 1000.00 - 0.00 = 1000.00). Nu pot confirma din datele primite dacă validatorul ANAF acceptă fără obiecții BT-107 prezent cu valoare zero atunci când nu există nicio linie de reducere de document (BG-20); dacă ai reduceri reale, scrie acolo suma lor rotunjită la 2 zecimale și ajustează în consecință TaxExclusiveAmount (BT-109), TaxInclusiveAmount (BT-112) și PayableAmount (BT-115).