EN16931
Linia de taxă fara suma (transport, ambalare) e respinsa
Codul regulii este BR-43.
Mesajul exact din validatorul ANAF
Ce înseamnă
Pe lângă preț și cantitate, o linie de factură poate avea și o taxă in plus pe linie (BG-28), de exemplu transport, manipulare sau ambalare. Când indicatorul de taxă are valoarea "true", grupul descrie o majorare, iar EN 16931 cere obligatoriu și suma acestei taxe (BT-141), pentru ca ea intra in netul liniei. Daca suma lipseste, validatorul nu poate reface calculul liniei și respinge factură.
Cum repari
La fiecare linie care are o taxă, completează și suma ei, nu doar motivul. Suma se aduna la netul liniei, deci creste și baza de TVA și totalul facturii: in exemplu, 1.000,00 + 50,00 = 1.050,00 lei net, TVA 199,50 lei, total 1.249,50 lei. Daca programul tau emite taxă de linie doar cu motiv, corecteaza sablonul liniei.
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:TaxTotal>
<cbc:TaxAmount currencyID="RON">199.50</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">1050.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">199.50</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">1050.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="RON">1050.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="RON">1249.50</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="RON">1249.50</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="RON">1050.00</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Transport</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: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:TaxTotal>
<cbc:TaxAmount currencyID="RON">199.50</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">1050.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">199.50</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">1050.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="RON">1050.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="RON">1249.50</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="RON">1249.50</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="RON">1050.00</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Transport</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="RON">50.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:InvoiceLine>
</ubl: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 charge (BG-28) shall have an Invoice line charge amount (BT-141).
Unde se aplică
$Invoice_line_charges
Condiția care trebuie să fie adevărată
$BR-43
Ce nu rezultă din textul oficial al regulii
Nu am putut confirma daca validatorul CIUS-RO accepta motivul taxei ca text liber (BT-144) sau impune un cod (BT-145); in exemplu am folosit text liber, admis de EN 16931. Valoarea de 50,00 lei pentru taxă de linie este doar exemplul ales de mine.