Ce înseamnă
Pentru fiecare cotă de TVA distinctă, suma de TVA totală
(<cac:TaxTotal><cbc:TaxAmount>, BT-110) trebuie să fie egală cu suma
TVA-urilor calculate pe linii. ANAF respinge XML-ul cu BR-CO-14 dacă
totalul declarat nu se închide.
Pe scurt: TaxAmount total = Σ (TaxableAmount × Rate ÷ 100) per categorie.
Cauze frecvente
- Rotunjire pe linie vs total — calculezi TVA-ul pe fiecare linie cu 2 zecimale, dar îl declari în total rotunjit altfel
- Cote diferite pe linii diferite — facturi cu mix 19% / 9% / 5%
produc mai multe
<cac:TaxSubtotal>pe care fiecare trebuie să se închidă separat - TaxableAmount calculat greșit — trebuie să fie totalul fără TVA pentru acea categorie, nu totalul cu TVA
Cum se rezolvă
- Grupează liniile pe
vat_rateșivat_category_code(S, Z, E, O) - Pentru fiecare grup, calculează:
TaxableAmount = Σ LineExtensionAmount(linii din grup)TaxAmount = round(TaxableAmount × Rate / 100, 2)
- Emite câte un
<cac:TaxSubtotal>per grup TaxTotal/TaxAmountla nivel de document = suma tuturorTaxSubtotal/TaxAmount
Exemplu
Două linii la cotă 19%:
<cac:InvoiceLine>
<cbc:LineExtensionAmount currencyID="RON">100.00</cbc:LineExtensionAmount>
<cac:Item>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
</cac:ClassifiedTaxCategory>
</cac:Item>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:LineExtensionAmount currencyID="RON">200.00</cbc:LineExtensionAmount>
<cac:Item>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
</cac:ClassifiedTaxCategory>
</cac:Item>
</cac:InvoiceLine>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="RON">57.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">300.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">57.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
100 + 200 = 300 și 300 × 19% = 57.00 — egalitatea trece.