Counterfoil rule note

BR-CO-26

Quoted from a public specification. This page is not a validator, and it is not tax, legal, or accounting advice.

Country
EU
Syntax
UBL
Severity
fatal
Last verified
2026-10-18

Official statement

In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.

Source: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-CO-26/

Peppol BIS Billing 3.0, May 2026 release, EN 16931 model bound to UBL

Severity note: fatal, from the Flag column of the Peppol BIS Billing 3.0 UBL rules index retrieved 2026-10-18.

Plain-language reading

The seller identifier (BT-29), the seller legal registration identifier (BT-30), or the seller VAT identifier (BT-31) must be present so the buyer can identify the supplier. The statement says "and/or" and "shall be present", and it ends with a period. The rule page has a trailing U+00A0 after that period. Collapse drops it. The context is the accounting supplier party. The published test calls exists three times. The VAT scheme comparison is cbc:ID))='VAT' with no space before =. The party-identification branch excludes schemeID SEPA, with spaces around =.

What to change

Send a Seller identifier (BT-29), a Seller legal registration identifier (BT-30), or a Seller VAT identifier (BT-31). A party identification with scheme SEPA does not satisfy the identifier branch.

Illustration

Illustration of the condition in the official statement. Not an example published by the source.

Fails the stated condition. The seller has no identifier, no legal registration identifier, and no VAT identifier.

Passes the stated condition. The seller has a VAT identifier and no other seller identifier.

Published context and test

Copied from the source. Not reimplemented on this page.

cac:AccountingSupplierParty
exists(cac:Party/cac:PartyTaxScheme[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:CompanyID) or exists(cac:Party/cac:PartyIdentification/cbc:ID[not(@schemeID = 'SEPA')]) or exists(cac:Party/cac:PartyLegalEntity/cbc:CompanyID)

All rule notes · JSON · Markdown · llms.txt · Invoice page · Privacy