Attestwire › Rule reference › BR-CO-03
BR-CO-03 The VAT point may be given as a date or as a code, not both
noun · EN 16931 · fatal · BT-7 / BT-8
For a sample invoice, the library reports: The invoice states the VAT point both as an explicit date (BT-7 = "2026-07-31") and as a code (BT-8 = "35"), and EN 16931 allows only one of the two.
- Business term
BT-7 / BT-8- Severity
fatal
The fix
Remove taxPointDate, or remove invoicingPeriod.descriptionCode — not both fields, one of them. Use the code when the tax point is derived by a standing rule, and the explicit date when it is not.
A passing value
"taxPointDate": "2026-07-31"What the library returns
The full error returned by @attestwire/en16931. It includes the rule ID,
affected field and suggested correction. Developers can use this object in their application:
{
"rule": "BR-CO-03",
"field": [
"BT-7",
"BT-8"
],
"severity": "fatal",
"message": "The invoice states the VAT point both as an explicit date (BT-7 = \"2026-07-31\") and as a code (BT-8 = \"35\"), and EN 16931 allows only one of the two. The tax point decides which VAT period the supply falls into and which rate applies if a rate changed — so two statements of it are two potentially different answers to a question that has one. The code form delegates the answer to a rule (\"the invoice date\", \"the actual delivery date\"); the date form states it outright. Pick the one your tax treatment actually rests on.",
"fix": "Remove taxPointDate, or remove invoicingPeriod.descriptionCode — not both fields, one of them. Use the code when the tax point is derived by a standing rule, and the explicit date when it is not.",
"example": "\"taxPointDate\": \"2026-07-31\"",
"xpath": "/ubl:Invoice/cbc:TaxPointDate",
"docsUrl": "https://attestwire.com/rules/BR-CO-03"
}
xpath is always a UBL path. On a CII invoice, look for the
matching CII field instead.