Data exigibilității TVA și codul ei nu pot apărea amândouă
Codul regulii este BR-CO-03.
Mesajul exact din validatorul ANAF
org.xml.sax.SAXParseException; lineNumber: 17; columnNumber: 72; cvc-complex-type.2.4.a: Invalid content was found starting with element '{"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":TaxPointDateCode}'. One of '{"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":DocumentCurrencyCode, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":TaxCurrencyCode, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":PricingCurrencyCode, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":PaymentCurrencyCode, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":PaymentAlternativeCurrencyCode, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":AccountingCostCode, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":AccountingCost, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":LineCountNumeric, "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2":BuyerReference, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":InvoicePeriod, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":OrderReference, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":BillingReference, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":DespatchDocumentReference, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":ReceiptDocumentReference, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":StatementDocumentReference, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":OriginatorDocumentReference, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":ContractDocumentReference, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":AdditionalDocumentReference, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":ProjectReference, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":Signature, "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2":AccountingSupplierParty}' is expected.
Ce înseamnă
BT-7 (cbc:TaxPointDate) este data la care devine exigibilă TVA, iar BT-8 (cbc:TaxPointDateCode) exprimă aceeași informație printr-un cod. Sunt două modalități alternative de a spune același lucru, de aceea EN 16931 le consideră mutual exclusive: dacă apar amândouă, nu se știe care dintre ele este cel real. Poți folosi oricare dintre ele, dar numai unul singur pe factură. Factura de referință nu conține niciunul, deci regula trece prin simpla absență.
Cum repari
Dezactivează în programul de facturare una dintre cele două opțiuni: păstrează fie data exigibilității (BT-7), fie codul (BT-8), nu pe amândouă. Dacă ambele sunt generate automat, șterge din șablon elementul cbc:TaxPointDateCode și lasă doar cbc:TaxPointDate (sau invers, după cum lucrează contabilitatea ta).
Î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ă
Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.
Unde se aplică
$Invoice
Condiția care trebuie să fie adevărată
$BR-CO-03
Ce nu rezultă din textul oficial al regulii
Factura de referință nu conține nici BT-7, nici BT-8, deci nu pot confirma din datele primite nici poziția exactă a lui cbc:TaxPointDateCode în secvența UBL (l-am așezat imediat după cbc:TaxPointDate și înainte de cbc:DocumentCurrencyCode), nici lista de coduri admise pentru BT-8. Valoarea 3 din fragmentul greșit este doar ilustrativă și trebuie înlocuită cu codul pe care îl emite programul tău.