Counterfoil rule note

BR-CO-09

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

The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix ‘EL’.

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

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 VAT identifier (BT-31), the seller tax representative VAT identifier (BT-63), and the buyer VAT identifier (BT-48) shall have an ISO 3166-1 alpha-2 prefix, and Greece may use the prefix ‘EL’. The statement writes ISO code ISO 3166-1, ends with a period, and quotes EL with U+2018 and U+2019. The context is any party tax scheme whose id is VAT, written cbc:ID))='VAT' with no space before =. The test takes the first two characters of the company id. It keeps a missing space after each of three commas: before substring, and inside substring(cbc:CompanyID,1,2). A single space sits after contains( and before each of two closing parentheses. The list includes EL, GR, XI, and 1A. The test does not call exists.

What to change

Start BT-31, BT-63, and BT-48 with an ISO 3166-1 alpha-2 prefix from the published list. Greece may use EL.

Illustration

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

Fails the stated condition. A VAT company identifier starts with XX.

Passes the stated condition. A VAT company identifier starts with DE, or it starts with EL.

Published context and test

Copied from the source. Not reimplemented on this page.

//cac:PartyTaxScheme[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']
( contains( ' 1A AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH EL ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR SS ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS XI YE YT ZA ZM ZW ',substring(cbc:CompanyID,1,2) ) )

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