Erori e-Factura

EN16931

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 înseamnă

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

Așa pică

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

Așa 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>

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

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

Unde se aplică

$Invoice_Line

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

$BR-21
Ce nu rezultă 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.