Erori e-FacturaBR-21

Fiecare linie de factură trebuie să aibă număr de linie (cbc:ID)

Codul regulii este BR-21.

Mesajul exact din validatorul ANAF

org.xml.sax.SAXParseException; lineNumber: 159; columnNumber: 42; cvc-complex-type.2.4.a: Invalid content was found starting with element '{"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":InvoicedQuantity}'. One of '{"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":ID}' is expected.

Ce inseamna

Fiecare linie de factură (BG-25) trebuie să conțină un identificator propriu, elementul cbc:ID (BT-126), primul copil al lui cac:InvoiceLine. Fără el, ANAF nu poate identifica linia la care se referă cantitățile, prețul și cota de TVA, iar factura este respinsă. Nu contează că numărul este 1, 2, 10 sau un cod de articol: contează să existe și să fie unic în cadrul facturii.

Cum repari

Verifică generatorul de XML și asigură-te că pentru fiecare cac:InvoiceLine scrie un cbc:ID imediat după deschiderea liniei, înaintea cantității. Dacă în baza ta de date linia nu are un număr propriu, folosește numărul de ordine al liniei (1, 2, 3...), care este unic prin construcție și nu se repetă dacă reordonai liniile manual.

Exemplu

Asa pica

<ubl:Invoice xmlns:ubl="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:InvoiceLine>
  </cac:InvoiceLine>
</ubl:Invoice>

Asa trece

<ubl:Invoice xmlns:ubl="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:InvoiceLine>
    <cbc:ID>1</cbc:ID>
  </cac:InvoiceLine>
</ubl: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

Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).

Unde se aplica

$Invoice_Line

Conditia care trebuie sa fie adevarata

$BR-21
Ce nu rezulta din textul oficial al regulii

Nu pot confirma din datele primite dacă validatorul ANAF impune un format anume pentru BT-126 (de exemplu doar cifre sau o lungime maximă); EN 16931 nu restrânge formatul, dar nu exclud o condiție suplimentară în schematronul CIUS-RO. De asemenea, fragmentele sunt scrise cu rădăcina <ubl:Invoice>, conform convenției cerute, în timp ce factura de referință folosește elementul <Invoice> în spațiul de nume implicit.