Aller au contenu

Conformité

Tout ce qui figure sur cette page peut être rejoué par vous. Nous ne vous demandons pas de faire confiance à notre propre validateur : les fichiers ci-dessous ont été produits par l’API en production, puis contrôlés par un validateur de référence indépendant et open source, et nous publions les rapports bruts.

Dernière exécution : 2 septembre 2026, contre https://facturx.orvel.dev, API version 0.1.2.

Ce qui a été vérifié

Couche Outil Référentiel
Conteneur PDF/A-3 veraPDF (embarqué dans Mustangproject) ISO 19005-3, niveau B, 10 210 assertions par fichier
Structure XML Mustangproject 2.26.0 XSD Factur-X 1.0.07 (CII D16B), XSD UBL 2.1
Règles métier EN 16931 Mustangproject 2.26.0 Schematron CEN 1.3.16 (BR-*, BR-CO-*, BR-S/E/AE/K/G-*)
Règles de profil Factur-X Mustangproject 2.26.0 FX-SCH-* pour BASIC WL, EN 16931, EXTENDED
Règles françaises Mustangproject 2.26.0 Schematron BR-FR « Flux 2 » v1.3.0 (AFNOR XP Z12-012, 16 février 2026)

Mustangproject est le validateur open source du service de validation en ligne de la communauté ZUGFeRD et l’un des outils recommandés dans les ressources du FNFE-MPE. Il n’a aucun lien avec cette API.

Corpus

Trois factures de notre jeu de tests, chacune dans une situation de TVA différente, dans tous les profils et syntaxes produits par l’API :

Fixture Situation Profils
invoice_fr_standard B2B français, TVA 20 % et 10 %, date de livraison, bon de commande EN 16931, EXTENDED-CTC-FR, BASIC WL
invoice_fr_franchise Micro-entrepreneur, TVA non applicable (art. 293 B CGI, catégorie E) EN 16931, EXTENDED-CTC-FR
invoice_eu_reverse_charge Prestation intra-UE, autoliquidation (catégorie AE) EN 16931, EXTENDED-CTC-FR

Syntaxes : Factur-X PDF/A-3 (CII embarqué), XML CII, XML UBL 2.1 (EN 16931 uniquement). 17 fichiers au total.

Résultats

Profil / syntaxe Fichiers PDF/A-3 XSD EN 16931 BR-FR Profil Factur-X
EN 16931, PDF Factur-X 3 ok ok ok ok ok
EN 16931, XML CII 3 s.o. ok ok ok ok
EN 16931, XML UBL 3 s.o. ok ok s.o. s.o.
BASIC WL, PDF Factur-X et CII 2 ok ok ok ok ok
EXTENDED-CTC-FR, PDF Factur-X et CII 6 ok ok ok ok voir note 1

Aucune erreur de règle métier sur l’ensemble du corpus. Les deux remarques remontées par le validateur sont expliquées ci-dessous, avec les références pour vérifier par vous-même.

Note 1 : FX-SCH-A-000636 sur EXTENDED-CTC-FR (liste de codes du validateur, pas un défaut du document)

Mustang signale Value of ram:ID is not allowed sur l’identifiant de spécification (BT-24) de chaque fichier EXTENDED-CTC-FR. La valeur émise est urn:cen.eu:en16931:2017#conformant#urn.cpro.gouv.fr:1p0:extended-ctc-fr, c’est-à-dire l’identifiant imposé par la norme XP Z12-012 (section BT-24, publiée par la DGFiP dans les spécifications externes B2B). Mustang 2.26 applique bien les règles BR-FR mais sa liste de codes du profil EXTENDED Factur-X ne contient encore que urn:factur-x.eu:1p0:extended et urn:zugferd.de:2p0:extended ; l’URN français est donc considéré comme inconnu. Toutes les autres règles sur ces fichiers, dont les 117 règles BR-FR déclenchées sur le cas d’autoliquidation, passent. Nous conservons l’URN officiel : c’est celui qu’attend une Plateforme Agréée.

Note 2 : avertissement PEPPOL-EN16931-R008 (ApplicableHeaderTradeDelivery vide)

Pour une facture sans information de livraison, l’élément CII ram:ApplicableHeaderTradeDelivery est émis vide. Le schéma CII D16B le rend obligatoire (cardinalité 1..1 dans SupplyChainTradeTransactionType, voir le XSD Factur-X) : il ne peut pas être omis. La règle PEPPOL « le document ne doit pas contenir d’éléments vides » a été écrite pour UBL, et Mustang la remonte en avertissement, pas en erreur. Le cas invoice_fr_standard, qui porte une date de livraison, ne la déclenche pas.

L’exécution Mustang affiche aussi des notices XRechnung (BR-DE-*) : elles ne concernent que les factures adressées au secteur public allemand et sont informatives.

Fichiers

Rejouer le contrôle

Deux façons.

En ligne, sans installation. Téléchargez un PDF ci-dessus et déposez-le dans le validateur FNFE-MPE (le service propre de l’association, compte gratuit) ou le validateur de la communauté ZUGFeRD (moteur Mustang). Deux moteurs indépendants, mêmes fichiers.

En local, contre l’API en production. Java 17+ et une clé API quelconque (l’offre gratuite suffit ; l’exécution consomme 17 documents) :

git clone https://github.com/LeBorgneAntoine/Brainstorm
cd Brainstorm/projects/facturx-api
export FACTURX_API_KEY=fx....
uv run python scripts/conformity.py --out /tmp/conformity

Le script télécharge Mustang-CLI 2.26.0 (SHA-256 vérifié), génère les 17 fichiers via POST /v1/invoices/generate, valide chacun d’eux et écrit summary.md, summary.json et les rapports bruts. Passez --base vers l’URL d’un autre fournisseur pour comparer.

Ce que cela ne prouve pas

  • L’acceptation par une Plateforme Agréée donnée : chaque PA peut appliquer des contrôles supplémentaires (annuaire, statuts de cycle de vie, routage). Les bacs à sable AIFE / PA ne sont pas ouverts aux tiers à ce jour ; cette section sera mise à jour dès qu’un résultat de test PA sera disponible.
  • L’exactitude de vos données : le moteur valide la structure et les règles métier, pas la justesse de vos montants ou de votre régime de TVA.
  • La couche visuelle du PDF : la conformité PDF/A-3 est contrôlée ; la lisibilité de la page lisible relève de l’appréciation de chacun, voir les échantillons.