Erori e-FacturaBR-CO-23

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

Codul regulii este BR-CO-23.

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 inseamna

Când acorzi o reducere pe o singură linie de factură (nu la nivelul întregii facturi), grupul de reducere trebuie să spună și de ce se acordă: fie printr-un text liber, fie printr-un cod de motiv. Validatorul nu verifică valoarea reducerii, ci doar că nu lipsește orice explicație. Fără motiv sau cod, factura se respinge chiar dacă toate cifrele sunt corecte.

Cum repari

În programul de facturare, la fiecare reducere pusă pe linie completează câmpul de motiv (text liber) sau codul de motiv din nomenclatorul agreat de EN 16931. Ai grijă că reducerea de pe linie scade netul liniei: netul liniei, baza de TVA și totalurile facturii trebuie recalculate, altfel factura pică pe regulile de aritmetică.

Exemplu

Asa pica

<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:Price>
      <cbc:PriceAmount currencyID="RON">100.00</cbc:PriceAmount>
    </cac:Price>
    <cac:AllowanceCharge>
      <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
      <cbc:Amount currencyID="RON">100.00</cbc:Amount>
    </cac:AllowanceCharge>
  </cac:InvoiceLine>
</ubl:Invoice>

Asa 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:Price>
      <cbc:PriceAmount currencyID="RON">100.00</cbc:PriceAmount>
    </cac:Price>
    <cac:AllowanceCharge>
      <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
      <cbc:AllowanceChargeReason>Reducere comerciala 10%</cbc:AllowanceChargeReason>
      <cbc:Amount currencyID="RON">100.00</cbc:Amount>
    </cac:AllowanceCharge>
  </cac:InvoiceLine>
</ubl:Invoice>

Greseala asta strica si alte verificari, deci in acelasi raspuns vei gasi si: BR-42. Le repari pe toate odata cu asta.

Verificat. Am pus fiecare din cele doua fragmente intr-o factura completa si le-am trecut prin validatorul oficial ANAF, versiunea ro16931-ubl-1.0.9. Factura cu fragmentul din stanga a fost respinsa cu exact mesajul de mai sus; cea cu fragmentul din dreapta a trecut fara nicio eroare. Verificarea s-a facut pe 14.09.2026.
Regula asa cum e scrisa in schematronul oficial

Textul oficial, in engleza

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.

Unde se aplica

$Invoice_line_allowances

Conditia care trebuie sa fie adevarata

$BR-CO-23
Ce nu rezulta din textul oficial al regulii

Factura de referință nu conține nicio reducere pe linie, așa că grupul cac:AllowanceCharge a fost adăugat integral în ambele variante, iar totalurile au fost recalculate ca să rămână valide: 10 x 100,00 = 1.000,00, minus 100,00 reducere = 900,00 net, TVA 19% = 171,00, total 1.071,00. Poziția elementului cac:AllowanceCharge în linie (după cac:Price) provine din secvența UBL 2.1 și nu a putut fi verificată pe o factură de referință care să conțină deja o reducere pe linie. Nu am folosit un cod de motiv (BT-140) pentru că nu am lista de coduri acceptată de validator, iar regula cere motivul SAU codul.