Compte
Français

BR-CO-09: Numéro de TVA sans préfixe pays valide

Règle de base EN 16931 · Erreur · UBL, CII

NormeEN 16931-1 (modèle sémantique européen de la facture électronique)GravitéErreur: la facture est rejetéeSyntaxeUBL, CIITermes métier
  • BT-31 Seller VAT identifier
  • BT-48 Buyer VAT identifier
  • BT-63 Seller tax representative VAT identifier
S'applique àToute facture EN 16931 : Factur-X / ZUGFeRD 2.x (profils EN 16931, EXTENDED, XRECHNUNG), XRechnung, Peppol BIS Billing 3.0 et les CIUS nationales.

Texte officiel de la règle

[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’.

Le texte normatif est en anglais ; il est cité tel quel.

Pourquoi cette erreur apparaît

Le numéro de TVA du vendeur (BT-31), celui de son représentant fiscal (BT-63) et celui de l'acheteur (BT-48) doivent commencer par le code ISO 3166-1 alpha-2 du pays émetteur ; la Grèce peut utiliser EL. La règle contrôle les deux premiers caractères de cac:PartyTaxScheme/cbc:CompanyID lorsque cac:TaxScheme/cbc:ID vaut VAT (UBL), ou de ram:SpecifiedTaxRegistration/ram:ID avec schemeID VA (CII). Elle se déclenche lorsqu'un numéro fiscal national (Steuernummer allemand, SIREN français) est saisi comme numéro de TVA, ou lorsque le préfixe est absent ou en minuscules.

Comment corriger

Saisissez le numéro de TVA intracommunautaire tel qu'il a été attribué, avec son préfixe pays à deux lettres et sans espace, par exemple DE123456789, ATU12345678, NL123456789B01, EL123456789. Un Steuernummer allemand n'est pas un numéro de TVA : en UBL, placez-le dans un cac:PartyTaxScheme distinct avec cac:TaxScheme/cbc:ID = FC (BT-32), en CII dans ram:SpecifiedTaxRegistration/ram:ID avec schemeID="FC". Si la partie n'a pas de numéro de TVA, omettez l'élément TVA plutôt que d'y mettre une valeur fictive.

Exemple (valide)

<cac:PartyTaxScheme>
  <cbc:CompanyID>DE123456789</cbc:CompanyID>
  <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>

Ce que le validateur vérifie

Élément vérifié (contexte):

UBL

//cac:PartyTaxScheme[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']

Test (XPath):

( 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

//ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA']

Test (XPath):

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), ' '))

Vérifier votre facture

Déposez votre XML ou PDF dans le validateur : chaque règle en échec renvoie vers sa page ici. Gratuit, sans compte, le fichier n'est pas conservé.

Vérifier votre facture →

La même vérification par API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Règles liées

Questions fréquentes

Que signifie BR-CO-09 ?

BR-CO-09 est une règle de base en 16931 : 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’.

Ma facture sera-t-elle rejetée à cause de BR-CO-09 ?

Oui. BR-CO-09 est classée « bloquante » ; les validateurs (plateformes agréées, points d'accès Peppol, KoSIT, KSeF) rejettent la facture tant qu'elle n'est pas corrigée.

À quels formats s'applique BR-CO-09 ?

Toute facture EN 16931 : Factur-X / ZUGFeRD 2.x (profils EN 16931, EXTENDED, XRECHNUNG), XRechnung, Peppol BIS Billing 3.0 et les CIUS nationales. Syntaxe : UBL et CII.

Source: EN 16931-1:2017 schematron (CEN TC434, via Peppol BIS 3.0.20). Catalogue généré à partir des jeux de règles officiels le 2026-10-15.