Technique

Champs obligatoires EN16931 Factur-X : cartographie BT, mapping ERP vers XML CII

10 min de lecture Par FacturX API

Cartographie complète des Business Terms EN16931 obligatoires pour Factur-X : identifiant légal (BT-30), TVA (BT-31), conditions de paiement, coordonnées bancaires. Mapping ERP vers XML CII.

La norme EN16931 définit plus de 160 Business Terms (BT) répartis en Business Groups (BG). Tous ne sont pas obligatoires — la cardinalité varie de “obligatoire” à “optionnel” en passant par “conditionnel”. Mais une facture soumise à une PDP avec un champ obligatoire manquant sera rejetée par la validation Schematron avant même d’atteindre le destinataire.

Ce guide cartographie les champs que les développeurs oublient le plus souvent lors du mapping ERP → XML, et explique comment les renseigner correctement dans un XML CII (Factur-X).

Pour le contexte général de la validation, voir Facturation électronique 2026 : le guide technique complet. Pour comprendre les erreurs Schematron qui en résultent, voir Valider EN16931/Factur-X : XSD vs Schematron, erreurs BR-*.

Structure du modèle EN16931

Le modèle sémantique est organisé en Business Groups (BG) qui regroupent des Business Terms (BT). Chaque BT a un identifiant unique (BT-1, BT-2, etc.), un type de données, et une cardinalité.

Les cardinalités possibles :

CardinalitéSignification
1..1Obligatoire — exactement une occurrence
0..1Optionnel — zéro ou une occurrence
1..nObligatoire — au moins une occurrence
0..nOptionnel — zéro ou plusieurs occurrences

Un champ marqué 1..1 dans EN16931 doit être présent dans le XML pour passer la validation Schematron. Un champ 0..1 peut être absent — mais certaines règles Schematron conditionnelles (BR-CO-, BR-S-) le rendent obligatoire selon le contexte fiscal.

Les Business Groups clés

BG-1 — En-tête de facture

BTNomCard.XPath CII
BT-1Numéro de facture1..1ram:ID
BT-2Date d’émission1..1ram:IssueDateTime/udt:DateTimeString
BT-3Type de facture1..1ram:TypeCode
BT-5Code devise1..1ram:InvoiceCurrencyCode
BT-24Specification identifier1..1ram:ID

Erreurs fréquentes : BT-1 vide ou absent — BT-2 au format JJ/MM/AAAA au lieu de AAAAMMJJ — BT-3 avec un code UNTDID 1001 incorrect (380 = facture, 381 = avoir) — BT-5 absent ou non ISO 4217 — BT-24 avec une URN incorrecte pour le profil.

XPaths complets (depuis rsm:CrossIndustryInvoice) :

BT-1  → rsm:ExchangedDocument/ram:ID
BT-2  → rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString
BT-3  → rsm:ExchangedDocument/ram:TypeCode
BT-5  → …/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode
BT-24 → …/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID

BT-24 — Specification identifier : ce champ est rendu obligatoire par la règle BR-01. Il identifie la spécification à laquelle la facture se conforme (ex: urn:cen.eu:en16931:2017 pour le profil EN16931). Son absence provoque un rejet immédiat.

BT-2 — Format de date : en CII, le format attendu dans udt:DateTimeString est AAAAMMJJ (ex: 20260401) avec l’attribut format="102". C’est une source d’erreur fréquente car les ERP stockent souvent les dates en ISO 8601 (2026-04-01).

BG-4 — Vendeur

BTNomCard.XPath CII
BT-27Nom du vendeur1..1ram:Name
BT-30Identifiant légal vendeur0..1…/ram:SpecifiedLegalOrganization/ram:ID
BT-31Numéro TVA vendeur0..1…/ram:SpecifiedTaxRegistration/ram:ID
BT-35Adresse — ligne 10..1ram:PostalTradeAddress/ram:LineOne
BT-37Ville0..1ram:PostalTradeAddress/ram:CityName
BT-40Code pays1..1ram:PostalTradeAddress/ram:CountryID

