Erori e-Factura

EN16931

Factura fără sumă de plată (BT-115) este respinsă de ANAF

Codul regulii este BR-15.

Mesajul exact din validatorul ANAF

org.xml.sax.SAXParseException; lineNumber: 156; columnNumber: 28; cvc-complex-type.2.4.b: The content of element 'cac:LegalMonetaryTotal' is not complete. One of '{"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":AllowanceTotalAmount, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":ChargeTotalAmount, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":PrepaidAmount, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":PayableRoundingAmount, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":PayableAmount}' is expected.

Ce înseamnă

BR-15 cere că orice factură să conțină suma de plată (BT-115) în grupul totalurilor, adică exact ce trebuie să achite cumpărătorul. Fără acest element, validatorul nu poate verifica regulile de rotunjire și de coerență dintre totaluri, așa că factura pică la validare. În factura de referință elementul există și este egal cu totalul cu TVA, pentru că nu există avansuri sau rețineri.

Cum repari

Verifică generatorul de facturi să scrie întotdeauna cbc:PayableAmount în cac:LegalMonetaryTotal, ca ultim copil al grupului. Valoarea lui este totalul cu TVA din care se scad avansurile (BT-113) și reținerile, dacă există; când nu există, este egal cu BT-112.

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:LegalMonetaryTotal><!-- BG-22 TOTALURI -->
    <cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount><!-- BT-106 -->
    <cbc:TaxExclusiveAmount currencyID="RON">1000.00</cbc:TaxExclusiveAmount><!-- BT-109 -->
    <cbc:TaxInclusiveAmount currencyID="RON">1190.00</cbc:TaxInclusiveAmount><!-- BT-112 -->
  </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:LegalMonetaryTotal><!-- BG-22 TOTALURI -->
    <cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount><!-- BT-106 -->
    <cbc:TaxExclusiveAmount currencyID="RON">1000.00</cbc:TaxExclusiveAmount><!-- BT-109 -->
    <cbc:TaxInclusiveAmount currencyID="RON">1190.00</cbc:TaxInclusiveAmount><!-- BT-112 -->
    <cbc:PayableAmount currencyID="RON">1190.00</cbc:PayableAmount><!-- BT-115 -->
  </cac:LegalMonetaryTotal>
</Invoice>

În practică nu ajungi să vezi codul regulii: valoarea e respinsă mai devreme, de schema XML, iar mesajul arată cum scrie mai sus. Regula există și ea, dar prinde doar cazurile pe care schema le lasă să treacă.

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 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 shall have the Amount due for payment (BT-115).

Unde se aplică

$Document_totals

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

$BR-15