Validation Factur-X : pourquoi un XML valide XSD n’est pas forcément une facture conforme

Validation Factur-X

Lorsqu’un projet d’intégration de Factur-X démarre, la première satisfaction du développeur est souvent la suivante :

« Mon fichier XML est valide ! »

Le document passe avec succès la validation XSD.

Les premiers tests sont concluants, le PDF est correctement généré et le XML bien embarqué. Tout semble fonctionner !

Puis vient le premier échange avec une plateforme de dématérialisation, un client ou un outil de contrôle de conformité.

La réponse est sans appel : facture rejetée. Pourtant, le XML est bien valide. Comment est-ce possible ?

La réponse tient en une distinction fondamentale que beaucoup découvrent seulement lors des premiers tests :
une validation XSD ne garantit pas qu’une facture Factur-X est conforme.

Pour comprendre pourquoi, il faut distinguer deux mécanismes complémentaires : le XSD et le Schematron.

Deux validations 👉​ deux objectifs différents

Une facture Factur-X ne fait pas l’objet d’un unique contrôle.

Elle est soumise à plusieurs niveaux de validation, chacun répondant à une problématique différente.

Schématiquement, le processus est le suivant :

Schéma qui représente la validation d'une facture XML

Ces deux validations sont complémentaires, aucune ne remplace l’autre.

Le rôle du XSD : vérifier la structure

Le XML Schema Definition (XSD) décrit la structure attendue du document XML.

Son rôle consiste à répondre à des questions comme :

  • Les balises existent-elles ?
  • Sont-elles placées au bon endroit ?
  • Leur ordre est-il correct ?
  • Les cardinalités sont-elles respectées ?
  • Les types de données sont-ils conformes ?

Par exemple :

  • une date doit respecter un format attendu
  • un montant doit être numérique
  • certaines balises sont obligatoires
  • d’autres sont facultatives

Le XSD garantit donc que le document est correctement construit.

Ce que le XSD ne sait pas faire

En revanche, le XSD ne comprend absolument pas le métier.

Il ne sait pas vérifier :

  • un calcul de TVA
  • un total TTC
  • une remise
  • une règle fiscale
  • une obligation liée à un contexte particulier

Autrement dit, le XSD valide la syntaxe, pas la logique.

Un exemple très simple

Prenons une facture contenant les informations suivantes :

Élément

Valeur

Total HT

1 000,00 €

TVA

200,00 €

Total TTC

1 150,00 €

Le document XML est parfaitement structuré, toutes les balises sont présentes et les nombres sont correctement formatés.

Le résultat est donc :

Validation XSD ​: ✅​ Conforme

Pourtant ➡️ 1 000 + 200 = 1 200 et non 1 150

Par conséquent, la facture est fausse et le XSD ne détectera jamais cette erreur.

Le rôle du Schematron

Le Schematron ne vérifie pas la structure mais les règles métier.

Autrement dit : “Les informations contenues dans cette facture sont-elles cohérentes ?”

Il contrôle notamment :

  • Les calculs
  • Les montants
  • Les règles de TVA
  • Les dépendances entre certaines balises
  • Les obligations liées au profil utilisé
  • Les contraintes de la norme EN16931

Le Schematron fonctionne comme un expert métier

On peut voir le XSD comme un correcteur orthographique. Il vérifie que les mots existent.

Le Schematron ressemble davantage à un relecteur. Il vérifie que la phrase a du sens.

Prenons cette phrase : “Le chat conduisait une voiture mardi prochain.” 

Grammaticalement, elle est correcte. Logiquement, elle ne l’est pas.

➡️ Le XSD raisonne de la même manière, alors que le Schematron va beaucoup plus loin. 

Vous souhaitez sécuriser la conformité de vos factures électroniques au format Factur-X ?

Les contrôles réalisés par le Schematron

Les règles Schematron sont nombreuses. Elles évoluent régulièrement avec les spécifications.

Parmi les contrôles les plus courants :

Cohérence des calculs

Les montants doivent être cohérents.

Par exemple :

Total HT + TVA = Total TTC

➡️ Une différence d’un centime peut suffire à provoquer un rejet.

Vérification des taux de TVA

Chaque ligne de facture doit être cohérente avec le taux annoncé.

Les bases taxables doivent correspondre aux montants déclarés.

Mentions obligatoires

Certaines informations deviennent obligatoires selon le contexte.

Par exemple :

• Exonération
• Autoliquidation
• Livraison intracommunautaire
• Exportation

Le XML peut être valide mais incomplet.

Cohérence entre plusieurs informations

Certaines données sont liées.

Le Schematron vérifie que ces dépendances sont respectées.

Pourquoi les validations Schematron évoluent-elles ?

Une idée reçue consiste à penser que les règles Factur-X sont figées.

