Facture électronique

Erreurs de validation EN 16931 et CTC-FR : comment les corriger

33 erreurs de validation de facture électronique, classées dans l'ordre où les corriger. Pour chacune : la valeur fautive, la valeur attendue, et les règles qu'elle lève réellement sur les artefacts officiels.

Page de référence Cette page approfondit un point précis de la réforme. Le parcours complet, avec vos dates selon votre taille et votre plan d'action, est dans le guide de la facture électronique.

L'essentiel en 5 points

  • Trois couches de contrôle : la structure (XSD), la norme européenne EN 16931, puis les règles françaises CTC-FR.
  • Une erreur en lève souvent plusieurs. Un total faux en fait tomber un deuxième : corrigez la première règle, relancez.
  • Conforme EN 16931 ne veut pas dire accepté en France. Cadre de facturation, SIREN, adresses électroniques et mentions sont contrôlés en plus.
  • Les totaux se recalculent, le reste ne se devine pas. Un SIREN ou une adresse inventés passent la règle et faussent la facture.
  • Calculez en décimal, jamais en flottant, et une seule fois : le XML, le PDF et la comptabilité doivent lire le même chiffre.

Sommaire

  1. Lire un rapport de validation
  2. Dans quel ordre corriger
  3. Les 33 erreurs en un tableau
  4. En-tête et cadre de facturation
  5. Lignes de facture
  6. Listes de codes
  7. Décimales
  8. TVA
  9. Totaux
  10. Identifiants et adressage
  11. Mentions françaises
  12. Paiement, dates et avoirs
  13. Bonnes pratiques d'implémentation
  14. Questions fréquentes
1

Lire un rapport de validation

Couche Identifiants Ce qu'elle contrôle
Structure (XSD) messages lxml, sans code Balises, ordre, types. Un montant à virgule ou un taux « 20% » échouent ici.
EN 16931 BR-, BR-CO-, BR-DEC-, BR-CL-, BR-S-…, UBL-, CII- Données obligatoires, cohérence des montants, décimales, listes de codes, catégories de TVA, syntaxe.
CTC-FR BR-FR-, BR-FR-CO-, BR-FR-DEC-, BR-FR-MV- Cadre de facturation, SIREN et SIRET, adressage, mentions, types et taux admis en France.

Les règles françaises arrivent sous une forme composite, par exemple BR-FR-05_BT-22-3 : la racine (BR-FR-05) désigne la règle, le suffixe le champ en cause. Les artefacts exécutés ici sont le Schematron EN 16931 1.3.16 (223 règles) et l'artefact CTC-FR 1.4.0.01 du FNFE-MPE (57 règles).

2

Dans quel ordre corriger

  1. La structure. Tant que le XSD échoue, les règles métier ne veulent rien dire.
  2. L'en-tête et les lignes. Ce sont les données d'entrée de tous les calculs.
  3. La TVA, ventilation par ventilation.
  4. Les totaux, du premier au dernier. Puis relancez la validation.

Une seule valeur fausse peut lever plusieurs règles. Mesuré sur notre validateur, en altérant un seul élément d'une facture conforme :

Erreur introduite Règles levées
Numéro de facture avec des espaces BR-FR-01, BR-FR-02
Ligne sans prix net BR-26, BR-27
Devise mal codée BR-CL-04, BR-CO-15, BR-FR-CO-12
Montant à trois décimales BR-CO-10, BR-DEC-23, BR-FR-DEC-01, UBL-DT-01
Base de TVA différente de la somme des lignes BR-CO-17, BR-S-08, BR-S-09
Taux de TVA hors de la liste française BR-CO-17, BR-FR-16, BR-S-09
Catégorie de TVA de ligne vide BR-CL-18, BR-FR-15, BR-S-08
Somme des lignes (BT-106) fausse BR-CO-10, BR-CO-13
Total hors TVA (BT-109) faux BR-CO-13, BR-CO-15
Total de TVA (BT-110) différent des ventilations BR-CO-14, BR-CO-15
Total TTC (BT-112) faux BR-CO-15, BR-CO-16
SIREN du vendeur absent ou mal formé BR-FR-10, BR-FR-32-LEGALID
3

