Skip to main content
EN 16931 · identifiers

Error BR-CO-09: the seller or buyer VAT number has no country prefix

In a European e-invoice, the VAT number always carries the two country letters in front: DE, FR, BE, NL… BR-CO-09 is the rule that requires it, and it almost always fires because the number on the contact was typed without its prefix. Around it there are four more rules that require the number to be there, depending on the VAT type of the invoice.

FlexigoTech · Editor in charge: Víctor Gómez · Updated 4 November 2026

Key facts

Versions
Odoo 17, 18, 19 and 20
Checked
in the module's source code, version 17.0 and 20.0 · against the sources linked at the end
Reading time
3 min

The text of BR-CO-09 in the EN 16931 Schematron (validation-1.3.17), severity fatal: “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’.”

It covers three numbers: yours (BT-31), your tax representative's if you have one (BT-63) and the customer's (BT-48). Greece is the exception: it may use EL instead of GR.

Card for EN 16931 rule BR-CO-09
The ISO 3166-1 prefix on the seller, representative and buyer VAT numbers.

The rules that require the number

BR-CO-09 looks at the format. These others check that the number is there, and depend on the VAT category of the lines:

RuleWhen it appliesText
BR-CO-26AlwaysIn 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.
BR-S-02Standard-rate linesAn Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).
BR-AE-02Reverse chargeAn Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).
BR-IC-02Intra-community supplyAn Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).

All four are fatal. Note the difference: a standard-rate sale only needs your number; a reverse-charge or intra-community sale needs the customer's too.

What Odoo checks

Before generating the file, Odoo checks that your company's VAT number and the customer's start with two letters. If not, it warns with “The VAT of the %s should be prefixed with its country code.”, with “supplier” or “customer”. On Odoo 17 the check only runs for three formats, Peppol BIS, XRechnung and NLCIUS (the Dutch format); on Odoo 18, 19 and 20 it sits in the shared EN 16931 layer.

The check only looks for letters in front. Whether they are the right country, or whether the number is valid, is not something this rule checks.

How to write it in Odoo

Right
The number as each country's VAT register publishes it, with its two letters in front: DE for Germany, FR for France, BE for Belgium, NL for the Netherlands.
Wrong
The number with no letters, with spaces or dots inside, or with another country's prefix.
Greece
EL in front, not GR: the exception the rule itself states.

With our XRechnung and ZUGFeRD module

Customer in Odoo 20 with a German VAT number with prefix and the E-Invoicing tab of the XRechnung module
The VAT field with the DE prefix, as BR-CO-09 asks. Odoo 20 screenshot with demo data.

On Odoo 18, 19 and 20, with the FlexigoTech Cloud subscription, every XRechnung and every ZUGFeRD EN 16931 the module generates is validated against the KoSIT rules, which include the EN 16931 ones: a VAT number without prefix shows as BR-CO-09 under Validation Errors and the invoice is not marked Ready to send. On Odoo 17, the published version does not validate.

What to fix

  1. Open the record the message names: your company (supplier) or the customer (customer).
  2. Type the VAT number with the country prefix, no spaces.
  3. For reverse charge or a sale to another EU country, check the customer's number as well.
  4. Generate the file again.

Keep reading

Errors BR-09 and BR-11: seller or buyer address without a country codeBR-09 and BR-11 require the country code in the seller and buyer addresses; BR-08 and BR-10, the address itself. The Odoo 17, 18, 19 and 20 message and what to fill in.Errors BR-E-10, BR-AE-10, BR-IC-10 and BR-G-10: the VAT exemption reasonBR-E-10, BR-AE-10, BR-IC-10, BR-G-10 and BR-O-10 require a VAT exemption reason; BR-S-10 and BR-Z-10 forbid it. How Odoo 17, 18, 19 and 20 set it.XRechnung errors BR-DE-2 to BR-DE-7, BR-DE-27 and BR-DE-28: the seller contactBR-DE-2 to BR-DE-7 require the seller's city, post code, contact point, phone and email in XRechnung. What each rule says and how to meet them in Odoo.
Checked in the module's source code (version 17.0 and 20.0) and the linked sources

Sources