EN16931
Discount de linie fara suma: factură e respinsa de ANAF
Codul regulii este BR-41.
Mesajul exact din validatorul ANAF
Ce înseamnă
Când pe o linie de factură apare un discount (sau o penalizare) de linie, adica grupul BG-27, el trebuie să contina obligatoriu și suma lui, BT-136. In UBL, discountul de linie este un cac:AllowanceCharge cu cbc:ChargeIndicator egal cu false, iar suma lui este elementul cbc:Amount. Regula spune simplu: daca ai pus discountul pe linie, trebuie să-i spui și cât este; altfel nu se stie cu cât se reduce baza liniei.
Cum repari
In programul de facturare, la discountul aplicat pe linie completează și suma discountului (BT-136), nu doar indicatorul și motivul. Dupa ce adaugi discountul, scade-l din baza liniei și recalculeaza in jos: baza liniei (BT-131), baza de impozitare și TVA-ul din detalierea pe cote (BT-116, BT-117), apoi totalurile facturii (BT-106, BT-109, BT-112, BT-115).
Exemplu
Așa pică
<Invoice xmlns="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:TaxTotal>
<cbc:TaxAmount currencyID="RON">171.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">900.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">171.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="RON">900.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="RON">900.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="RON">1071.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="RON">1071.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="RON">900.00</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Discount comercial acordat la linie</cbc:AllowanceChargeReason>
</cac:AllowanceCharge>
<cac:Item>
<cbc:Name>Serviciu de consultanta</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="RON">100.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice>Așa trece
<Invoice xmlns="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:TaxTotal>
<cbc:TaxAmount currencyID="RON">171.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">900.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">171.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="RON">900.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="RON">900.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="RON">1071.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="RON">1071.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="RON">900.00</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Discount comercial acordat la linie</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="RON">100.00</cbc:Amount>
</cac:AllowanceCharge>
<cac:Item>
<cbc:Name>Serviciu de consultanta</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="RON">100.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice>În practică nu ajungi să vezi codul regulii: valoarea e respinsă mai devreme, de schema XML, iar mesajul arată cum scrie mai sus. Regula există și ea, dar prinde doar cazurile pe care schema le lasă să treacă.
ro16931-ubl-1.0.9. Factura cu fragmentul din stânga a fost respinsă cu 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ă
Each Invoice line allowance (BG-27) shall have an Invoice line allowance amount (BT-136).
Unde se aplică
$Invoice_line_allowances
Condiția care trebuie să fie adevărată
$BR-41
Ce nu rezultă din textul oficial al regulii
Factură de referinta nu are niciun discount de linie, deci exemplul l-am construit adaugand grupul BG-27 și am recalculat sumele ca să rămână valide cap-coada: 10 x 100,00 = 1.000,00, minus discount 100,00 = 900,00 baza, TVA 19% = 171,00, total 1.071,00. Nu am putut confirma daca validatorul cere și un motiv sau un cod de motiv pentru discountul de linie; am pus doar textul motivului. De asemenea, nu am confirmat daca exista vreo regula care verifica egalitatea dintre cantitate x preț și baza liniei, sau daca doar sumele din detalierea de TVA și din totaluri sunt controlate de validator.