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
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.
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).