Valider un PDF hybride Factur-X ou ZUGFeRD par API
Une facture Factur-X est un PDF/A-3 qui porte son XML en pièce jointe. ZUGFeRD est le même document sous son nom allemand — même conteneur, même syntaxe, même profils. Factlint contrôle les deux couches : le PDF comme document archivable, et le XML comme facture.
Ce que c’est exactement
Un fichier, deux lectures. Un humain ouvre le PDF et voit une facture ; un logiciel lit l’annexe XML et en extrait les données. Le format impose que les deux disent la même chose, et c’est précisément ce qu’un contrôle vérifie : un PDF valide portant un XML valide peut rester une facture invalide si l’annexe n’est pas déclarée comme telle.
Les trois couches contrôlées
- 1Le conteneur — conformité PDF/A-3, polices embarquées, intention de sortie. Sans cela le document n’est pas archivable, quel que soit son contenu.
- 2L’accord entre les deux — la relation déclarée de l’annexe, et le profil annoncé dans les métadonnées XMP face à celui que le XML applique réellement.
- 3La facture elle-même — l’annexe XML passe ensuite par les mêmes règles que n’importe quel CII déposé seul.
Les profils
MINIMUM et BASIC WL ne portent pas assez de données pour être des factures au sens de la norme : le socle français les refuse en émission. Les profils acceptés vont de BASIC à EXTENDED, et le mandat français ajoute EXTENDED-CTC-FR.
Contre quoi Factlint le juge
Les socles scellés qui reçoivent ce format aujourd’hui. Chaque verdict cite celui qui l’a rendu, et reste rejouable.
fr-2026-08EN 16931 CIUS France + BR-FR-CTC (FNFE)
Les codes qui s’y appliquent
6 codes documentés s’appliquent à ce format, tous listés ci-dessous.
Essayer
Le validateur gratuit accepte ce format sans compte. En API, l’appel tient en une ligne :
curl -X POST https://api.factlint.com/v1/validate \ -F 'file=@facture.pdf' \ -F 'jurisdiction=FR' \ -F 'ruleset=latest' \ -F 'pinned=true' \ -H 'Accept-Language: fr'Ouvrir le validateur