Factur-X
Vérifier une facture Factur-X, dans votre navigateur
Vous avez une facture Factur-X et vous voulez savoir si elle respecte les règles de l’EN 16931. Cette page vous montre comment faire. La vérification est gratuite et s’exécute localement, chez vous.
Qu’est-ce que Factur-X ?
Factur-X est un format hybride. Une facture Factur-X est un PDF qui contient en plus un fichier XML. Vos clients lisent le PDF, leurs logiciels lisent le XML. Les deux décrivent la même facture.
Le XML suit la syntaxe UN/CEFACT CII et la norme européenne EN 16931. La version courante est construite sur D22B et documentée comme rétrocompatible avec D16B ; D16B est la syntaxe que ce moteur produit et vérifie. C’est pour cette raison qu’un même jeu de règles vérifie une Factur-X, une ZUGFeRD et une XRechnung.
Factur-X et ZUGFeRD sont la même spécification sous deux noms. La version courante s’appelle Factur-X 1.09.2, soit ZUGFeRD 2.5.2. La même page existe en allemand : ZUGFeRD prüfen.
Factur-X et la réforme française
À partir du , toute entreprise assujettie à la TVA et établie en France devra pouvoir recevoir des factures électroniques. L’obligation d’émettre se déploie ensuite par taille d’entreprise. Factur-X est l’un des formats socles admis.
Nous ne redétaillons pas la réforme ici : notre page France dit précisément ce que nous couvrons, ce que le contrôle DGFiP Flux 1 signifie réellement, et ce qui est hors de notre périmètre.
Comment vérifier une facture Factur-X
À savoir d’abord : c’est le XML qui est vérifié, pas le conteneur PDF. Commencez donc par en extraire le XML.
-
Extrayez le XML du PDF. Votre lecteur PDF affiche la
liste des pièces jointes. Enregistrez celle qui s’appelle
factur-x.xml,zugferd-invoice.xmlouxrechnung.xml. - Ouvrez le playground et l’onglet « Check an XML file ». Le playground lui-même est en anglais.
- Collez le XML ou choisissez le fichier, puis cliquez sur « Check this document ».
- Lisez le verdict. Chaque règle enfreinte est détaillée : son identifiant, le terme métier concerné, ce que la norme exige et le champ à corriger. Chaque règle a sa propre page sous /rules/.
Votre fichier est traité localement dans votre navigateur. Il n’est pas envoyé. Aucune requête transportant votre document ne quitte la page, et aucun événement de mesure n’enregistre quoi que ce soit à son sujet. Le moteur de règles est chargé dans la page et s’exécute dans votre onglet. Vous pouvez le vérifier vous-même : ouvrez l’onglet réseau de votre navigateur et regardez. La page charge par ailleurs une mesure d’audience sans cookie, qui note seulement que le bouton a été pressé.
Formulation d’origine, en anglais : « Your file is processed locally in your browser. It is not uploaded. »
Si vous préférez le faire dans votre code, le même moteur est un paquet
npm sous licence MIT. extractFacturX(bytes) extrait le XML
d’un PDF Factur-X ou ZUGFeRD, parseCiiInvoice le lit et
validateInput le vérifie, sans appel réseau et sans
dépendance d’exécution.
npm install @attestwire/en16931
Ce que la vérification couvre
Le contrôle s’appuie sur le jeu de règles de l’EN 16931. 270 règles qu’une facture que vous envoyez peut réellement enfreindre sont implémentées, plus 25 invariants arithmétiques qui protègent les calculs du moteur. S’y ajoutent la CIUS allemande XRechnung et Peppol BIS Billing 3.0. Voir toutes les règles →
À titre de preuve : 11 factures de test livrées avec le moteur ont été jugées acceptables le par le validateur KoSIT 1.6.2 en configuration XRechnung 3.0.2, sans aucune remarque. Le relevé complet →
valid: true signifie que les données du document ont passé
toutes les règles qu’Attestwire implémente. Ce n’est pas une
promesse qu’un destinataire, un point d’accès ou une extension nationale
acceptera le document. Les limites exactes →
Ce que nous ne faisons pas
Nous ne fabriquons pas de PDF Factur-X.
Attestwire écrit le XML CII ; le conteneur PDF/A-3 — polices
embarquées, profil colorimétrique, métadonnées XMP, la bonne valeur
/AFRelationship — relève d’une bibliothèque PDF/A-3.
Notre relevé daté cite Mustangproject, qui sait le
faire.
Le conteneur est lu, jamais écrit.
extractFacturX(bytes) ouvre un PDF Factur-X ou ZUGFeRD et
renvoie la pièce jointe XML. Cette fonction fait partie du paquet MIT et
ne fait aucun appel réseau.
Le vérificateur en ligne accepte du XML, pas un PDF. Le
sélecteur de fichiers accepte .pdf volontairement, mais
seulement pour vous donner une explication utile plutôt qu’une erreur de
syntaxe incompréhensible.
Nous ne transmettons pas de factures. Attestwire n’est ni une plateforme agréée ni un point d’accès, et ne dépose rien auprès du PPF ou de Chorus Pro.
Questions fréquentes
Factur-X est-il obligatoire ?
Non, pas en tant que format. Ce qui est obligatoire, c’est la facture électronique structurée, et Factur-X est l’un des formats socles admis. À partir du 1er septembre 2026, toute entreprise assujettie à la TVA et établie en France devra être en mesure de recevoir des factures électroniques ; l’obligation d’émettre se déploie ensuite par taille d’entreprise. Notre page /france détaille ce que nous couvrons de cette réforme et ce que nous ne couvrons pas.
Quelle différence entre Factur-X et ZUGFeRD ?
Aucune sur le fond : c’est la même spécification, publiée sous deux noms par deux organisations. La version courante est Factur-X 1.09.2, soit ZUGFeRD 2.5.2. Un fichier Factur-X est lisible par un outil ZUGFeRD et réciproquement, et les profils portent les mêmes noms.
Comment extraire le XML d’une Factur-X ?
Le XML est une pièce jointe du PDF. Tout lecteur PDF qui affiche la liste des pièces jointes permet de l’enregistrer ; elle s’appelle presque toujours factur-x.xml, zugferd-invoice.xml ou xrechnung.xml. Si vous développez, extractFacturX(bytes) du paquet @attestwire/en16931 lit la pièce jointe directement dans les octets du PDF, sans aucune dépendance.