Tous les XPaths ci-dessus sont relatifs à ram:SellerTradeParty.

BT-35 et BT-37 : ces champs ont une cardinalité 0..1 dans le noyau EN16931 (optionnels). Cependant, ils sont fortement recommandés et peuvent devenir obligatoires selon le profil Factur-X ou les exigences de la PDP. Ne pas les confondre avec BT-40 (code pays) qui est véritablement 1..1.

Attention BT-30 vs BT-31 : BT-30 est l’identifiant d’enregistrement légal du vendeur. En France, il s’agit du SIRET (schemeID 0002). D’autres pays utilisent d’autres identifiants (ex: numéro de registre du commerce en Belgique, Handelsregisternummer en Allemagne). BT-31 est le numéro de TVA intracommunautaire. Les deux sont marqués 0..1 dans EN16931, mais la règle Schematron BR-CO-26 exige qu’au moins un identifiant vendeur soit présent parmi BT-29, BT-30 et BT-31.

Pour BT-30, le schemeID identifie le registre utilisé. En France, 0002 correspond au répertoire SIRENE (SIRET/SIREN) dans la liste ISO 6523 :

<ram:SellerTradeParty>
  <ram:Name>Ma Société SAS</ram:Name>
  <ram:SpecifiedLegalOrganization>
    <ram:ID schemeID="0002">12345678901234</ram:ID>
  </ram:SpecifiedLegalOrganization>
  <ram:SpecifiedTaxRegistration>
    <ram:ID schemeID="VA">FR12345678901</ram:ID>
  </ram:SpecifiedTaxRegistration>
</ram:SellerTradeParty>

BG-7 — Acheteur

BTNomCard.XPath CII
BT-44Nom de l’acheteur1..1ram:Name
BT-50Adresse — ligne 10..1ram:PostalTradeAddress/ram:LineOne
BT-52Ville0..1ram:PostalTradeAddress/ram:CityName
BT-55Code pays1..1ram:PostalTradeAddress/ram:CountryID

Tous les XPaths ci-dessus sont relatifs à ram:BuyerTradeParty.

BT-50 et BT-52 : comme pour le vendeur (BT-35/BT-37), ces champs sont 0..1 dans EN16931 (optionnels), même s’ils sont fortement recommandés en pratique. Seul BT-55 (code pays) est véritablement obligatoire (1..1).

Le minimum pour l’acheteur est le nom et le code pays. En B2B, l’identifiant légal (BT-47) ou le numéro de TVA (BT-48) est fortement recommandé pour le routage PDP, même si EN16931 ne les rend pas systématiquement obligatoires.

BG-22 — Totaux du document

BTNomCard.XPath CII
BT-106Total HT lignes1..1…/ram:LineTotalAmount
BT-109Total HT1..1ram:TaxBasisTotalAmount
BT-110Total TVA1..1ram:TaxTotalAmount
BT-112Total TTC1..1ram:GrandTotalAmount
BT-115Montant à payer1..1ram:DuePayableAmount

XPaths relatifs à ram:SpecifiedTradeSettlementHeaderMonetarySummation.

BT-110 — Total TVA : ce champ est toujours obligatoire dans le noyau EN16931, y compris pour les factures exonérées de TVA. Dans ce cas, la valeur doit être 0.00. Ne pas confondre “exonéré de TVA” et “TVA non applicable” — dans les deux cas, BT-110 doit être présent.

Ces champs sont les plus contrôlés par Schematron. Les règles BR-CO-10 (somme des lignes = total HT lignes), BR-CO-13 (total HT = lignes + charges − remises), et BR-CO-15 (TTC = HT + TVA) vérifient la cohérence arithmétique. Un écart d’un centime suffit à déclencher un rejet.

BG-23 — Ventilation TVA

BTNomCard.XPath CII
BT-116Base taxable par catégorie1..1ram:BasisAmount
BT-117Montant TVA par catégorie1..1ram:CalculatedAmount
BT-118Code catégorie TVA1..1ram:CategoryCode
BT-119Taux TVAcond.ram:RateApplicablePercent

