La réforme de la facturation électronique (septembre 2026) impose l'échange de factures en UBL, CII et Factur-X. Au-delà du simple PDF, chaque flux transporte des références métier normalisées (norme EN 16931) indispensables au rapprochement comptable et aux achats.
Parmi elles, le BT-12 — référence du contrat ou numéro de marché — est de plus en plus exigé par les directions financières et les services publics. Pourtant, dans Odoo, cette information reste difficile à exploiter sur l'ensemble des formats, en réception et en envoi.
BT-12 : de quoi parle-t-on ?
Le BT-12 (Contract document reference) identifie le contrat ou le marché auquel se rattache la facture. Il ne doit pas être confondu avec :
- BT-1 — numéro de la facture fournisseur (dans Odoo : champ Référence /
ref, ex. FAC/2026/1654156564) - BT-13 — commande ou engagement juridique (dans Odoo : Document d'origine /
invoice_origin, ex. PO0165164) - BT-10 — référence acheteur ou code service
En XML, le BT-12 se trouve notamment dans :
- UBL :
ContractDocumentReference/ID - CII / Factur-X :
ContractReferencedDocument/IssuerAssignedID
Le constat dans Odoo
Odoo propose déjà des champs issus du module Chorus Pro (l10n_fr_facturx_chorus_pro) :
- Code service → BT-10
- Engagement juridique → BT-13
- Numéro de marché → BT-12
À l'export CII / Factur-X, ces champs sont correctement alimentés. En revanche, à l'export UBL, ils ne sont pris en compte que pour les clients derrière l'endpoint Chorus Pro — et le BT-12 n'est pas exporté en UBL.
À l'import des factures fournisseur, Odoo renseigne déjà le numéro facture (ref) et l'engagement (invoice_origin), mais pas le numéro de marché ni le code service dans les champs dédiés.
Résultat : perte d'information à la réception, ressaisies manuelles et difficultés à automatiser le traitement des factures d'achat — alors que la réforme prévoit trois formats interchangeables.
Le module RoPi : ropi_fr_einvoicing_fr_edi_refs
Bridge Odoo 18 conçu pour combler ce gap en attendant une évolution du core.
Export UBL généralisé
BT-10, BT-12 et BT-13 émis dès que les champs sont renseignés — sans condition d'endpoint Chorus Pro.
Import multi-format
Alimentation automatique des champs depuis UBL, CII et Factur-X à la réception des factures fournisseur.
Contrôle BT-12
Avertissement à l'import si le numéro de marché est absent — sans bloquer la validation comptable.
Règles de réception respectées
Le module préserve la sémantique Odoo validée en comptabilité :
- Numéro facture fournisseur (BT-1) → champ Référence
- Engagement / commande (BT-13) → Document d'origine
- Numéro de marché (BT-12) → Numéro de marché
- Code service (BT-10) → Code service
Cette séparation permet de rapprocher automatiquement les factures avec les bons de commande, tout en conservant la traçabilité du numéro de facture émis par le fournisseur.
Pour qui ?
- DAF et responsables achats : fiabiliser le rapprochement facture / marché / commande
- Services publics et grands comptes : exiger le BT-12 sur les flux entrants
- Intégrateurs Odoo : préparer la conformité FE sans attendre une version majeure
- PME en transition PDP : exploiter les trois formats de la réforme avec un seul modèle de données
Disponibilité
Module bridge Odoo 18 Community, compatible avec l10n_fr_facturx_chorus_pro et account_edi_ubl_cii.
Contribution upstream Odoo en parallèle — le bridge sera retiré après merge du core.