Les erreurs en un tableau

Règle Erreur
BR-01 Identifiant de spécification absent
BR-FR-08 Cadre de facturation (BT-23) absent ou inconnu
BR-FR-02 Numéro de facture avec des espaces
BR-FR-03 Date hors de la plage 2000-2099
BR-25 Ligne sans nom d'article
BR-26 Ligne sans prix net
BR-23 Quantité sans unité de mesure
BR-CL-23 Unité de mesure inventée
BR-CL-04 Devise mal codée
BR-CL-03 Attribut currencyID invalide sur un montant
BR-FR-04 Type de document valable en Europe, refusé en France
BR-DEC-23 Montant à trois décimales
BR-S-08 Base de TVA différente de la somme des lignes
BR-CO-14 TVA fausse d'un centime : seule BR-CO-14 la voit
BR-FR-16 Taux de TVA hors de la liste française
BR-CL-18 Catégorie de TVA de ligne vide
BR-S-02 Ligne au taux normal sans numéro de TVA du vendeur
BR-CO-09 Numéro de TVA sans préfixe pays
BR-CO-10 Somme des lignes (BT-106) fausse
BR-CO-13 Total hors TVA (BT-109) faux
BR-CO-14 Total de TVA (BT-110) différent des ventilations
BR-CO-15 Total TTC (BT-112) faux
BR-CO-16 Net à payer (BT-115) faux
BR-FR-10 SIREN du vendeur absent ou mal formé
BR-FR-09 SIRET qui ne commence pas par le SIREN
BR-FR-12 Adresse électronique de l'acheteur (BT-49) absente
BR-63 Adresse électronique sans schéma
BR-FR-21 Facture B2B : adresse de l'acheteur hors schéma 0225
BR-FR-05 Mention d'escompte (AAB) absente
BR-FR-06 Mention présente deux fois
BR-61 Virement sans IBAN
BR-FR-CO-07 Échéance antérieure à la date de facture
BR-FR-CO-05 Avoir sans référence à la facture d'origine
4

En-tête et cadre de facturation

Les données qui disent quel document on lit et selon quelles règles.

BR-01 : Identifiant de spécification absent

BT-24 dit à quelle norme la facture se déclare conforme. Sans lui, le destinataire ne sait pas quelles règles appliquer.

Reçu

Élément absent

Attendu

<cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>

