Vérifier la conformité d'une facture électronique Factur-X : 15 erreurs, sanctions, diagnostic complet
À partir du 1er septembre 2026, les Plateformes Agréées (PA) valideront chaque facture avant de la transmettre au destinataire. Une facture non conforme ne sera pas « signalée » — elle sera rejetée. Elle n'arrivera jamais chez votre client. Le délai de paiement ne courra pas. Et depuis la loi de finances pour 2026 (loi n° 2026-103 du 19 février 2026), les sanctions ont été durcies : 50 € par facture non conforme, 500 € par transmission e-reporting manquante, 500 € puis 1 000 € par trimestre sans PA.
Ce guide est écrit pour l'expert-comptable qui veut comprendre exactement ce qui fait qu'une facture Factur-X est conforme ou non, quels sont les 3 niveaux de validation, quelles erreurs provoquent le plus de rejets en production, et comment les anticiper pour son cabinet et ses clients.
- 01. Les 3 niveaux de validation d'une facture Factur-X
- 02. Les dangers réels d'une facture non conforme (faits chiffrés)
- 03. 15 erreurs Schematron qui provoquent des rejets
- 04. PDF/A-3b : le conteneur que tout le monde oublie
- 05. Les mentions obligatoires qui manquent dans le XML
- 06. Incohérence PDF lisible vs XML : le piège silencieux
- 07. Comment diagnostiquer une facture en 5 minutes
- 08. Checklist de conformité (à imprimer)
- 09. 30 questions fréquentes sur la conformité
Les 3 niveaux de validation d'une facture Factur-X
Une facture Factur-X doit passer trois couches de validation successives. Chaque couche vérifie un aspect différent. Un échec à n'importe quel niveau = rejet par la PA.
Niveau 1 — PDF/A-3b (le conteneur)
La Factur-X est un PDF au format ISO 19005-3 (PDF/A-3b) dans lequel est embarqué un fichier XML nommé factur-x.xml. Ce niveau vérifie que le conteneur PDF respecte la norme : polices embarquées, pas de transparence interdite, colorspace déclaré, fichier XML correctement attaché. Un PDF généré par Word, Excel, ou un outil non compatible échouera ici. L'outil de référence est VeraPDF (open source, soutenu par la Commission européenne).
Niveau 2 — XSD (la structure XML)
Le schéma XSD vérifie que le XML respecte la syntaxe CII D22B (Cross-Industry Invoice) : chaque balise est correctement nommée, les namespaces sont déclarés, les types de données sont respectés (date au format AAAAMMJJ, montants numériques, codes dans les bonnes balises). Un champ mal nommé ou un type incorrect provoque une erreur fatale. Les schémas XSD sont distribués dans le pack de conformité FNFE-MPE, avec un schéma par profil (MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED).
Niveau 3 — Schematron (les règles métier EN 16931)
C'est là que surviennent la grande majorité des rejets. Un fichier peut être structurellement parfait (XSD valide) et être rejeté par le Schematron. Les règles Schematron vérifient la cohérence métier : les totaux arithmétiques correspondent, les codes TVA sont cohérents entre lignes et ventilation, les identifiants sont présents quand ils sont requis par le contexte fiscal. La norme EN 16931 définit plus de 200 règles métier, chacune identifiée par un code préfixé BR- (Business Rule). Les PA peuvent ajouter des contrôles supplémentaires (extensions nationales CIUS-FR).
Les dangers réels d'une facture non conforme
Les conséquences d'une facture non conforme ne se limitent pas aux amendes. Voici les 4 risques concrets, chiffrés, que vous devez connaître.
Risque 1 — Rejet silencieux par la PA = retard de paiement
C'est le risque le plus immédiat et le plus coûteux. Quand une PA rejette votre facture, elle n'arrive jamais chez le client. Le client ne sait pas que vous avez facturé. Le délai de paiement (30 à 60 jours) ne commence pas à courir. Vous devez corriger, réémettre, et le compteur repart à zéro. Sur une facture de 10 000 €, un rejet qui décale le paiement de 45 jours coûte environ 100 € de trésorerie (au taux BCE).
Risque 2 — Amendes LFI 2026 (durcies)
La loi n° 2026-103 du 19 février 2026 (loi de finances pour 2026) a considérablement durci les sanctions par rapport au barème initial :
| Infraction | Avant LFI 2026 | Après LFI 2026 | Plafond annuel |
|---|---|---|---|
| Facture non émise en format électronique | 15 €/facture | 50 €/facture | 15 000 € |
| Mention obligatoire manquante ou inexacte | 15 €/mention | 15 €/mention | 25 % du montant facture |
| Pas de PA désignée | — | 500 € → 1 000 €/trim. | — |
| E-reporting non transmis | 250 €/transmission | 500 €/transmission | 15 000 € |
| Manquement PA | 15 €/facture | 750 €/transmission | 100 000 € |
Le droit à l'erreur existe : les amendes ne s'appliquent pas en cas de première infraction au cours de l'année civile et des 3 années précédentes, si l'infraction est réparée spontanément ou dans les 30 jours suivant une demande de l'administration (article 1737 du CGI). Mais ce droit à l'erreur ne couvre qu'une seule infraction — la deuxième facture non conforme est sanctionnée.
Risque 3 — Perte de déductibilité TVA côté client
Une facture qui n'entre pas dans le circuit PA ne permet pas au client de déduire la TVA dans les conditions habituelles. En cas de contrôle fiscal, une facture reçue hors circuit réglementaire (par email, en PDF simple) après septembre 2026 peut être remise en question pour la déductibilité de la TVA. Ce n'est pas une sanction directe pour vous, mais c'est un argument commercial massif pour vos clients : leur fournisseur doit être conforme, sinon ils ne peuvent pas déduire la TVA sereinement.
Risque 4 — Responsabilité de l'expert-comptable
L'expert-comptable a un devoir de conseil envers son client (article 155 du décret du 30 mars 2012). Ne pas alerter un client sur la réforme, les échéances, et les sanctions peut engager la responsabilité civile du cabinet. Un client sanctionné qui peut démontrer que son expert-comptable ne l'a pas informé a un recours. Documentez systématiquement vos recommandations par écrit.
Vérifiez vos factures avant que la PA ne le fasse
Le validateur FactureValide vérifie les 3 niveaux (PDF/A-3b, XSD, Schematron EN 16931) en quelques secondes. Identifiez les erreurs avant l'envoi.
Valider une facture →15 erreurs Schematron qui provoquent des rejets
Voici les 15 erreurs que nous rencontrons le plus souvent en production, classées par fréquence. Pour chaque erreur : le code, ce qu'il vérifie, la cause racine, et la correction.
Erreur 1 — BR-CO-14 : total TVA incohérent
Ce que vérifie la règle : le total TVA de la facture (BT-110) doit correspondre à la somme des montants TVA de chaque catégorie fiscale (BT-117 dans chaque BG-23). C'est l'erreur n°1 en fréquence.
Cause racine : arrondis IEEE 754. Quand on utilise des nombres à virgule flottante (float/double) pour calculer les montants, les erreurs de représentation binaire s'accumulent. Exemple : 19.99 × 0.20 = 3.998 mais en float, le résultat peut être 3.9979999... qui, arrondi, donne 3.99 au lieu de 4.00. Autre cause fréquente : les remises et charges au niveau du document (BG-20/BG-21) ne sont pas intégrées dans le calcul du total.
Correction : utiliser un arrondi half-up strict à 2 décimales sur chaque montant intermédiaire. En PHP : round($amount, 2, PHP_ROUND_HALF_UP). Ne jamais enchaîner des calculs en float puis arrondir le résultat final — arrondir à chaque étape.
Erreur 2 — BR-S-08 : N° TVA vendeur absent en catégorie S
Ce que vérifie la règle : quand au moins une ligne utilise la catégorie TVA « S » (standard, taux > 0), le numéro de TVA intracommunautaire du vendeur (BT-31) doit être présent.
Cause racine : le logiciel ne renseigne pas BT-31 automatiquement, ou le champ est vide dans la fiche société. Très fréquent chez les micro-entrepreneurs qui n'ont pas de N° TVA (en franchise) mais dont le logiciel met quand même la catégorie « S ».
Correction : si l'entreprise est en franchise TVA, la catégorie TVA doit être « E » (exempt), pas « S ». Si elle est redevable, BT-31 doit contenir le N° TVA au format FRXX999999999.
Erreur 3 — BR-AE-01 : incohérence autoliquidation
Ce que vérifie la règle : si la ventilation TVA (BG-23) utilise la catégorie « AE » (autoliquidation), alors toutes les lignes de la facture doivent aussi utiliser « AE » en BT-151, et le montant de TVA doit être 0. Les règles sœurs BR-AE-02 à BR-AE-10 vérifient chaque aspect.
Cause racine : le développeur met « S » ou « E » au niveau des lignes mais « AE » dans la ventilation. Ou inversement. Très fréquent dans le BTP (sous-traitance article 283-2 nonies du CGI).
Correction : appliquer la même logique de détermination de la catégorie TVA aux deux niveaux (ligne ET ventilation). Si autoliquidation : BT-151 = AE, BT-152 = 0, code VATEX = VATEX-EU-AE, et BT-31 du vendeur présent (règle BR-AE-08).
Erreur 4 — BR-IC-01 : incohérence intracommunautaire
Même logique que BR-AE-01, mais pour les livraisons intracommunautaires (catégorie « K » dans EN 16931 ou « IC » dans certaines implémentations). Si la ventilation est en « IC/K », toutes les lignes doivent l'être aussi, le taux est 0, et le N° TVA du vendeur doit être présent.
Erreur 5 — BR-G-01 : incohérence export hors UE
Même famille. Catégorie « G » (export). Toutes les lignes doivent être en « G », taux 0, code VATEX = VATEX-EU-G. Erreur typique : mélanger des lignes « S » et « G » dans la même facture.
Erreur 6 — BR-CO-26 : aucun identifiant vendeur
Ce que vérifie la règle : au moins un identifiant vendeur doit être présent parmi BT-29 (identifiant du vendeur), BT-30 (identifiant légal = SIRET en France) et BT-31 (N° TVA). Les trois sont optionnels individuellement (0..1), mais au moins un doit être renseigné.
Cause racine : aucun des trois champs n'est rempli, souvent sur des factures générées manuellement ou par des outils minimalistes.
Correction : renseigner au minimum BT-30 avec le SIRET (schemeID = « 0002 ») et/ou BT-31 avec le N° TVA.
Erreur 7 — BR-02 : numéro de facture absent
Ce que vérifie la règle : BT-1 (numéro de facture) doit être présent et non vide. Semble évident, mais arrive quand la variable du numéro n'est pas correctement injectée dans le XML (variable non définie, typo dans le code).
Erreur 8 — BR-CL-22 : code VATEX invalide
Ce que vérifie la règle : le code de motif d'exonération (BT-121) doit être un code de la liste officielle CEN VATEX. Erreur fréquente : utiliser un code international quand un code national existe (ex : VATEX-EU-132-1Q pour la radiotélévision au lieu de VATEX-FR-FRANCHISE pour la franchise de base), ou inventer un code inexistant.
Codes les plus utilisés en France : VATEX-FR-FRANCHISE (franchise article 293 B), VATEX-EU-AE (autoliquidation), VATEX-EU-IC (intracommunautaire), VATEX-EU-G (export), VATEX-EU-132-1C (soins médicaux), VATEX-EU-132-1I (enseignement).
Erreur 9 — BR-S-05 : taux TVA invalide pour catégorie S
Ce que vérifie la règle : quand la catégorie TVA est « S » (standard), le taux (BT-152) doit être renseigné et > 0. Un taux absent ou à 0 % avec un code « S » déclenche l'erreur. Si le taux est vraiment 0 %, il faut utiliser la catégorie « Z » (zero-rated), pas « S ».
Erreur 10 — BR-16 : pas de ligne de facture
Ce que vérifie la règle : la facture doit contenir au moins une ligne (BG-25) avec un identifiant unique (BT-126). Un document d'acompte ou une facture vide sans ligne sera rejeté.
Erreur 11 — BR-CO-10 : somme des montants HT des lignes ≠ total HT
Ce que vérifie la règle : le total HT (BT-106) doit correspondre à la somme des montants HT des lignes (BT-131), ajustée des remises (BG-20) et charges (BG-21) au niveau du document. La cause est souvent l'oubli des remises/charges document dans le calcul.
Erreur 12 — XSD : date au mauvais format
Erreur XSD, pas Schematron, mais très fréquente. En syntaxe CII, les dates (BT-2, BT-7, BT-9) doivent être au format AAAAMMJJ (ex: 20260925) dans une balise udt:DateTimeString avec l'attribut format="102". Les formats JJ/MM/AAAA, AAAA-MM-JJ (ISO 8601), ou 25 sept 2026 sont rejetés.
Erreur 13 — BR-01 : identifiant de spécification absent
Ce que vérifie la règle : BT-24 (Specification identifier) doit contenir l'URN du profil. Pour EN 16931 en CII : urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:en16931. Si ce champ est absent ou contient une valeur incorrecte, la PA ne sait pas quel profil valider et rejette la facture.
Erreur 14 — XSD : code type de document invalide (BT-3)
BT-3 doit contenir un code UNTDID 1001 valide : 380 = facture, 381 = avoir/note de crédit, 384 = facture rectificative, 389 = auto-facture. Un texte libre (« FACTURE ») ou un code inexistant provoque un rejet XSD immédiat.
Erreur 15 — BT-130 : unité de mesure non codifiée
Les unités de mesure des lignes doivent être des codes UN/ECE Rec 20 ou Rec 21 : C62 = unité/pièce, HUR = heure, DAY = jour, KGM = kilogramme, MTR = mètre, LTR = litre, MTK = mètre carré. Les ERP utilisent souvent des labels en clair (« pièce », « heure », « forfait ») qu'il faut mapper vers les codes normalisés. Le code C62 est le code « fourre-tout » pour les prestations unitaires.
PDF/A-3b : le conteneur que tout le monde oublie
Beaucoup d'attention est portée au XML, mais le conteneur PDF/A-3b est la première cause de rejet silencieux. Un PDF ordinaire ne peut pas embarquer de fichier XML de manière conforme — il faut la norme ISO 19005-3.
Les 5 erreurs PDF/A-3b les plus fréquentes
- Polices non embarquées : toutes les polices utilisées dans le PDF doivent être intégrées dans le fichier. Les polices « système » (Arial, Times) ne sont pas embarquées par défaut dans beaucoup de générateurs PDF.
- Transparence interdite : le PDF/A-3b interdit certains modes de transparence. Les logos avec fond transparent ou les ombrages complexes peuvent échouer.
- Colorspace non déclaré : chaque élément graphique doit utiliser un espace colorimétrique déclaré (sRGB, etc.). Les images CMYK sans profil ICC intégré posent problème.
- XML embarqué de 0 octets : un bug connu de certaines bibliothèques (mPDF notamment) produit un fichier XML attaché qui a une taille de 0 bytes. Le conteneur semble valide mais le XML est vide — la PA ne peut rien lire.
- Nom de fichier incorrect : le XML embarqué doit s'appeler
factur-x.xml(pour Factur-X) ouzugferd-invoice.xml(pour ZUGFeRD). Un autre nom empêche la détection automatique.
Comment vérifier : utilisez VeraPDF (gratuit, open source) ou le validateur FactureValide qui intègre la vérification PDF/A-3b dans le diagnostic.
Les mentions obligatoires qui manquent dans le XML
La conformité ne se limite pas à la structure technique. Le contenu du XML doit refléter les 28 mentions obligatoires d'une facture, plus les 2 nouvelles mentions ajoutées par la réforme 2026. Voici les mentions les plus souvent absentes du XML :
| Mention | Champ XML (BT) | Erreur fréquente |
|---|---|---|
| SIRET du vendeur | BT-30 (schemeID 0002) | Mis dans BT-32 (identifiant fiscal) au lieu de BT-30 (identifiant légal). BT-32 est réservé au N° TVA. |
| SIREN/SIRET du client | BT-47 | Champ absent — obligatoire depuis la réforme pour le routage PA. |
| Catégorie d'opération | Nouveau BT | Non renseignée. Obligatoire dès sept. 2026 : livraison de biens (L), prestation de services (S), ou mixte (M). |
| TVA sur les débits | BT-20 (mention textuelle) | Absente quand le vendeur a opté pour la TVA sur les débits. Pas de code UNTDID 2005 « 432 » (ce code n'est pas dans la liste EN 16931). |
| N° TVA intracommunautaire | BT-31 (vendeur), BT-48 (client) | Absent en catégorie S → rejet BR-S-08. Obligatoire au-dessus de 150 € HT. |
| Adresse de livraison | BG-15 | Absente. Devient obligatoire pour le e-reporting (distinction livraison/prestation). |
| Moyen de paiement | BT-81 | Texte libre (« virement ») au lieu du code UNTDID 4461 (30 = virement, 58 = SEPA). |
| Date d'échéance | BT-9 | Non renseignée alors que des conditions de paiement sont précisées. |
Incohérence PDF lisible vs XML : le piège silencieux
La Factur-X est un format hybride : un PDF lisible par l'humain + un XML lisible par la machine. Les PA et les logiciels comptables se fient au XML, pas au PDF. Si le PDF affiche « 1 000 € HT » mais que le XML contient « 10 000 € », c'est le XML qui fait foi pour le routage, la comptabilisation automatique, et les contrôles fiscaux.
Ce risque survient dans trois situations :
- Modification manuelle du PDF après génération : quelqu'un corrige un montant dans le PDF mais pas dans le XML. Le document est visuellement correct mais comptablement faux.
- Extraction IA approximative : un outil OCR ou IA extrait les données du PDF pour générer le XML, mais se trompe sur un montant, une TVA, un taux. Le PDF original est correct, le XML ne l'est pas.
- Templates PDF mis à jour mais pas le code XML : le template PDF ajoute un nouveau champ (remise, frais de port) qui n'est pas répercuté dans la génération XML.
Comment vérifier : utilisez le lecteur Factur-X FactureValide qui extrait et affiche les données XML dans un format lisible. Comparez visuellement avec le PDF. C'est la seule façon de détecter une incohérence — aucun validateur automatique ne compare le contenu visuel du PDF au contenu du XML.
Lisez ce que la machine lit dans votre facture
Le lecteur FactureValide extrait les données XML de votre Factur-X et les affiche en clair : vendeur, client, lignes, TVA, totaux, paiement. Vérifiez que le XML correspond au PDF.
Lire une facture →Comment diagnostiquer une facture en 5 minutes
Voici la procédure de diagnostic que nous recommandons pour vérifier la conformité d'une facture Factur-X avant envoi à la PA.
Étape 1 — Vérifier que le PDF contient un XML embarqué (30 secondes)
Ouvrez le PDF dans Adobe Acrobat Reader. Allez dans le panneau latéral « Pièces jointes ». Vous devez voir un fichier nommé factur-x.xml. S'il n'y a pas de pièce jointe, ce n'est pas une Factur-X. Alternative rapide : déposez le fichier sur le lecteur FactureValide — il vous dira immédiatement si un XML est présent et son contenu.
Étape 2 — Valider la conformité technique (1 minute)
Déposez la facture sur le validateur FactureValide. Le diagnostic couvre les 3 niveaux : PDF/A-3b, XSD, Schematron EN 16931. Chaque erreur est identifiée par son code BR-* avec une explication et le champ concerné.
Étape 3 — Vérifier la cohérence PDF ↔ XML (2 minutes)
Utilisez le lecteur pour afficher les données XML. Comparez avec le PDF : montants HT, TVA, TTC, vendeur, client, lignes, taux, dates. Toute divergence = problème.
Étape 4 — Vérifier les mentions manquantes (1 minute)
Parcourez le diagnostic. Les mentions les plus oubliées : SIREN client (BT-47), catégorie d'opération, date d'échéance (BT-9), N° TVA quand applicable, code moyen de paiement (BT-81).
Étape 5 — Corriger et revalider
Si des erreurs sont détectées, deux options : corriger dans votre logiciel et régénérer, ou utiliser le convertisseur FactureValide qui recalcule les totaux, vérifie les mentions, et génère un Factur-X conforme. Revalidez après correction.
⚡ FactureValide : diagnostic complet en une seule étape
Le validateur vérifie les 3 niveaux de conformité. Le lecteur affiche les données XML en clair. Le convertisseur corrige et génère un Factur-X conforme EN 16931. Les 3 outils sont gratuits, sans inscription.
Checklist de conformité (à imprimer)
Cette checklist couvre les points de contrôle essentiels pour chaque facture Factur-X avant envoi à la PA.
Conteneur PDF
- ☐ Le fichier est au format PDF/A-3b — pas un PDF ordinaire
- ☐ Le XML est embarqué — fichier nommé
factur-x.xmlvisible dans les pièces jointes - ☐ Le XML n'est pas vide — taille > 0 octets
- ☐ Polices embarquées — toutes les polices du PDF sont intégrées dans le fichier
Structure XML
- ☐ Profil EN 16931 minimum — pas MINIMUM ni BASIC WL pour l'e-invoicing
- ☐ BT-24 correct — URN du profil Factur-X
- ☐ BT-3 = code UNTDID 1001 — 380 (facture), 381 (avoir), 384 (rectificative)
- ☐ Dates au format AAAAMMJJ — format 102, pas ISO 8601
- ☐ Unités de mesure = codes UN/ECE Rec 20 — C62, HUR, DAY, KGM, etc.
Identifiants
- ☐ BT-1 non vide — numéro de facture présent et unique
- ☐ BT-30 = SIRET vendeur — schemeID 0002 (pas en BT-32)
- ☐ BT-31 = N° TVA vendeur — si catégorie S, AE, IC ou G
- ☐ BT-47 = SIREN/SIRET client — obligatoire pour le routage PA
- ☐ BT-40 = code pays vendeur — FR (obligatoire, cardinalité 1..1)
TVA et calculs
- ☐ Catégorie TVA cohérente — même catégorie au niveau ligne (BT-151) et ventilation (BG-23)
- ☐ Code VATEX correct si exonéré — VATEX-FR-FRANCHISE, VATEX-EU-AE, etc.
- ☐ Totaux arithmétiquement cohérents — HT lignes = total HT ± remises/charges, total TVA = somme TVA par catégorie, TTC = HT + TVA
- ☐ Arrondis à 2 décimales — half-up strict, pas de float brut
- ☐ Taux TVA cohérent — catégorie S → taux > 0, catégorie E/AE/G → taux = 0
Mentions 2026
- ☐ Catégorie d'opération — livraison (L), services (S), mixte (M)
- ☐ TVA sur les débits — mention dans BT-20 si applicable
- ☐ Date d'échéance — BT-9 renseigné si conditions de paiement
- ☐ Moyen de paiement codifié — code UNTDID 4461 (30, 58…), pas de texte libre