Erori e-Factura

EN16931

Taxă pe linia facturii trebuie să aiba motiv sau cod de motiv

Codul regulii este BR-44.

Mesajul exact din validatorul ANAF

textEroare=[BR-44]-Each Invoice line charge shall have an Invoice line charge reason or an invoice line allowance reason code.
textEroare=[BR-CO-24]-Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.

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.

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ă

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.