Corriger : Renseignez urn:cen.eu:en16931:2017 (ou l'URN de votre profil Factur-X) dans CustomizationID en UBL, GuidelineSpecifiedDocumentContextParameter en CII.

Règles levées par cette seule erreur : BR-01

BR-FR-08 : Cadre de facturation (BT-23) absent ou inconnu

La France exige le cadre de facturation : B1 biens, S1 services, M1 mixte, et leurs variantes (2 facture déjà payée, 4 facture définitive après acompte, 8 multi-vendeurs...). Une facture conforme EN 16931 sans BT-23 est refusée en France.

Reçu

Élément absent

Attendu

<cbc:ProfileID>S1</cbc:ProfileID>

Corriger : Portez le cadre dans ProfileID en UBL, dans BusinessProcessSpecifiedDocumentContextParameter en CII. Choisissez-le d'après l'opération, jamais par défaut.

Piège : Ne confondez pas cadre (BT-23) et profil (BT-24) : ce sont deux informations distinctes, portées par deux éléments distincts.

Règles levées par cette seule erreur : BR-FR-08

BR-FR-02 : Numéro de facture avec des espaces

Le numéro de facture n'admet que lettres, chiffres et - + _ /, sans espace en tête, en fin ni doublé.

Reçu

<cbc:ID>EX 2026  001</cbc:ID>

Attendu

<cbc:ID>EX-2026-001</cbc:ID>

Corriger : Normalisez le numéro à la source, dans la séquence de numérotation, pas à l'export : il sert à l'unicité de la facture.

Règles levées par cette seule erreur : BR-FR-01, BR-FR-02

BR-FR-03 : Date hors de la plage 2000-2099

Les dates sont contrôlées entre 2000 et 2099. Une date à 1999 ou à 2206 trahit presque toujours une conversion de format ratée.

Reçu

<cbc:IssueDate>1999-10-01</cbc:IssueDate>

Attendu

<cbc:IssueDate>2026-10-01</cbc:IssueDate>

Corriger : Vérifiez le format : AAAA-MM-JJ en UBL, AAAAMMJJ avec format="102" en CII.

Règles levées par cette seule erreur : BR-FR-03

5

Lignes de facture

Chaque ligne porte au minimum un identifiant, une quantité et son unité, un montant net, un nom d'article et un prix net.

BR-25 : Ligne sans nom d'article

Chaque ligne doit nommer ce qui est facturé (BT-153).

Reçu

Élément absent

Attendu

<cbc:Name>Audit de la chaîne de facturation</cbc:Name>

Corriger : Reprenez le libellé de l'article ou de la prestation. Un code produit seul ne suffit pas.

Règles levées par cette seule erreur : BR-25

BR-26 : Ligne sans prix net

Le prix unitaire net (BT-146) est obligatoire, même quand quantité et montant de ligne suffiraient à le recalculer.

Reçu

Élément absent

Attendu

<cac:Price>
  <cbc:PriceAmount currencyID="EUR">650.00</cbc:PriceAmount>
</cac:Price>

Corriger : Émettez le bloc Price sur chaque ligne. Sans lui, BR-27 (prix non négatif) tombe aussi.

Règles levées par cette seule erreur : BR-26, BR-27

BR-23 : Quantité sans unité de mesure

Le XSD accepte une quantité sans unité, la norme non : BT-130 est obligatoire.

Reçu

<cbc:InvoicedQuantity>2</cbc:InvoicedQuantity>

Attendu

<cbc:InvoicedQuantity unitCode="DAY">2</cbc:InvoicedQuantity>

Corriger : Ajoutez l'attribut unitCode. C62 (unité) convient quand rien de plus précis ne s'applique.

Règles levées par cette seule erreur : BR-23

6

Listes de codes

Devise, unité, type de document : des valeurs prises dans des listes officielles, jamais traduites ni abrégées.

BR-CL-23 : Unité de mesure inventée

Les unités suivent la recommandation 20 de l'UN/ECE. « JOUR », « H » ou « forfait » n'en font pas partie.

Reçu

<cbc:InvoicedQuantity unitCode="JOUR">2</cbc:InvoicedQuantity>

Attendu

<cbc:InvoicedQuantity unitCode="DAY">2</cbc:InvoicedQuantity>

Corriger : Utilisez le code : DAY (jour), HUR (heure), C62 (unité), KGM (kilogramme), LTR (litre). Traduisez dans votre mapping, jamais dans le XML final.

Règles levées par cette seule erreur : BR-CL-23

BR-CL-04 : Devise mal codée

La devise suit l'ISO 4217 sur trois lettres. « EURO » lève trois règles d'un coup, car la facture est alors lue comme émise en devise étrangère.

Reçu

<cbc:DocumentCurrencyCode>EURO</cbc:DocumentCurrencyCode>

Attendu

<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>

Corriger : Écrivez EUR. Contrôlez aussi chaque attribut currencyID des montants (BR-CL-03).

Règles levées par cette seule erreur : BR-CL-04, BR-CO-15, BR-FR-CO-12

BR-CL-03 : Attribut currencyID invalide sur un montant

Chaque montant porte sa devise en attribut. Une seule valeur fausse suffit.

Reçu

<cbc:PayableAmount currencyID="EURO">2208.00</cbc:PayableAmount>

Attendu

<cbc:PayableAmount currencyID="EUR">2208.00</cbc:PayableAmount>

Corriger : Générez l'attribut depuis la même variable que BT-5, pour tous les montants.

Règles levées par cette seule erreur : BR-CL-03

BR-FR-04 : Type de document valable en Europe, refusé en France

Le code 326 (facture partielle) existe dans la liste UNTDID 1001 : la norme européenne l'accepte. La France n'en autorise que seize : 380, 389, 393, 501, 386, 500, 384, 471, 472, 473, 261, 262, 381, 396, 502, 503.

Reçu

<cbc:InvoiceTypeCode>326</cbc:InvoiceTypeCode>

Attendu

<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>

Corriger : Prenez 380 pour une facture, 381 pour un avoir, 386 pour un acompte, 384 pour une rectificative. Le type pilote d'autres règles : ne le changez pas pour faire passer un contrôle.

Piège : Un code hors liste UNTDID (999) lève en plus BR-CL-01.

Règles levées par cette seule erreur : BR-FR-04

7

Décimales

Deux décimales au plus sur les montants. C'est la règle que casse un calcul fait en virgule flottante.

BR-DEC-23 : Montant à trois décimales

Les montants n'ont pas plus de deux décimales. Le résultat brut d'une multiplication sérialisé tel quel lève quatre règles, dont un faux total.

Reçu

<cbc:LineExtensionAmount currencyID="EUR">1300.005</cbc:LineExtensionAmount>

Attendu

<cbc:LineExtensionAmount currencyID="EUR">1300.00</cbc:LineExtensionAmount>

Corriger : Arrondissez au centime avant d'émettre, avec un type décimal (Decimal en Python, BigDecimal en Java), jamais un flottant.

Piège : Les prix unitaires et les quantités ont d'autres plafonds (six et quatre décimales côté CTC-FR) : n'arrondissez pas tout à deux.

Règles levées par cette seule erreur : BR-CO-10, BR-DEC-23, BR-FR-DEC-01, UBL-DT-01

8

TVA

La ventilation se calcule par couple catégorie et taux. Une erreur de ligne y remonte toujours.

BR-S-08 : Base de TVA différente de la somme des lignes

Pour chaque couple catégorie et taux, la base (BT-116) égale la somme des lignes, plus les frais, moins les remises de même catégorie.

Reçu

<cbc:TaxableAmount currencyID="EUR">1800.00</cbc:TaxableAmount>

Attendu

<cbc:TaxableAmount currencyID="EUR">1840.00</cbc:TaxableAmount>

Corriger : Groupez les lignes sur le couple (catégorie, taux), jamais sur le taux seul, et rattachez remises et frais de document à leur groupe avant de calculer.

Règles levées par cette seule erreur : BR-CO-17, BR-S-08, BR-S-09

BR-CO-14 : TVA fausse d'un centime : seule BR-CO-14 la voit

BR-S-09 et BR-CO-17 tolèrent un écart inférieur à une unité de devise sur le calcul base × taux. Une ventilation fausse d'un centime passe donc ces règles, et n'est attrapée que par la somme exacte des ventilations (BR-CO-14).

Reçu

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="EUR">1840.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="EUR">367.99</cbc:TaxAmount>

Attendu

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="EUR">1840.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="EUR">368.00</cbc:TaxAmount>

Corriger : Calculez la TVA par ventilation, puis le total comme somme des ventilations, jamais l'inverse.

Règles levées par cette seule erreur : BR-CO-14

BR-FR-16 : Taux de TVA hors de la liste française

Seuls les taux en vigueur en France sont admis. Un taux de 19 % lève BR-FR-16 et, la TVA ne correspondant plus, les règles de calcul.

Reçu

<cbc:Percent>19</cbc:Percent>

Attendu

<cbc:Percent>20</cbc:Percent>

Corriger : Reprenez le taux de la fiche article. Écrivez 20, jamais « 20% » ni 0.20.

Piège : « 20% » n'est pas un nombre : le fichier est invalide au XSD avant toute règle métier.

Règles levées par cette seule erreur : BR-CO-17, BR-FR-16, BR-S-09

BR-CL-18 : Catégorie de TVA de ligne vide

La catégorie (BT-151) ne se déduit pas du taux : 0 % peut être Z, E, AE, K, G ou O, et chacune a ses obligations.

Reçu

<cac:ClassifiedTaxCategory>
  <cbc:ID></cbc:ID>

Attendu

<cac:ClassifiedTaxCategory>
  <cbc:ID>S</cbc:ID>

Corriger : Portez la catégorie dans la fiche article ou le paramétrage fiscal, et émettez-la sur chaque ligne.

Règles levées par cette seule erreur : BR-CL-18, BR-FR-15, BR-S-08

BR-S-02 : Ligne au taux normal sans numéro de TVA du vendeur

Une facture qui porte de la TVA au taux normal doit identifier le vendeur à la TVA (BT-31).

Reçu

Élément absent

Attendu

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

Corriger : Émettez PartyTaxScheme avec le numéro de TVA intracommunautaire, préfixe pays compris.

Règles levées par cette seule erreur : BR-S-02

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

Un numéro de TVA commence par le code pays ISO (FR, DE...), la Grèce utilisant EL.

Reçu

<cbc:CompanyID>88100000009</cbc:CompanyID>

Attendu

<cbc:CompanyID>FR88100000009</cbc:CompanyID>

Corriger : Stockez le numéro complet, préfixe compris. Ne le reconstituez pas à l'export.

Règles levées par cette seule erreur : BR-CO-09

9

Totaux

Les totaux dérivent les uns des autres : une erreur se propage vers le bas de la chaîne. Corrigez le premier total faux, puis relancez.

Total Formule UBL CII / Factur-X
BT-106 Somme des lignes Σ BT-131 (BR-CO-10) LegalMonetaryTotal/LineExtensionAmount SpecifiedTradeSettlementHeaderMonetarySummation/LineTotalAmount
BT-109 Total hors TVA BT-106 - BT-107 + BT-108 (BR-CO-13) LegalMonetaryTotal/TaxExclusiveAmount …MonetarySummation/TaxBasisTotalAmount
BT-110 Total de TVA Σ BT-117 (BR-CO-14) TaxTotal/TaxAmount …MonetarySummation/TaxTotalAmount
BT-112 Total TTC BT-109 + BT-110 (BR-CO-15) LegalMonetaryTotal/TaxInclusiveAmount …MonetarySummation/GrandTotalAmount
BT-115 Net à payer BT-112 - BT-113 + BT-114 (BR-CO-16) LegalMonetaryTotal/PayableAmount …MonetarySummation/DuePayableAmount

BR-CO-10 : Somme des lignes (BT-106) fausse

BT-106 doit égaler la somme exacte des montants nets de ligne (BT-131). Un total repris de l'ERP, arrondi autrement, lève aussi BR-CO-13.

Reçu

<cbc:LineExtensionAmount currencyID="EUR">1839.99</cbc:LineExtensionAmount>

Attendu

<cbc:LineExtensionAmount currencyID="EUR">1840.00</cbc:LineExtensionAmount>

Corriger : Recalculez BT-106 depuis les lignes émises, au centime, au lieu de le recopier d'un total comptable.

Règles levées par cette seule erreur : BR-CO-10, BR-CO-13

BR-CO-13 : Total hors TVA (BT-109) faux

BT-109 = somme des lignes - remises de document + frais de document. Une erreur ici se propage : le TTC devient faux à son tour (BR-CO-15).

Reçu

<cbc:TaxExclusiveAmount currencyID="EUR">1841.00</cbc:TaxExclusiveAmount>

Attendu

<cbc:TaxExclusiveAmount currencyID="EUR">1840.00</cbc:TaxExclusiveAmount>

Corriger : Corrigez BT-109, puis recalculez le TTC et le net à payer dans la foulée.

Règles levées par cette seule erreur : BR-CO-13, BR-CO-15

BR-CO-14 : Total de TVA (BT-110) différent des ventilations

BT-110 égale la somme des montants de TVA par ventilation (BT-117), au centime.

Reçu

<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">370.00</cbc:TaxAmount>

Attendu

<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">368.00</cbc:TaxAmount>

Corriger : Calculez BT-110 comme somme des ventilations émises, jamais séparément.

Règles levées par cette seule erreur : BR-CO-14, BR-CO-15

BR-CO-15 : Total TTC (BT-112) faux

BT-112 = BT-109 + BT-110. Un TTC faux rend faux le net à payer (BR-CO-16).

Reçu

<cbc:TaxInclusiveAmount currencyID="EUR">2209.00</cbc:TaxInclusiveAmount>

Attendu

<cbc:TaxInclusiveAmount currencyID="EUR">2208.00</cbc:TaxInclusiveAmount>

Corriger : Dérivez le TTC des deux totaux déjà émis, sans le recalculer depuis les lignes.

Règles levées par cette seule erreur : BR-CO-15, BR-CO-16

BR-CO-16 : Net à payer (BT-115) faux

BT-115 = TTC - montant déjà payé (BT-113) + arrondi (BT-114). Erreur classique après un acompte : on retire l'acompte du TTC au lieu de le déclarer en BT-113.

Reçu

<cbc:PayableAmount currencyID="EUR">2200.00</cbc:PayableAmount>

Attendu

<cbc:PayableAmount currencyID="EUR">2208.00</cbc:PayableAmount>

Corriger : Gardez le TTC entier, portez l'acompte en BT-113 et laissez BT-115 en découler.

Règles levées par cette seule erreur : BR-CO-16

10

Identifiants et adressage

Règles françaises pour la plupart : SIREN, SIRET et adresses électroniques, qui servent à acheminer la facture.

BR-FR-10 : SIREN du vendeur absent ou mal formé

Le SIREN du vendeur (BT-30, schéma 0002) est obligatoire, sur exactement neuf chiffres. BR-FR-32 contrôle la même longueur sur tout identifiant 0002.

Reçu

<cbc:CompanyID schemeID="0002">10000000</cbc:CompanyID>

Attendu

<cbc:CompanyID schemeID="0002">100000009</cbc:CompanyID>

Corriger : Stockez le SIREN sans espace ni point. Un SIREN à huit chiffres vient souvent d'un zéro de tête perdu dans un tableur.

Règles levées par cette seule erreur : BR-FR-10, BR-FR-32-LEGALID

BR-FR-09 : SIRET qui ne commence pas par le SIREN

Un SIRET (schéma 0009) a quatorze chiffres et commence par le SIREN de la même entité.

Reçu

<cbc:ID schemeID="0009">98765432100015</cbc:ID>

Attendu

<cbc:ID schemeID="0009">10000000900015</cbc:ID>

Corriger : Contrôlez le préfixe dans le référentiel tiers. Un SIRET d'une autre société du groupe est l'erreur habituelle.

Règles levées par cette seule erreur : BR-FR-09

BR-FR-12 : Adresse électronique de l'acheteur (BT-49) absente

La France rend obligatoires les adresses électroniques des deux parties (BT-49 acheteur, BT-34 vendeur avec BR-FR-13). C'est par elles que les plateformes acheminent la facture.

Reçu

Élément absent

Attendu

<cbc:EndpointID schemeID="0002">200000008</cbc:EndpointID>

Corriger : Reprenez l'adresse publiée à l'annuaire de la facturation électronique. Ne la fabriquez pas : une adresse inventée passe la règle et fait échouer l'acheminement.

Règles levées par cette seule erreur : BR-FR-12

BR-63 : Adresse électronique sans schéma

Une adresse électronique sans attribut schemeID ne dit pas comment la lire.

Reçu

<cbc:EndpointID>200000008</cbc:EndpointID>

Attendu

<cbc:EndpointID schemeID="0002">200000008</cbc:EndpointID>

Corriger : Ajoutez le schéma : 0225 pour une adresse de l'annuaire français, 0002 pour un SIREN.

Règles levées par cette seule erreur : BR-63

BR-FR-21 : Facture B2B : adresse de l'acheteur hors schéma 0225

Dès que la note BAR vaut B2B, BT-49 doit commencer par le SIREN de l'acheteur et porter le schéma 0225. Le même fichier, sans note BAR, passait.

Reçu

<cbc:Note>#BAR#B2B</cbc:Note>
<cbc:EndpointID schemeID="0002">200000008</cbc:EndpointID>

Attendu

<cbc:EndpointID schemeID="0225">200000008</cbc:EndpointID>

Corriger : Passez le schéma à 0225 et reprenez l'adresse de l'annuaire, qui commence par le SIREN.

Piège : BR-FR-20 n'admet que B2B, B2BINT, B2C, OUTOFSCOPE et ARCHIVEONLY comme valeur de note BAR.

Règles levées par cette seule erreur : BR-FR-21

11

Mentions françaises

Les mentions légales du code de commerce deviennent des notes codées.

BR-FR-05 : Mention d'escompte (AAB) absente

Trois notes codées sont obligatoires en France : PMT (indemnité de 40 € pour frais de recouvrement), PMD (pénalités de retard) et AAB (escompte, ou son absence).

Reçu

Élément absent

Attendu

<cbc:Note>#AAB#Escompte pour paiement anticipé : néant.</cbc:Note>

Corriger : Ajoutez la note, préfixée #AAB# en UBL, avec SubjectCode AAB en CII. « Néant » est une valeur légitime : l'absence d'escompte se déclare.

Règles levées par cette seule erreur : BR-FR-05

BR-FR-06 : Mention présente deux fois

Chaque code de note (PMT, PMD, AAB, TXD) n'apparaît qu'une fois. Un modèle qui ajoute ses mentions par défaut à celles du dossier client produit le doublon.

Reçu

<cbc:Note>#PMT#Frais de recouvrement : indemnité forfaitaire de 40 euros...</cbc:Note>
<cbc:Note>#PMT#Indemnité de 40 euros.</cbc:Note>

Attendu

<cbc:Note>#PMT#Frais de recouvrement : indemnité forfaitaire de 40 euros...</cbc:Note>

Corriger : Fusionnez les textes dans une seule note par code.

Règles levées par cette seule erreur : BR-FR-06

12

Paiement, dates et avoirs

Les règles qui croisent deux champs : moyen de paiement et compte, échéance et date, avoir et facture d'origine.

BR-61 : Virement sans IBAN

Avec un moyen de paiement par virement (codes 30, 58), le compte du bénéficiaire (BT-84) est obligatoire.

Reçu

Élément absent

Attendu

<cac:PayeeFinancialAccount>
  <cbc:ID>FR7630006000011234567890189</cbc:ID>
</cac:PayeeFinancialAccount>

Corriger : Émettez l'IBAN. S'il n'est pas connu, ne déclarez pas un virement.

Règles levées par cette seule erreur : BR-61

BR-FR-CO-07 : Échéance antérieure à la date de facture

BT-9 ne peut précéder BT-2, sauf acompte (386, 500, 503) ou facture déjà payée (cadres B2, S2, M2).

Reçu

<cbc:DueDate>2026-09-30</cbc:DueDate>

Attendu

<cbc:DueDate>2026-10-31</cbc:DueDate>

Corriger : Calculez l'échéance depuis la date de facture et les conditions de paiement. Ne supprimez pas BT-9 pour faire taire la règle.

Règles levées par cette seule erreur : BR-FR-CO-07

BR-FR-CO-05 : Avoir sans référence à la facture d'origine

Un avoir (261, 381, 396, 502, 503) cite la facture qu'il corrige : numéro (BT-25) et date (BT-26), en en-tête ou sur chaque ligne.

Reçu

Élément absent

Attendu

<cac:BillingReference>
  <cac:InvoiceDocumentReference>
    <cbc:ID>EX-2026-001</cbc:ID>
    <cbc:IssueDate>2026-10-01</cbc:IssueDate>
  </cac:InvoiceDocumentReference>
</cac:BillingReference>

Corriger : Émettez BillingReference en UBL, InvoiceReferencedDocument en CII. Un avoir n'est jamais une facture à montants négatifs.

Règles levées par cette seule erreur : BR-FR-CO-05

Bonnes pratiques d'implémentation

  • Un modèle de facture, puis le XML. Construisez les données (BT, BG) et contrôlez-les avant de sérialiser en UBL ou en CII. Un correctif XSLT sur le XML final masque l'erreur sans la corriger.
  • Un seul ordre de calcul : lignes, remises et frais, total hors TVA, ventilations, total de TVA, TTC, payé et arrondi, net à payer.
  • Un type décimal, arrondi au centime à chaque montant émis. Le flottant produit les 0,01 d'écart que BR-CO-10 et BR-CO-14 refusent.
  • Les données d'identité viennent du référentiel : SIREN, adresses électroniques et catégories de TVA se corrigent dans la fiche tiers ou article, jamais à l'export.
  • Notez la version des règles avec chaque diagnostic. Les artefacts évoluent, et une plateforme peut exécuter une autre version que votre outil.

Méthode et sources

Chaque exemple part de la facture UBL « facture simple » des exemples de factures à télécharger, conforme EN 16931 et CTC-FR, dont on altère un seul élément. Le fichier altéré passe dans le validateur UBL, et les règles affichées sont celles qu'il lève. Ce contrôle est rejoué automatiquement à chaque mise à jour du site.

  • Schematron EN 16931 1.3.16, CEN / ConnectingEurope (dépôt eInvoicing-EN16931), licence EUPL 1.2.
  • Règles CTC-FR 1.4.0.01, FNFE-MPE (dépôt France_RFE), licence Apache 2.0, implémentant la norme AFNOR XP Z12-012.

Page à jour au 11 octobre 2026. Les messages et numéros de règles peuvent changer à chaque version des artefacts.

Partager
Citer cette page

Erreurs de validation EN 16931 et CTC-FR : les corriger, https://www.cabinetdigital.fr/facture-electronique/erreurs-de-validation/

Questions fréquentes

Pourquoi ma facture est-elle conforme EN 16931 mais rejetée en France ?

Parce que la France ajoute ses propres règles, dites CTC-FR, à la norme européenne : cadre de facturation (BT-23), SIREN du vendeur, adresses électroniques des deux parties, mentions PMT, PMD et AAB, liste fermée de types de document et de taux de TVA. Une facture peut satisfaire les 223 règles européennes et échouer sur une seule règle française.

Par quelle erreur commencer quand le validateur en affiche des dizaines ?

Par la structure (XSD) : tant que le fichier n'est pas bien formé, les règles métier ne veulent rien dire. Ensuite les lignes et la TVA, puis les totaux, qui en dérivent. Une seule valeur fausse lève souvent deux ou trois règles en cascade : corrigez la première, relancez, et une partie des suivantes disparaît.

Combien y a-t-il de règles de validation ?

Les artefacts exécutés par notre validateur portent 223 règles EN 16931 (Schematron 1.3.16) et 57 règles françaises CTC-FR (artefact FNFE-MPE 1.4.0.01). Une règle française peut produire plusieurs identifiants selon le champ en cause, par exemple BR-FR-05_BT-22-3 pour la mention AAB.

Que veulent dire les préfixes BR-CO, BR-DEC, BR-CL, BR-S ou BR-FR ?

BR seul : donnée obligatoire. BR-CO : cohérence entre montants ou champs. BR-DEC : nombre de décimales. BR-CL : valeur prise dans une liste de codes. BR-S, BR-Z, BR-E, BR-AE, BR-IC, BR-G, BR-O : règles propres à une catégorie de TVA. BR-FR : règles françaises CTC-FR. UBL- et CII- : règles de syntaxe propres au format.

Peut-on corriger ces erreurs automatiquement ?

Les totaux, oui : ils se recalculent depuis les lignes. Le reste, non. Un SIREN, une adresse électronique, une catégorie de TVA ou un type de document ne se devinent pas : inventer une valeur pour faire passer la règle produit une facture valide en apparence et fausse sur le fond.

Une facture validée ici sera-t-elle acceptée par ma Plateforme Agréée ?

Elle passe les mêmes artefacts officiels que ceux qu'appliquent les plateformes, ce qui écarte l'essentiel des rejets de format. La plateforme fait d'autres contrôles : unicité du numéro, existence du destinataire dans l'annuaire, version des règles qu'elle exécute. Seul son environnement de test le confirme.

Pourquoi une virgule dans un montant bloque-t-elle toute la validation ?

Les formats XML attendent un point décimal : 1300.00 et non 1300,00, 20 et non 20%. Une telle valeur rend le fichier invalide au XSD avant toute règle métier, et de nombreux moteurs de validation s'arrêtent alors sur une erreur technique peu parlante.

Pour aller plus loin : le validateur Factur-X, les validateurs UBL et CII, le guide des formats et normes et le format CDAR, qui transporte les statuts de rejet.