Codul regulii este BR-CO-21.
O reducere trecută la nivel de factură (nu pe linie), adică grupul cac:AllowanceCharge cu ChargeIndicator=false din zona de după condițiile de plată, trebuie să spună și de ce se acordă. Este suficient un singur lucru: fie motivul scris în clar (BT-97, cbc:AllowanceChargeReason), fie codul de motiv (BT-98, cbc:AllowanceChargeReasonCode), fie amândouă. Validatorul dă eroarea când grupul are indicator și sumă, dar nu are nici motiv, nici cod. Regula se uită doar la reducerile de la nivel de factură, nu la cele de pe linia facturii.
În programul de facturare, la reducerea globală de pe factură completați câmpul de motiv (text liber, orice formulare) sau, dacă programul are lista de coduri, câmpul de cod motiv cu 95 = discount. Dacă adăugați acum reducerea, verificați că totalurile s-au recalculat: baza de impozitare scade cu reducerea, iar TVA-ul și totalul de plată se recalculează din noua bază.
<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:PaymentTerms>
<cbc:Note>Plata la 30 de zile de la emitere.</cbc:Note>
</cac:PaymentTerms>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="RON">100.00</cbc:Amount>
<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:AllowanceCharge>
<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">1000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="RON">900.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="RON">1071.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="RON">100.00</cbc:AllowanceTotalAmount>
<cbc:PayableAmount currencyID="RON">1071.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
</ubl:Invoice><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:PaymentTerms>
<cbc:Note>Plata la 30 de zile de la emitere.</cbc:Note>
</cac:PaymentTerms>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Discount comercial acordat</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="RON">100.00</cbc:Amount>
<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:AllowanceCharge>
<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">1000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="RON">900.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="RON">1071.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="RON">100.00</cbc:AllowanceTotalAmount>
<cbc:PayableAmount currencyID="RON">1071.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
</ubl:Invoice>Greseala asta strica si alte verificari, deci in acelasi raspuns vei gasi si: BR-33. Le repari pe toate odata cu asta.
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.Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.
$Document_level_allowances
$BR-CO-21
Valoarea reducerii (100,00 RON) și textul motivului sunt alese de mine pentru exemplu, ca socoteala să se poată face din cap (1.000,00 - 100,00 = 900,00; 19% = 171,00; total 1.071,00) - în factura dumneavoastră puneți suma și motivul reale. Nu am putut verifica în validatorul ANAF valoarea exactă a codului pentru BT-98 (lista UNTDID 5189), de aceea exemplul corect folosește textul motivului, care este oricum acceptat.