# BR-CO-09 error: UK VAT number prefix in Peppol, fixed

> BR-CO-09 fires when a VAT number in a Peppol invoice has no valid country prefix. UK numbers need GB (or XI), never UK. The test, edge cases and fixes.

- Canonical URL: https://einvoices.uk/news/peppol-error-br-co-09-vat-number-prefix
- Published: 24 October 2026 (2026-10-24)
- Last updated: 24 October 2026 (2026-10-24) (not updated since publication)
- Author: Floris Lindenaar, Editor, e-invoicing expert (https://einvoices.uk/authors/floris-lindenaar)
- Publisher: einvoices.uk (https://einvoices.uk)
- Type: Guide
- Topics: Validation, Technical, Peppol, VAT
- Language: en-GB (UK English); covers the United Kingdom

## Sources

- [BR-CO-09 – EN16931 model bound to UBL, Peppol BIS Billing 3.0](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-CO-09/)
- [CEN-EN16931-UBL.sch (validation artefacts 1.3.16, Peppol BIS Billing 3.0.21)](https://docs.peppol.eu/poacc/billing/3.0/files/CEN-EN16931-UBL.sch)
- [VAT guide (VAT Notice 700), 16.3 Information required on a VAT invoice – GOV.UK](https://www.gov.uk/guidance/vat-guide-notice-700)
- [VAT on movements of goods between Northern Ireland and the EU – GOV.UK](https://www.gov.uk/guidance/vat-on-movements-of-goods-between-northern-ireland-and-the-eu)
- [VATREG12450 Entity to be registered: Registration of government departments – HMRC internal manual](https://www.gov.uk/hmrc-internal-manuals/vat-registration-manual/vatreg12450)
- [Check a UK VAT number API v2.0 – HMRC Developer Hub](https://developer.service.hmrc.gov.uk/api-documentation/docs/api/service/vat-registered-companies-api/2.0)
- [Check a UK VAT number – GOV.UK](https://www.gov.uk/check-uk-vat-number)

## Key points

- BR-CO-09 is a fatal EN 16931 rule: every VAT identifier must start with an ISO 3166-1 alpha-2 country code, or EL for Greece.
- UK VAT numbers must start with GB (or XI for Northern Ireland goods trade with the EU). UK123456789 fails because UK is not an ISO country code.
- The rule checks only the first two characters, so it does not prove a VAT number is real or correctly formatted.
- It applies to the buyer's VAT number as well as the seller's and the tax representative's.
- HMRC's Check a UK VAT number service and API confirm whether a number is registered; validation rules do not.

---

**BR-CO-09** means one of the VAT numbers in your Peppol invoice does not start with a recognised two-letter country code. For a UK business the fix is almost always the same: write the number as `GB123456789`, not `UK123456789` and not `123456789`. The rule is fatal, so the invoice is rejected until every VAT identifier has a valid prefix.

The rule text, from the EN 16931 rules published with Peppol BIS Billing 3.0.21, is:

> "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'."

## What the rule actually tests

The UBL test is simpler than the text suggests. It runs on every `cac:PartyTaxScheme` whose `cac:TaxScheme/cbc:ID` is `VAT`, and checks only the first two characters of `cbc:CompanyID`:

```text
context: //cac:PartyTaxScheme[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']
test:    contains(' 1A AD AE ... GB GD ... XI YE YT ZA ZM ZW ', substring(cbc:CompanyID,1,2))
```

In the current artefact (validation artefacts 1.3.16 for BIS 3.0.21, mandatory from 17 August 2026) the list includes `GB`, `XI`, `IM`, `JE`, `GG`, `EL` and `GR`. It does **not** include `UK`.

Three consequences matter:

- **It is case sensitive.** `gb123456789` failed in our test. The comparison is on the raw text.
- **It checks the buyer too.** If your customer master data holds EU or UK buyer VAT numbers without prefixes, the buyer's number fails, not yours.
- **It does not check the number.** Anything that starts with a listed code passes. `GB000000000` passes. So does `GD123`, because GD is the ISO code for Grenada.

## What we tested

We changed one value in a valid UK invoice (our [UK Peppol XML example](https://einvoices.uk/news/e-invoice-xml-example-uk)) and ran it through the BIS 3.0.21 rules, including the live service behind our [e-invoice validator](https://einvoices.uk/tools/e-invoice-validator).

| Seller VAT identifier (BT-31) | Result |
|---|---|
| `GB123456789` | Passes |
| `XI123456789` | Passes |
| `UK123456789` | BR-CO-09 fatal |
| `123456789` | BR-CO-09 fatal |
| `gb123456789` | BR-CO-09 fatal |
| `123456789GB` | BR-CO-09 fatal |
| `GB 123 4567 89` | Passes (prefix only is checked) |

Changing the buyer's `GB987654321` to `987654321` produced the same BR-CO-09 error.

## How to fix it

Put the full number, prefix included, in `cbc:CompanyID`:

```xml
<cac:PartyTaxScheme>
  <cbc:CompanyID>GB123456789</cbc:CompanyID>
  <cac:TaxScheme>
    <cbc:ID>VAT</cbc:ID>
  </cac:TaxScheme>
</cac:PartyTaxScheme>
```

Then check where the bad value came from:

1. **Hard-coded "UK".** Some templates build the identifier as `"UK" + vrn`. Change the constant to `GB`.
2. **Number stored without a prefix.** HMRC itself treats the VAT registration number as digits: its Check a UK VAT number API takes "A 9-digit or 12-digit number" without a prefix. If your ERP stores the bare number, add the prefix when you generate the invoice, not by hand.
3. **Lower case or stray characters.** Upper-case the first two characters and strip leading spaces.
4. **Customer master data.** Fix EU and UK buyer VAT numbers at source. Our [master data clean-up guide](https://einvoices.uk/news/master-data-cleanup-e-invoicing) covers the wider exercise.

Spaces inside the number pass BR-CO-09, but we suggest removing them. Many receiving systems match VAT numbers as strings, and the 9932 Peppol participant ID built from the same number is a separate identifier that must match what is registered. See [UK Peppol EAS codes: 9932 and 0088](https://einvoices.uk/news/peppol-eas-codes-uk-9932-0088).

## UK prefixes: GB, XI and the special cases

| Situation | Prefix in BT-31 | Notes |
|---|---|---|
| Normal UK VAT registration | `GB` | HMRC's API describes UK numbers as 9 or 12 digits |
| Northern Ireland business, goods to or from the EU | `XI` | HMRC: show "The letters 'XI' ... as a prefix to your VAT registration number" on these invoices |
| Isle of Man VAT registration | `GB` | Manx numbers are issued in the UK series. See [Peppol IDs for the Isle of Man](https://einvoices.uk/news/peppol-id-isle-of-man) |
| Government departments and health authorities | `GD` / `HA` (see below) | Recorded manually by HMRC |

The XI rule comes from HMRC's guidance on [VAT on movements of goods between Northern Ireland and the EU](https://www.gov.uk/guidance/vat-on-movements-of-goods-between-northern-ireland-and-the-eu). For services, and for trade within the UK, NI businesses use their GB number. Our [Northern Ireland Peppol ID guide](https://einvoices.uk/news/peppol-id-northern-ireland-xi) explains why XI is a VAT prefix and not a Peppol scheme.

**Government and NHS bodies.** HMRC's VAT Registration Manual says government departments and similar bodies "are recorded manually, with a prefix 'GD' (for government departments) or 'HA' (for health authorities)" (VATREG12450). How such a number should be written in an e-invoice is not set out in that guidance. Note what BR-CO-09 does with it: `GD...` passes (GD is Grenada's code) and `HA...` fails (HA is not an ISO code). If a public sector buyer gives you a GD or HA reference, ask them which VAT identifier they want in BT-48, or whether to leave BT-48 out. We have not found HMRC guidance on this for e-invoices.

## A valid prefix is not a valid number

Because BR-CO-09 only reads two characters, a passing invoice can still carry a wrong or made-up VAT number. To confirm that a UK number is registered:

- use HMRC's [Check a UK VAT number](https://www.gov.uk/check-uk-vat-number) service, which also shows the registered name and address, or
- call the Check a UK VAT number API v2 from your software. Version 2 is behind authentication: "Version 1 was removed on 17 February 2025" and you must register on HMRC's Developer Hub.

Doing this when you onboard a customer or supplier is cheaper than finding out from a rejected invoice. The [supplier onboarding guide](https://einvoices.uk/news/supplier-onboarding-e-invoicing) has a checklist.

## Not yet settled for the UK

BR-CO-09 is an EN 16931 rule, applied today because Peppol BIS Billing 3.0 builds on EN 16931. The UK has confirmed Peppol as the core network for the April 2029 mandate but **has not published a UK data specification**. Whether a UK specification would add a format or check-digit rule for GB numbers is **not yet confirmed**. Some countries already do this in Peppol: release 3.0.21 added warnings that Dutch VAT numbers "should have the format NL123456789B12".

## What to do now

- Search your invoice templates for a hard-coded `UK` prefix.
- Make sure seller and buyer VAT numbers are stored or generated with `GB` or `XI` in upper case.
- Run a sample through the [e-invoice validator](https://einvoices.uk/tools/e-invoice-validator) and the [VAT invoice checker](https://einvoices.uk/tools/vat-invoice-checker).
- Verify new customer and supplier numbers with HMRC before the first invoice.

More rule-by-rule fixes: [common Peppol validation errors](https://einvoices.uk/news/common-peppol-validation-errors).

## Frequently asked questions

### What does BR-CO-09 mean?

It means a VAT identifier in the invoice (seller, seller's tax representative or buyer) does not start with a valid two-letter ISO 3166-1 country code. Greece may use EL. The rule is fatal, so the invoice is rejected.

### Should a UK VAT number start with GB or UK in Peppol?

GB. UK is not an ISO 3166-1 alpha-2 code and fails BR-CO-09. Northern Ireland businesses use XI where HMRC requires it for goods traded with the EU.

### Does BR-CO-09 check that the VAT number is valid?

No. It only checks the first two characters against a list of country codes. GB000000000 passes. Use HMRC's Check a UK VAT number service or API to confirm a number is registered.

### Why does my buyer's VAT number trigger BR-CO-09?

The rule applies to every PartyTaxScheme whose tax scheme is VAT, including the buyer's (BT-48). A buyer VAT number stored without its prefix, such as 987654321, fails.

---

How to cite: "BR-CO-09 error: UK VAT number prefix in Peppol, fixed", einvoices.uk, 24 October 2026, https://einvoices.uk/news/peppol-error-br-co-09-vat-number-prefix

einvoices.uk is an independent publication and is not affiliated with HMRC or the UK Government. Nothing here is tax advice; check the sources and official GOV.UK guidance before acting.
