Erori e-Factura

EN16931

Linie cu categoria O, dar fără grupul de TVA neimpozabil

Codul regulii este BR-O-01.

Mesajul exact din validatorul ANAF

textEroare=[BR-CO-18]-An Invoice shall at least have one VAT breakdown group (BG-23).
textEroare=[BR-O-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is Not subject to VAT shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to Not subject to VAT .

Ce înseamnă

Regula se aplică în momentul în care o linie de factură, un discount sau o taxă la nivel de factură are codul categoriei de TVA „O" (neimpozabil / nu face obiectul TVA). Atunci factura trebuie să conțină exact un grup de detalii TVA (BG-23) cu codul O, având ca bază suma liniilor neimpozabile și TVA 0,00. Dacă grupul lipsește sau are alt cod (de exemplu S), validarea ANAF respinge factura, chiar dacă pe linie codul e corect.

Cum repari

Setează pe linie categoria O și lasă programul să genereze grupurile de detalii TVA după categoriile existente efectiv pe linii, nu după un șablon fix rămas din alte facturi. Dacă toată factura este neimpozabilă, totalul de TVA (BT-110) devine 0,00, iar totalul cu TVA (BT-112) rămâne egal cu totalul fără TVA (1.000,00); șterge orice alt grup de TVA rămas în șablon.

Exemplu

Așa pică

<Invoice xmlns="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">0.00</cbc:TaxAmount>
  </cac:TaxTotal>
  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="RON">1000.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="RON">1000.00</cbc:TaxInclusiveAmount>
    <cbc:PayableAmount currencyID="RON">1000.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Name>Serviciu de consultanta</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>O</cbc:ID>
        <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>
</Invoice>

Așa trece

<Invoice xmlns="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">0.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="RON">1000.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="RON">0.00</cbc:TaxAmount>
      <cac:TaxCategory>
        <cbc:ID>O</cbc:ID>
        <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">1000.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="RON">1000.00</cbc:TaxInclusiveAmount>
    <cbc:PayableAmount currencyID="RON">1000.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Name>Serviciu de consultanta</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>O</cbc:ID>
        <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>
</Invoice>

Greșeala asta strică și alte verificări, deci în același răspuns vei găsi și: BR-CO-18. 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ă

An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Not subject to VAT" shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT".

Unde se aplică

$Invoice

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

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

Nu am putut confirma dacă pentru categoria O elementul cbc:Percent (BT-119, respectiv BT-152 pe linie) trebuie să lipsească sau poate fi prezent cu 0.00; în exemplu l-am omis în ambele locuri. Nu am putut confirma nici dacă pentru categoria O codurile de TVA ale părților (BT-31, BT-48) trebuie să lipsească — în decupaj le-am lăsat pe cele din factura de referință. Verifică aceste două puncte înainte de a reutiliza exemplul.