{
  "id": "BR-CO-03",
  "country": "EU",
  "syntax": "ubl",
  "group": "document",
  "severity": "fatal",
  "severity_note": "fatal, from the Flag column of the Peppol BIS Billing 3.0 UBL rules index retrieved 2026-10-18.",
  "spec": "Peppol BIS Billing 3.0, May 2026 release, EN 16931 model bound to UBL",
  "statement": "Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.",
  "statement_lang": "en",
  "context": "/ubl:Invoice | /cn:CreditNote",
  "test": "(exists(cbc:TaxPointDate) and not(cac:InvoicePeriod/cbc:DescriptionCode)) or (not(cbc:TaxPointDate) and exists(cac:InvoicePeriod/cbc:DescriptionCode)) or (not(cbc:TaxPointDate) and not(cac:InvoicePeriod/cbc:DescriptionCode))",
  "meaning": "The value added tax point date (BT-7) and the value added tax point date code (BT-8) are mutually exclusive. The statement ends with a period and does not say MUST or shall. The context is the invoice or the credit note, with spaces around the bar. The test allows the date alone, the code alone, or neither. It fails when both are present. The present branch calls exists. The absent branch is not() and does not call exists.",
  "fix": "Send the VAT point date (BT-7) or the VAT point date code (BT-8), or neither. Do not send both.",
  "example_fail": "The invoice has both a VAT point date (BT-7) and a VAT point date code (BT-8).",
  "example_pass": "The invoice has a VAT point date (BT-7) and no VAT point date code (BT-8).",
  "example_note": "Illustration of the condition in the official statement. Not an example published by the source.",
  "source_url": "https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-CO-03/",
  "source_retrieved": "2026-10-18",
  "last_verified": "2026-10-18"
}
