Skip to content

BR-CO – Conditions and calculations

BR-CO-09: VAT identifier without a country prefix (BT-31, BT-48)

ErrorEN 16931 business rule (CEN)

Official message

[BR-CO-09]-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: CEN EN 16931, version 1.3.16

How to fix it

Prefix the number with the ISO country code in capitals, for example DE123456789; Greek numbers start with EL. A national tax number belongs in BT-32 with TaxScheme FC instead.

Before – invalid
<cac:PartyTaxScheme>
  <cbc:CompanyID>123456789</cbc:CompanyID>
  <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
After – corrected
<cac:PartyTaxScheme>
  <cbc:CompanyID>DE123456789</cbc:CompanyID>
  <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>

What the message means

A VAT identifier in the invoice does not start with the two-letter code of the issuing country, such as DE, AT or FR. The country code is part of the number: it is how the recipient knows where the company is registered and can verify the number through the VIES service. Numbers without the prefix count as invalid and the invoice is rejected.

Common causes

  • The VAT identifier was copied from the master data without the country code, for example 123456789 instead of DE123456789.
  • The national tax number was put into the field with TaxScheme VAT instead of the VAT identifier.
  • Lower-case letters or a space before the country code, such as "de 123456789".

Frequently asked

Does the buyer's VAT identifier need a country prefix too?

Yes. BR-CO-09 covers the seller (BT-31), the tax representative (BT-63) and the buyer (BT-48). Every VAT identifier given starts with its country code.

What do I enter when I only have a national tax number?

The tax number goes into BT-32 with the scheme FC, not into the VAT identifier field. There the standard expects only a number with a country prefix.

Fields concerned

  • BT-31
  • BT-48
  • BT-63

Related rules

  • BR-AE-04
  • BR-IC-04
  • BR-O-04

Check your invoice

The EN 16931 validator reports this rule with the line number and location – right in your browser, without upload.

Open the EN 16931 validator

Technical details
UBL · Context (XPath)
//cac:PartyTaxScheme[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']
UBL · Schematron test
( 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) ) )
CII · Context (XPath)
//ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA']
CII · Schematron test
contains(' 1A AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ 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 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 ', concat(' ', substring(.,1,2), ' '))

Explanation written on 13 September 2026