Le texte de chaque règle
Toutes sont bloquantes dans le Schematron de EN 16931 (validation-1.3.17), et Peppol BIS, XRechnung et Factur-X les appliquent de la même façon :
- BR-08 : « An Invoice shall contain the Seller postal address. »
- BR-09 : « The Seller postal address (BG-5) shall contain a Seller country code (BT-40). »
- BR-10 : « An Invoice shall contain the Buyer postal address (BG-8). »
- BR-11 : « The Buyer postal address shall contain a Buyer country code (BT-55). »
- BR-CL-14 : « Country codes in an invoice MUST be coded using ISO code list 3166-1 »
À l'intérieur de l'adresse, les règles de EN 16931 ne demandent que le pays. Certains formats en exigent davantage : XRechnung demande en plus la ville et le code postal du vendeur (BR-DE-3 et BR-DE-4) et de l'acheteur (BR-DE-8 et BR-DE-9).

Ce que vous dit Odoo
Dans les quatre versions, Odoo vérifie BR-09 et BR-11 avant de générer le fichier UBL. Si le pays manque sur votre société ou sur le client, le message est le suivant : « The country is required for the %s. », avec « supplier » ou « customer » à la place du trou. Sur Odoo 17, la vérification se trouve dans l'export Peppol BIS (et dans ceux qui en héritent, comme XRechnung) ; sur 18, 19 et 20, dans la couche commune de EN 16931.
Le message indique quelle fiche ouvrir : « supplier » désigne votre société, celle qui figure sur la facture ; « customer » désigne le contact de facturation du client.
Pourquoi un pays manque dans Odoo
| Situation | Où regarder |
|---|---|
| Société créée à la hâte, sans adresse | Paramètres de la société : rue, ville, code postal et pays. |
| Client importé depuis un tableur | La colonne du pays vide ou saisie à la main au lieu d'être choisie. |
| Facture adressée à un contact enfant | L'adresse de facturation du contact qui figure sur la facture, et pas seulement celle de sa société. |
| Client particulier d'une boutique en ligne | La commande est arrivée avec une adresse sans pays, ou avec un pays absent de la liste. |
Comme le pays dans Odoo se choisit dans une liste et ne se saisit pas, BR-CL-14 ne se présente presque jamais sur une facture Odoo : le code à deux lettres provient du pays lui-même. Si vous le voyez, vérifiez si le fichier a transité par un autre logiciel avant d'arriver chez le client.
Avec notre module XRechnung et ZUGFeRD

Avec le pays, le module ne prévient pas. Si votre société ou le client n'en ont pas, il écrit DE, le code de l'Allemagne, en UBL et en CII, et sa vérification avant génération ne regarde pas ce champ. Le fichier respecte BR-09 et BR-11 et le validateur de KoSIT l'accepte (nous l'avons vérifié), mais l'adresse indique l'Allemagne même si le client se trouve dans un autre pays. Vérifiez le pays de chaque client avant de générer.
Sur Odoo 18, 19 et 20, avec l'abonnement à FlexigoTech Cloud, chaque XRechnung et chaque ZUGFeRD EN 16931 généré par le module est validé avec les règles de KoSIT. Si la ville ou le code postal du client manquent, cela apparaît bel et bien : BR-DE-8 et BR-DE-9 restent sous Validation Errors et la facture n'est pas marquée Ready to send. La version publiée pour Odoo 17 génère les fichiers mais ne les valide pas.
Étapes
- Lisez le message : « supplier » ou « customer ».
- Ouvrez cette fiche et choisissez le pays dans la liste ; complétez la rue, la ville et le code postal, même si EN 16931 ne les exige pas.
- Si vous facturez un contact d'une entreprise, vérifiez l'adresse de ce contact.
- Générez à nouveau le fichier.
À lire aussi
Vérifié dans le code du module (version 17.0 et 20.0) et dans les sources citées
Sources
- Code du module : flexigo_germany_xrechnung 20.0 (446f2f68): lib/generators/ubl_generator.py
- github.com/odoo/odoo/blob/6f00fdadb875342de2d14a179f25431f93cd63c9/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/account_edi_ubl_
- Code du module : flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Code du module : flexigo_germany_xrechnung 20.0 (446f2f68): models/account_move.py
- Code du module : flexigo_germany_xrechnung 17.0 (ad05de8f): __manifest__.py
- github.com/ConnectingEurope/eInvoicing-EN16931/releases/tag/validation-1.3.17
- github.com/itplr-kosit/xrechnung-schematron/releases/tag/v2.6.0
