Erori e-Factura

EN16931

Totalul taxelor din factură nu bate cu suma taxelor

Codul regulii este BR-CO-12.

Mesajul exact din validatorul ANAF

textEroare=[BR-CO-12]-Sum of charges on document level (BT-108) = Σ Document level charge amount (BT-99).
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).

Ce înseamnă

Când pe factură apar taxe la nivel de document (de exemplu transport, ambalare, alte costuri facturate peste liniile de produs), fiecare are un cuantum, iar elementul de total al taxelor din factură trebuie să fie exact suma lor. Regula se aplică în ambele sensuri: dacă există taxe în suma de 100,00 RON, totalul taxelor trebuie să fie 100,00 RON, iar dacă nu există nicio taxă, totalul taxelor nu are ce să caute completat. O nepotrivire aici este una dintre cele mai frecvente cauze de respingere, pentru că ANAF nu poate reconstrui baza de impozitare.

Cum repari

Verifică în programul de facturare secțiunea de taxe/costuri la nivel de factură (nu de linie) și asigură-te că fiecare taxă apare ca „taxă” și nu ca „discount”, apoi că totalul taxelor este suma lor exactă. Dacă nu ai adăugat nicio taxă pe document, golește câmpul de total taxe, nu lasă acolo o valoare.

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:PaymentMeans>
    <cbc:PaymentMeansCode>31</cbc:PaymentMeansCode>
    <cac:PayeeFinancialAccount>
      <cbc:ID>RO49AAAA1B31007593840000</cbc:ID>
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>
  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="RON">209.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="RON">1100.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="RON">209.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">1100.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="RON">1309.00</cbc:TaxInclusiveAmount>
    <cbc:ChargeTotalAmount currencyID="RON">100.00</cbc:ChargeTotalAmount>
    <cbc:PayableAmount currencyID="RON">1309.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
</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:PaymentMeans>
    <cbc:PaymentMeansCode>31</cbc:PaymentMeansCode>
    <cac:PayeeFinancialAccount>
      <cbc:ID>RO49AAAA1B31007593840000</cbc:ID>
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
    <cbc:AllowanceChargeReason>Transport</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">209.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="RON">1100.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="RON">209.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">1100.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="RON">1309.00</cbc:TaxInclusiveAmount>
    <cbc:ChargeTotalAmount currencyID="RON">100.00</cbc:ChargeTotalAmount>
    <cbc:PayableAmount currencyID="RON">1309.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
</Invoice>

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

Sum of charges on document level (BT-108) = Σ Document level charge amount (BT-99).

Unde se aplică

$Document_totals

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

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

Factură de referință nu are nicio taxă la nivel de document, așa că grupul cac:AllowanceCharge l-am adăugat eu, între cac:PaymentMeans și cac:TaxTotal. Textul motivului („Transport”) este doar un exemplu, la fel și suma de 100,00 RON; am recalculat în consecință bază impozabilă (1100,00), TVA (209,00) și totalul de plată (1309,00), ca variantă corectă să fie validă cap-coadă. Nu am putut confirma dintr-o sursă oficială dacă în CIUS-RO motivul taxei (BT-97) este obligatoriu sau doar recomandat; dacă validatorul îl cere, completați-l, dacă îl respinge, ștergeți linia respectivă fără să atingeți suma.