Aller au contenu

Factur-X — la facture hybride PDF

Ce que contient réellement un fichier Factur-X, comment le XML CII est joint au PDF, ce que recouvrent les profils, et pourquoi « XML détecté » et « PDF/A-3 valide » sont deux affirmations différentes.

Un fichier, deux publics

Factur-X est une facture hybride : un PDF lisible par une personne, dans lequel est incorporée, sous forme de pièce jointe, une facture structurée UN/CEFACT CII. Ouvrez-le dans n’importe quel lecteur PDF et vous voyez une page de facture ; ouvrez-le dans un logiciel comptable et celui-ci peut lire directement le XML, sans OCR ni saisie manuelle.

C’est toute l’idée du format. La facturation structurée impose habituellement de choisir entre un document lisible par des personnes et des données exploitables par des machines. Factur-X refuse ce choix en livrant les deux dans un seul fichier, ce qui en a fait la voie d’entrée pragmatique vers la facturation électronique pour les petits fournisseurs qui envoient encore des PDF par courriel.

En Allemagne, la même spécification est publiée sous le nom de ZUGFeRD. Depuis Factur-X 1.0 / ZUGFeRD 2.1, les deux sont techniquement alignées : le même fichier fonctionne dans les deux pays.

Comment le XML est joint

Le conteneur est le PDF/A-3, le profil PDF d’archivage qui autorise des fichiers incorporés quelconques. Le XML de facture est joint sous un nom de fichier défini — factur-x.xml pour les versions actuelles, historiquement ZUGFeRD-invoice.xml — avec un AFRelationship valant Alternative, qui déclare que la pièce jointe est une représentation alternative du contenu de la page et non un document complémentaire.

Les métadonnées XMP du PDF portent en outre un bloc de description Factur-X indiquant le type de document, la version et le niveau de conformité. Un lecteur complet a donc trois endroits où regarder : la pièce jointe elle-même, la relation de la pièce jointe et les métadonnées XMP.

Les profils

Factur-X définit des niveaux de conformité, qui diffèrent par la part de la facture réellement présente dans le XML :

  • MINIMUM — guère plus que le vendeur, l’acheteur, les totaux et une référence de document. Prévu pour une saisie de type note de frais. Ne constitue pas à lui seul une facture conforme à EN 16931.
  • BASIC WL — « without lines », sans lignes. En-tête, parties, ventilation de TVA et totaux, mais aucune ligne de facture. Non conforme à EN 16931 non plus.
  • BASIC — ajoute les lignes de facture. Premier niveau constituant une facture structurée complète et conforme à EN 16931.
  • EN 16931 (historiquement COMFORT) — le modèle noyau EN 16931 complet.
  • EXTENDED — va au-delà du modèle noyau, pour les cas que la norme européenne ne couvre pas.

Le profil est déclaré à l’intérieur du XML, dans ram:GuidelineSpecifiedDocumentContextParameter/ram:ID, sous forme d’URN telle que urn:factur-x.eu:1p0:basic. Le visualiseur CII lit et nomme cet identifiant lorsque vous ouvrez un XML Factur-X extrait.

Deux conséquences méritent d’être anticipées : un fichier MINIMUM ou BASIC WL est un fichier Factur-X valide qui n’est pas une facture structurée complète — un système récepteur doit donc gérer l’absence de lignes plutôt que la traiter comme une erreur ; et le profil déclaré n’est qu’une déclaration, de sorte qu’un document peut invoquer EN 16931 tout en enfreignant ses règles.

« XML détecté » n’est pas « PDF/A-3 valide »

Ce sont deux questions distinctes, et les confondre est l’exagération la plus répandue dans l’outillage Factur-X.

  • XML Factur-X détecté signifie : ce fichier est un PDF, il contient un fichier incorporé qui ressemble à une pièce jointe Factur-X, et cette pièce jointe s’analyse comme une Cross Industry Invoice. C’est ce qu’un outil s’exécutant dans un navigateur peut honnêtement établir.
  • Conformité PDF/A-3 validée signifie : l’ensemble du PDF satisfait l’ISO 19005-3 — profils colorimétriques incorporés, polices incorporées, conformité des métadonnées XMP, relation de la pièce jointe, restrictions de transparence et le reste. L’établir exige un validateur PDF/A conforme tel que veraPDF. C’est un logiciel conséquent, et ce n’est pas une chose à approximer.

Le visualiseur Factur-X rend compte du premier point et indique clairement qu’il n’a pas vérifié le second. Le validateur Factur-X va plus loin et exécute les règles de la facture, en maintenant la même distinction sur chaque résultat.

Lire soi-même un fichier Factur-X

Une pièce jointe PDF est stockée sous forme de flux de fichier incorporé, généralement compressé en deflate, référencé depuis l’arbre /Names /EmbeddedFiles du catalogue du document et depuis le tableau /AF de la page. Extrayez ce flux, décompressez-le, et vous obtenez le XML CII — que vous pouvez ensuite ouvrir dans le visualiseur CII comme un document ordinaire.

À lire également

Pour la syntaxe contenue dans la pièce jointe, voyez UN/CEFACT Cross Industry Invoice ; pour le modèle sémantique qu’elle met en œuvre, voyez EN 16931 ; pour le contexte réglementaire, voyez la facturation électronique française.

Questions fréquentes

Factur-X et ZUGFeRD, est-ce la même chose ?

Il s’agit de la même spécification publiée sous deux noms : Factur-X en France par la FNFE-MPE et ZUGFeRD en Allemagne par le FeRD. Depuis les versions 2.1 / 1.0, les deux sont techniquement alignées, ce qui explique qu’un même fichier fonctionne dans les deux pays.

Quels sont les profils Factur-X ?

Ce sont des niveaux de conformité, du moins au plus complet : MINIMUM, BASIC WL (sans lignes), BASIC, EN 16931 (également appelé COMFORT) et EXTENDED. MINIMUM et BASIC WL portent trop peu d’information pour constituer à eux seuls une facture structurée complète et ne sont pas conformes à EN 16931 ; BASIC et au-delà le sont. Le profil est déclaré dans l’identifiant de guide, à l’intérieur du XML.

Puis-je vérifier ici la conformité PDF/A-3 ?

Non, et il est important de ne pas confondre les deux questions. Trouver et lire le XML incorporé indique que les données de facture sont présentes. Confirmer que le fichier est un document PDF/A-3 valide — espaces colorimétriques, polices, métadonnées XMP, relation de la pièce jointe — est un contrôle distinct qui exige un validateur PDF/A conforme tel que veraPDF. Tout outil qui prétend faire les deux en une seule passe exagère ce qu’il a fait.

Qui prime si le PDF et le XML divergent ?

Le XML est la facture au sens du traitement ; le PDF en est la représentation lisible par une personne. Un fichier dont les deux moitiés divergent est défectueux, ce qui est l’une des raisons pratiques d’extraire et d’inspecter le XML plutôt que de se fier à la page.