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

the shape this field expects
"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:

TeachingError
{
  "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.