Erori e-Factura

EN16931

Reducerea pe linie trebuie să aibă motiv sau cod de motiv

Codul regulii este BR-42.

Mesajul exact din validatorul ANAF

textEroare=[BR-42]-Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).
textEroare=[BR-CO-23]-Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.

Ce înseamnă

Când acorzi o reducere direct pe o linie de factură (BG-27), adică un cac:AllowanceCharge cu cbc:ChargeIndicator pe false în interiorul liniei, EN 16931 cere să spui și de ce: fie un motiv scris liber (BT-139, cbc:AllowanceChargeReason), fie un cod de motiv din lista UNTDID 5189 (BT-140, cbc:AllowanceChargeReasonCode). Fără unul dintre ele, suma liniei nu mai poate fi justificată în fața ANAF (cantitate × preț unitar nu mai dă LineExtensionAmount) și factura se respinge. Atenție: reducerea de linie nu este același lucru cu reducerea la nivel de document (BG-20), care are regulile ei.

Cum repari

În programul de facturare, la fiecare reducere de linie completează obligatoriu câmpul de motiv (ajunge în cbc:AllowanceChargeReason) sau, dacă lucrezi cu coduri, codul de motiv (cbc:AllowanceChargeReasonCode). Dacă reducerea are valoare zero sau e doar o informație internă, nu o pune pe linie, ci las-o ca notă sau o include direct în prețul unitar. Reține că orice reducere de linie scade baza de TVA a liniei, deci trebuie să actualizezi și detalierea de TVA și totalurile facturii.

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">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: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>
</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">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 10% pe 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>
</ubl:Invoice>

Greșeala asta strică și alte verificări, deci în același răspuns vei găsi și: BR-CO-23. 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 allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).

Unde se aplică

$Invoice_line_allowances

Condiția care trebuie să fie adevărată

$BR-42
Ce nu rezultă din textul oficial al regulii

Nu am putut confirma dacă validatorul ANAF verifică separat și egalitatea LineExtensionAmount = cantitate × preț unitar − reduceri de linie, așa că am ajustat în ambele variante toate sumele afectate de reducere (linia 900,00; bază TVA 900,00; TVA 171,00; total cu TVA 1.071,00), ca factura să fie validă indiferent de acest control. De asemenea, nu am confirmat dacă pentru reducerea de linie se cere un cod anume din lista UNTDID 5189, motiv pentru care am ilustrat doar varianta cu motiv scris liber (BT-139), care este suficientă potrivit textului regulii.