XPaths relatifs à chaque ram:ApplicableTradeTax (ventilation TVA).

La règle BR-S-05 exige un taux TVA > 0 pour la catégorie “Standard rated” (code S). La règle BR-CO-17 vérifie que BT-117 = BT-116 × BT-119 / 100, arrondi à 2 décimales. Ces deux règles sont parmi les causes de rejet les plus fréquentes.

BG-25 — Lignes de facture

Chaque facture doit contenir au moins une ligne (règle BR-16).

BTNomCard.XPath CII
BT-126Identifiant de ligne1..1…/ram:LineID
BT-129Quantité facturée1..1ram:BilledQuantity
BT-130Unité de mesure1..1ram:BilledQuantity/@unitCode
BT-131Montant net de ligne1..1ram:LineTotalAmount
BT-146Prix unitaire net1..1ram:ChargeAmount
BT-151Code catégorie TVA1..1ram:CategoryCode
BT-153Nom de l’article1..1ram:Name

BT-126 : XPath complet ram:AssociatedDocumentLineDocument/ram:LineID.

BT-130 — Unité de mesure : doit être un code UN/ECE Rec 20 ou Rec 21 (ex: C62 = unité, HUR = heure, KGM = kilogramme). Les ERP utilisent souvent des labels en clair (“pièce”, “heure”) qu’il faut mapper vers les codes normalisés.

Les 10 champs les plus souvent manquants

En analysant les erreurs Schematron les plus fréquentes, voici les champs que les intégrations ERP oublient le plus souvent :

RangBTErreur SchematronCause ERP typique
1BT-5 (devise)BR-05Pas configuré dans les paramètres société
2BT-30 ou BT-31 (id vendeur)BR-CO-26SIRET/TVA dans un champ libre non mappé
3BT-40 (pays vendeur)BR-09Adresse incomplète dans la fiche société
4BT-130 (unité de mesure)BR-23Label en clair au lieu du code UN/ECE
5BT-2 (date)Format errorDate au format local, pas AAAAMMJJ
6BT-3 (type)BR-04Code absent ou code ERP interne non mappé
7BT-118 (catégorie TVA)BR-S-01Code TVA ERP vs code UNCL 5305
8BT-119 (taux TVA)BR-S-05Taux absent pour catégorie S
9BT-151 (catégorie TVA ligne)BR-S-01Même problème que BT-118, au niveau ligne
10BT-115 (montant à payer)BR-CO-16Calculé côté ERP mais pas exporté dans le XML

Mapping ERP → XML : méthodologie

Étape 1 : Inventaire des champs ERP

Pour chaque champ obligatoire EN16931, identifier dans votre ERP :

  • la donnée est stockée (table, colonne, relation)
  • Sous quel format (date ISO vs locale, code interne vs code normalisé)
  • Si elle existe (certains champs EN16931 n’ont pas d’équivalent natif dans l’ERP)

Étape 2 : Table de correspondance

Créer une table de mapping explicite. Exemple pour les champs vendeur :

BT EN16931Champ ERP (exemple Odoo)Transformation
BT-27 (nom vendeur)res.company.nameAucune
BT-30 (identifiant légal)res.company.siretAjouter schemeID=“0002” (France)
BT-31 (TVA)res.company.vatAjouter schemeID=“VA”
BT-35 (adresse)res.company.streetAucune
BT-40 (pays)res.company.country_id.codeVérifier ISO 3166-1 alpha-2

Étape 3 : Transformations de format

Les transformations les plus courantes :

TypeERPXML CII attendu
Date2026-04-01 (ISO 8601)20260401 + format="102"
DeviseEUR ou EUR (ISO 4217 alpha-3)
Unité"pièce", "unité"C62 (UN/ECE Rec 20)
Pays"France", "FR"FR (ISO 3166-1 alpha-2)
Type facture"Facture", "INV"380 (UNTDID 1001)
Type avoir"Avoir", "CN"381 (UNTDID 1001)
Catégorie TVA"Normal", "20%"S (UNCL 5305)