En réalité, elles évoluent régulièrement.

Les organismes responsables publient :

  • de nouvelles règles métier
  • des corrections
  • des clarifications
  • des adaptations liées à EN16931

Une implémentation conforme aujourd’hui devra donc être maintenue dans le temps.

Les erreurs que nous rencontrons le plus souvent

Au cours des projets que nous accompagnons, plusieurs situations reviennent régulièrement.

1. XML parfaitement valide

Le document respecte le XSD mais les montants sont incohérents.

2. Arrondis différents

Le logiciel calcule les montants ligne par ligne. Le total est calculé globalement. Quelques centimes apparaissent.

➡️ Le Schematron refuse.

3. Donnée obligatoire absente

Une mention réglementaire manque. Le document reste valide au sens du XSD, il est pourtant rejeté.

4. Utilisation d’anciennes règles

Les schémas XSD sont récents, par rapport aux fichiers Schematron qui ne le sont plus.

➡️ Le contrôle devient alors incomplet.

Une erreur fréquente dans les projets

Nous rencontrons souvent la situation suivante. 

Le développeur récupère :

  • Les fichiers XSD officiels
  • Un exemple de génération XML
  • Un exemple PDF

Après quelques ajustements :

✅​ le XML est valide

Le projet semble terminé.

En réalité, seule la première étape est franchie.

Sans validation Schematron, il est impossible d’affirmer que les factures produites sont réellement conformes.

Pourquoi certains exemples fonctionnent jusqu’au premier échange réel ?

De nombreux exemples de code ont un objectif pédagogique : illustrer la structure d’une facture Factur-X ou montrer comment produire un PDF contenant un XML.

Ils permettent de comprendre les mécanismes de base, mais ils ne couvrent pas toujours l’ensemble des exigences d’une utilisation en production.

Une application destinée à émettre des factures électroniques au quotidien doit aller plus loin :

  • Intégrer les schémas XSD officiels
  • Appliquer les règles Schematron
  • Suivre les mises à jour des spécifications
  • Automatiser les contrôles avant chaque émission

C’est cette différence qui sépare une démonstration technique d’une solution exploitable en environnement réel.

Pourquoi intégrer les validations directement dans votre logiciel ?

Une validation effectuée uniquement lors des tests est insuffisante.

En production, chaque facture peut être différente :

  • Nouveaux taux de TVA
  • Nouveaux clients
  • Nouvelles remises
  • Nouveaux cas métiers

Automatiser les validations permet :

  • d’éviter les rejets
  • détecter immédiatement une anomalie
  • sécuriser les échanges
  • réduire les interventions du support

La validation devient ainsi une étape naturelle du processus de génération.

En conclusion

Valider un fichier XML avec un schéma XSD est une étape indispensable.

Mais ce n’est que la première marche vers une facture Factur-X conforme.

La conformité repose également sur des centaines de règles métier vérifiées par le Schematron : cohérence des calculs, contraintes fiscales, dépendances entre les données et respect de la norme EN16931.

Pour les entreprises qui développent des logiciels métiers, intégrer ces deux niveaux de validation est essentiel. C’est la seule manière de produire des factures fiables, pérennes et acceptées par les plateformes de dématérialisation.

Validation Factur-X, avec Schematron et XSD

Notre approche chez Revoludev

revoludev développement informatique windev webdev windev mobile

Chez Revoludev, nous avons rapidement constaté que la validation XSD seule ne permettait pas de garantir la conformité des factures produites.

Nous avons donc développé un moteur de validation conçu pour les environnements de production, capable de :

Cette approche permet d’intégrer la validation directement dans la chaîne de génération documentaire, afin de détecter les anomalies avant la transmission de la facture.

Vous souhaitez sécuriser la génération de vos factures électroniques ?

Revoludev vous accompagne dans l’intégration d’un moteur de validation complet (XSD + Schematron), maintenu au rythme des évolutions des spécifications officielles, afin de garantir la conformité de vos factures dans le temps.

Articles sur le même sujet

revoludev développement informatique windev webdev windev mobile

FAQ

Non. Le XSD vérifie uniquement la structure du document XML. Une facture doit également respecter les règles métier définies par le Schematron pour être considérée comme conforme.

Le XSD contrôle la syntaxe et la structure du XML. Le Schematron vérifie la cohérence fonctionnelle des données, les calculs et les contraintes définies par les spécifications Factur-X et la norme EN16931.

Parce qu’elle ne respecte pas une ou plusieurs règles métier : calculs incorrects, informations obligatoires absentes, incohérences de TVA ou non-respect du profil utilisé.

Oui. Elles sont mises à jour au fil des évolutions de Factur-X et de la norme EN16931. Il est donc important de maintenir le moteur de validation à jour.