EN16931
Taxă pe linia facturii trebuie să aiba motiv sau cod de motiv
Codul regulii este BR-44.
Mesajul exact din validatorul ANAF
Ce înseamnă
Când pui o taxă suplimentară pe o linie de factură (grup AllowanceCharge cu ChargeIndicator egal cu "true"), EN 16931 cere să spui de ce o percepi: ori textul motivului, ori codul de motiv. Fara niciunul dintre ele, factură este respinsa, chiar daca suma și TVA-ul sunt corecte. In factură de referinta nu exista nicio taxă pe linie, asa ca regula se aplica abia dupa ce adaugi una.
Cum repari
In programul de facturare, la fiecare linie care are o taxă suplimentară completează fie campul de motiv (text liber, ex. "Taxă de manipulare"), fie codul de motiv din lista EN 16931 (ex. ZZ pentru motiv nespecificat). Nu lasa taxă fara explicatie doar pentru ca ai completat suma.
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:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:Amount currencyID="RON">0.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>
</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:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Taxa de manipulare</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="RON">0.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>
</ubl:Invoice>Greșeala asta strică și alte verificări, deci în același răspuns vei găsi și: BR-CO-24. 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ă
Each Invoice line charge shall have an Invoice line charge reason or an invoice line allowance reason code.
Unde se aplică
$Invoice_line_charges
Condiția care trebuie să fie adevărată
$BR-44
Ce nu rezultă din textul oficial al regulii
Am folosit o taxă cu valoarea 0.00 ca să nu ating sumele facturii de referinta; daca taxă are o suma reala, in xml_corect trebuie recalculate și LineExtensionAmount pe linie, și TaxableAmount/TaxAmount din TaxTotal, și TaxExclusiveAmount/TaxInclusiveAmount/PayableAmount din LegalMonetaryTotal. Nu am putut confirma din datele primite daca validatorul accepta o taxă de 0.00. Nu am putut confirma 100% nici numele exact al elementului de motiv (cbc:AllowanceChargeReason) și al codului (cbc:AllowanceChargeReasonCode) pentru AllowanceCharge de pe linie.