Étape 4 : Validation en boucle

Après chaque ajustement de mapping, valider le XML produit contre les trois couches : XSD, Schematron EN16931, et (pour Factur-X) la conformité PDF/A-3. Les erreurs Schematron sont les plus informatives — elles indiquent exactement quel BT pose problème.

Conditions de paiement et coordonnées bancaires

BG-16 — Instructions de paiement

BTNomCardinalitéRemarque
BT-81Moyen de paiement1..1Code UNTDID 4461 (ex: 30 = virement, 58 = SEPA)
BT-82Texte paiement0..1Texte libre (conditions, délais)
BT-84IBANconditionnelObligatoire si moyen = virement
BT-86BICconditionnelRecommandé pour les virements internationaux

BT-81 — Code moyen de paiement : les ERP stockent souvent un label (“Virement bancaire”, “Prélèvement SEPA”) qu’il faut convertir en code UNTDID 4461. Les codes les plus utilisés en France :

CodeSignification
30Virement
31Virement demandé
42Paiement à un compte bancaire
48Carte bancaire
49Prélèvement
58Virement SEPA
59Prélèvement SEPA

BG-20 — Conditions de paiement

BTNomCardinalitéXPath CII
BT-9Date d’échéance0..1ram:DueDateDateTime/udt:DateTimeString
BT-20Conditions en texte libre0..1ram:Description (dans SpecifiedTradePaymentTerms)

BT-9 et BT-20 sont optionnels en EN16931 mais fortement attendus par les PDP et les destinataires. Une facture sans date d’échéance ni conditions de paiement est techniquement valide mais opérationnellement incomplète.

Checklist de mapping

CHAMPS OBLIGATOIRES EN16931 — VÉRIFICATION MAPPING
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

En-tête
☐ BT-1  Numéro de facture — non vide
☐ BT-2  Date — format AAAAMMJJ + format="102"
☐ BT-3  Type — code UNTDID 1001 (380/381)
☐ BT-5  Devise — ISO 4217 alpha-3
☐ BT-24 Specification identifier — URN du profil (BR-01)

Vendeur (BG-4)
☐ BT-27 Nom — non vide
☐ BT-30 ou BT-31 — au moins un identifiant (BR-CO-26)
☐ BT-35 Adresse ligne 1 (0..1 EN16931, recommandé)
☐ BT-37 Ville (0..1 EN16931, recommandé)
☐ BT-40 Code pays ISO 3166

Acheteur (BG-7)
☐ BT-44 Nom — non vide
☐ BT-50 Adresse ligne 1 (0..1 EN16931, recommandé)
☐ BT-52 Ville (0..1 EN16931, recommandé)
☐ BT-55 Code pays ISO 3166

Totaux (BG-22)
☐ BT-106 Total HT lignes
☐ BT-109 Total HT
☐ BT-110 Total TVA — toujours requis (0.00 si exonéré)
☐ BT-112 Total TTC
☐ BT-115 Montant à payer
☐ Cohérence arithmétique (BR-CO-10, BR-CO-13, BR-CO-15)

TVA (BG-23)
☐ Au moins une ventilation TVA
☐ BT-116 Base taxable
☐ BT-117 Montant TVA
☐ BT-118 Code catégorie (UNCL 5305)
☐ BT-119 Taux — présent si catégorie S (BR-S-05)
☐ BR-CO-17 vérifiée (BT-117 = BT-116 × BT-119 / 100)

Lignes (BG-25)
☐ Au moins une ligne (BR-16)
☐ BT-126 Identifiant de ligne
☐ BT-129 Quantité
☐ BT-130 Unité — code UN/ECE Rec 20 (pas de label)
☐ BT-131 Montant net
☐ BT-146 Prix unitaire
☐ BT-151 Code catégorie TVA
☐ BT-153 Nom article

Paiement (BG-16)
☐ BT-81 Moyen de paiement — code UNTDID 4461
☐ BT-84 IBAN si virement

Ressources

#en16931 #factur-x #business-terms #mapping #erp #champs-obligatoires