Validateur Factur-X : ce qui est contrôlé, et comment
Cette page décrit chaque contrôle, l’outil qui le réalise et ce qui ne peut pas être vérifié automatiquement.
Le moteur utilisé
La validation repose sur Mustangproject, la bibliothèque open source de référence pour Factur-X et ZUGFeRD, qui embarque les schémas et règles publiés par le FNFE-MPE et le FeRD, ainsi que veraPDF pour la partie PDF/A. Notre code se limite à recevoir le fichier, à interroger ce moteur et à traduire ses constats en français.
Référentiel actuellement couvert : Factur-X 1.09.2 / ZUGFeRD 2.5.2.
Les contrôles, dans l’ordre
| Contrôle | Réalisé par | Ce qui est vérifié |
|---|---|---|
| Nature du fichier | VeriFacturX | Signature binaire du fichier, indépendamment de son extension. |
| Pièce jointe XML | Apache PDFBox | Présence d’un fichier factur-x.xml, relation déclarée (AFRelationship), extraction. |
| PDF/A-3 | veraPDF | Ensemble des règles ISO 19005-3 : polices, couleurs, chiffrement, structure. |
| Métadonnées XMP | Mustangproject | Champs fx:DocumentType, fx:DocumentFileName, fx:Version, fx:ConformanceLevel. |
| Schéma XSD | Mustangproject | Validation du XML contre le schéma du profil déclaré. |
| Règles métier | Schematron officiel | Règles EN 16931 (BR-*), règles propres aux profils Factur-X, règles françaises BR-FR en avertissement. |
Trois verdicts possibles
- Conforme : le moteur ne relève aucune erreur, PDF/A-3 compris. Pour un XML seul, le rapport précise que l’enveloppe PDF n’a pas été contrôlée.
- Non conforme : au moins une erreur bloquante. La simple présence d’un XML ne suffit jamais à obtenir un verdict positif.
- Vérification partielle : le fichier est valide mais ne relève pas d’un profil Factur-X (XRechnung, ZUGFeRD 1.0, Order-X), ou un contrôle n’a pas pu être mené à terme.
Ce qui n’est pas vérifié
- Que les montants du XML sont ceux imprimés sur le PDF. La spécification l’exige, mais ce rapprochement suppose de lire le PDF comme un humain. Le rapport affiche les données lues dans le XML pour que vous puissiez comparer.
- Que le SIREN, le numéro de TVA ou l’IBAN existent et appartiennent bien à l’entreprise citée.
- Que la plateforme de votre client acceptera la facture : elle peut appliquer des règles supplémentaires.
Sécurité du traitement
Chaque fichier est considéré comme hostile. Les XML contenant une déclaration DOCTYPE sont refusés avant toute lecture, ce qui écarte les attaques par entités externes (XXE) et par expansion d’entités. La taille est plafonnée à 10 Mo, y compris pour la pièce jointe une fois décompressée. Le moteur tourne dans un conteneur isolé, sans accès à Internet, en lecture seule, avec une mémoire et une durée d’exécution limitées.
Un doute sur un fichier ? Le contrôle est gratuit et le fichier n’est pas conservé.
Vérifier une facture