Ce înseamnă
Pe fiecare linie de factură, suma declarată în <cbc:LineExtensionAmount>
(BT-131) trebuie să fie egală cu cantitatea înmulțită cu prețul unitar al
articolului, minus eventualele reduceri aplicate la nivel de linie.
Formal:
LineExtensionAmount = InvoicedQuantity × PriceAmount − AllowanceAmount + ChargeAmount
ANAF respinge XML-ul când această egalitate nu se respectă, chiar și pentru diferențe foarte mici cauzate de rotunjire.
Cauze frecvente
- Rotunjire greșită — calculezi
cantitate × prețla mai multe zecimale decât suma totală pe linie, iar diferența nu se închide - Discount aplicat la nivel de linie dar nedeclarat în
<cac:AllowanceCharge>la nivelul liniei - Cantități cu zecimale combinate cu prețuri rotunjite — ex:
1.5 × 33.00 = 49.50declarat ca49.49sau49.51 - Liniile generate manual într-un export Excel, fără validare programatică
Cum se rezolvă
- Calculează linia cu aceeași precizie pe care o folosești pentru totaluri.
Standardul EN16931 cere 2 zecimale pentru sumele monetare; rotunjește
produsul
cantitate × prețla 2 zecimale înainte de a-l declara. - Dacă oferi un discount, declară-l explicit în
<cac:AllowanceCharge>ca un sub-element al<cac:InvoiceLine>, cu<cbc:ChargeIndicator>false</cbc:ChargeIndicator>. - Verifică că
<cbc:PriceAmount>din<cac:Price>este prețul net (după discount unitar), nu prețul de catalog.
Exemplu valid
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="RON">200.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Serviciu consultanță</cbc:Name>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="RON">100.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
2 × 100.00 = 200.00 — egalitatea se respectă, regula BR-CO-13 trece.
Exemplu invalid
<cac:InvoiceLine>
<cbc:InvoicedQuantity unitCode="C62">3</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="RON">299.99</cbc:LineExtensionAmount>
<cac:Price>
<cbc:PriceAmount currencyID="RON">100.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
3 × 100.00 = 300.00, dar suma declarată este 299.99. Diferența de 1 ban
face XML-ul invalid din punct de vedere EN16931.