Erori e-FacturaBR-15

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 inseamna

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

Asa pica

<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>

Asa 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>

In practica nu ajungi sa vezi codul regulii: valoarea e respinsa mai devreme, de schema XML, iar mesajul arata cum scrie mai sus. Regula exista si ea, dar prinde doar cazurile pe care schema le lasa sa treaca.

Verificat. Am pus fiecare din cele doua fragmente intr-o factura completa si le-am trecut prin validatorul oficial ANAF, versiunea ro16931-ubl-1.0.9. Factura cu fragmentul din stanga a fost respinsa cu mesajul de mai sus; cea cu fragmentul din dreapta a trecut fara nicio eroare. Verificarea s-a facut pe 14.09.2026.
Regula asa cum e scrisa in schematronul oficial

Textul oficial, in engleza

An Invoice shall have the Amount due for payment (BT-115).

Unde se aplica

$Document_totals

Conditia care trebuie sa fie adevarata

$BR-15