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 inseamna
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).
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
Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.
Unde se aplica
$Invoice
Conditia care trebuie sa fie adevarata
$BR-CO-03
Ce nu rezulta 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.