Erori e-Factura

EN16931

Lipsește baza de impozitare din detalierea de TVA

Codul regulii este BR-45.

Mesajul exact din validatorul ANAF

textEroare=[BR-45]-Each VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).
textEroare=[BR-CO-17]-VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.
textEroare=[BR-S-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is Standard rated , the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is Standard rated and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).
textEroare=[BR-S-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is Standard rated shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).

Ce înseamnă

Fiecare grup de detaliere a TVA (BG-23, adică fiecare cac:TaxSubtotal) trebuie să conțină baza de impozitare (BT-116, cbc:TaxableAmount) pe care se aplică cota respectivă. Fără ea, validatorul nu poate verifica aritmetica dintre baza, TVA și totaluri, așa că respinge factura chiar dacă suma finală de plată este corectă. Regula se aplică pentru fiecare cotă în parte: dacă factura are două cote de TVA, sunt două grupuri TaxSubtotal și fiecare are propriul TaxableAmount. Suma bazelor din toate grupurile trebuie să dea totalul fără TVA din LegalMonetaryTotal (BT-109).

Cum repari

În programul de facturare, la construirea fiecărui cac:TaxSubtotal, completează întotdeauna și baza netă a cotei, nu doar TVA-ul și procentul. În XML este elementul cbc:TaxableAmount, cu aceeași monedă ca factura, scris înaintea lui cbc:TaxAmount din același grup.

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">190.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxAmount currencyID="RON">190.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>
</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">190.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="RON">1000.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="RON">190.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>
</ubl:Invoice>

Greșeala asta strică și alte verificări, deci în același răspuns vei găsi și: BR-CO-17, BR-S-08, BR-S-09. 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 VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).

Unde se aplică

$VAT_breakdown

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

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

Nu am confirmat din datele primite dacă validatorul acceptă cbc:TaxableAmount fără atributul currencyID; în factura de referință atributul este prezent, așa că l-am păstrat.