Guide technique

Factur-X : le format hybride PDF + XML expliqué

Tom Van AsbroeckMai 202614 min de lecture
Dernière mise à jour: Mai 2026

Factur-X est le format de facture hybride franco-allemand qui combine un PDF lisible par l'humain et un fichier XML structuré lisible par la machine. Un seul fichier, deux usages. Ce format est l'un des trois formats acceptés par la réforme de la facturation électronique en France. Ce guide détaille sa structure, ses profils, et comment le créer, le valider et le convertir.

Factur-X en bref

  • Un fichier PDF/A-3 avec un XML CII embarqué. Lisible par l'humain et la machine.
  • 5 profils : Minimum, Basic WL, Basic, EN 16931 (Comfort), Extended. Le profil EN 16931 est recommandé.
  • Identique au ZUGFeRD allemand depuis la version 1.0. Un fichier valide pour l'un est valide pour l'autre.
  • Accepté par Chorus Pro et les PDP. Format recommandé pour la réforme française 2026.
  • Convertible sans perte vers UBL Peppol (norme EN 16931 commune). Envoi sur le réseau Peppol via un Access Point.
  • Inscription gratuite. Envoi et réception à partir de €0,25 par facture.

Vous avez un fichier Factur-X à valider ?

Déposez votre PDF hybride ou votre XML CII dans notre validateur gratuit. Vérification PDF/A-3, schéma XSD et règles métier du profil en quelques secondes.

Ouvrir le validateur Factur-X

1. Qu'est-ce que Factur-X ?

Factur-X est un standard de facturation électronique développé conjointement par la France (FNFE-MPE) et l'Allemagne (FeRD). Il répond à un problème simple : les comptables veulent un PDF qu'ils peuvent lire et archiver, les systèmes informatiques veulent un XML structuré qu'ils peuvent traiter automatiquement.

Factur-X résout ce dilemme en embarquant un fichier XML (au format Cross Industry Invoice, ou CII) à l'intérieur d'un PDF conforme à la norme PDF/A-3. Le résultat est un seul fichier qui satisfait les deux besoins.

En Allemagne, le même format s'appelle ZUGFeRD. Depuis la version 1.0, les deux spécifications sont identiques. Un fichier Factur-X valide est un fichier ZUGFeRD valide.

PDF lisible

Lisible par tout humain, imprimable, archivable

XML structuré

Traitement automatique, intégration ERP, validation

Un seul fichier

PDF/A-3 avec XML embarqué en pièce jointe

2. Structure : PDF/A-3 + XML CII embarqué

Un fichier Factur-X est un PDF/A-3 standard (ISO 19005-3). La norme PDF/A-3 autorise l'embarquement de fichiers arbitraires en tant que pièces jointes. Factur-X exploite cette possibilité pour intégrer un fichier XML nommé factur-x.xml au format UN/CEFACT Cross Industry Invoice (CII).

Structure d'un fichier Factur-X

facture.pdf (PDF/A-3)
├── Pages PDF (rendu visuel de la facture)
├── Métadonnées XMP (conformité PDF/A-3, relation AFRelationship)
└── Pièce jointe embarquée
    └── factur-x.xml (XML CII, données structurées)

Le lien entre le PDF et le XML est défini par la métadonnée AFRelationship positionnée sur Data ou Alternative. Cela indique aux logiciels que le XML est la représentation structurée des données de la facture, pas un simple fichier joint.

Pourquoi PDF/A-3 et pas un PDF classique ?

  • Archivage long terme : PDF/A garantit la lisibilité sur 10+ ans (polices embarquées, pas de dépendances externes)
  • Pièces jointes autorisées : PDF/A-3 (contrairement à PDF/A-1 et PDF/A-2) permet d'embarquer des fichiers de tout type
  • Conformité légale : accepté par les administrations fiscales européennes pour l'archivage électronique
Diagramme de la structure Factur-X : un conteneur PDF/A-3 contenant les pages PDF visuelles, les métadonnées XMP (AFRelationship) et le fichier factur-x.xml embarqué au format CII conforme EN 16931.
Architecture d'un fichier Factur-X : PDF/A-3 avec XML CII embarqué.

3. Les 5 profils Factur-X

Factur-X définit cinq profils qui déterminent la quantité d'informations présentes dans le XML. Plus le profil est élevé, plus le XML est riche et permet un traitement automatisé complet.

ProfilDonnées XMLCas d'usage
MinimumIdentifiants, montant total, TVA globaleArchivage et indexation. Le PDF reste la source principale.
Basic WLMinimum + adresses, conditions de paiementComptabilisation automatisée sans lignes de détail.
BasicBasic WL + lignes de facture détailléesRapprochement automatique facture/commande.
EN 16931 (Comfort)Tous les champs de la norme européenne EN 16931Profil recommandé. Conforme Chorus Pro et PDP.
ExtendedEN 16931 + champs supplémentaires (logistique, récurrences)Secteurs avec besoins métier spécifiques.

Recommandation

Pour la réforme française 2026, utilisez le profil EN 16931. Il couvre tous les champs exigés par les PDP et Chorus Pro, et permet la conversion sans perte vers UBL Peppol.

Les 5 profils Factur-X par ordre de richesse : Minimum (identifiants), Basic WL (sans lignes), Basic (avec lignes), EN 16931 / Comfort (profil recommandé, norme européenne), Extended (champs supplémentaires).
Les 5 profils Factur-X, du Minimum à l'Extended. Le profil EN 16931 est recommandé pour la réforme 2026.

4. Exemple XML commenté

Voici un extrait simplifié d'un fichier factur-x.xml au profil EN 16931. Les éléments clés sont annotés.

<?xml version="1.0" encoding="UTF-8"?>
<rsm:CrossIndustryInvoice
  xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
  xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">

  <!-- En-tête : numéro et type de facture -->
  <rsm:ExchangedDocument>
    <ram:ID>FA-2026-001</ram:ID>
    <ram:TypeCode>380</ram:TypeCode>  <!-- 380 = facture -->
    <ram:IssueDateTime>
      <udt:DateTimeString format="102">20260515</udt:DateTimeString>
    </ram:IssueDateTime>
  </rsm:ExchangedDocument>

  <rsm:SupplyChainTradeTransaction>
    <!-- Vendeur -->
    <ram:ApplicableHeaderTradeAgreement>
      <ram:SellerTradeParty>
        <ram:Name>Dupont Services SARL</ram:Name>
        <ram:SpecifiedTaxRegistration>
          <ram:ID schemeID="VA">FR32123456789</ram:ID>
        </ram:SpecifiedTaxRegistration>
      </ram:SellerTradeParty>

      <!-- Acheteur -->
      <ram:BuyerTradeParty>
        <ram:Name>Martin Distribution SAS</ram:Name>
        <ram:SpecifiedTaxRegistration>
          <ram:ID schemeID="VA">FR45987654321</ram:ID>
        </ram:SpecifiedTaxRegistration>
      </ram:BuyerTradeParty>
    </ram:ApplicableHeaderTradeAgreement>

    <!-- Ligne de facture -->
    <ram:IncludedSupplyChainTradeLineItem>
      <ram:AssociatedDocumentLineDocument>
        <ram:LineID>1</ram:LineID>
      </ram:AssociatedDocumentLineDocument>
      <ram:SpecifiedTradeProduct>
        <ram:Name>Conseil en facturation électronique</ram:Name>
      </ram:SpecifiedTradeProduct>
      <ram:SpecifiedLineTradeSettlement>
        <ram:ApplicableTradeTax>
          <ram:TypeCode>VAT</ram:TypeCode>
          <ram:RateApplicablePercent>20.00</ram:RateApplicablePercent>
        </ram:ApplicableTradeTax>
        <ram:SpecifiedTradeSettlementLineMonetarySummation>
          <ram:LineTotalAmount>1500.00</ram:LineTotalAmount>
        </ram:SpecifiedTradeSettlementLineMonetarySummation>
      </ram:SpecifiedLineTradeSettlement>
    </ram:IncludedSupplyChainTradeLineItem>

    <!-- Totaux -->
    <ram:ApplicableHeaderTradeSettlement>
      <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
      <ram:SpecifiedTradeSettlementHeaderMonetarySummation>
        <ram:LineTotalAmount>1500.00</ram:LineTotalAmount>
        <ram:TaxTotalAmount currencyID="EUR">300.00</ram:TaxTotalAmount>
        <ram:GrandTotalAmount>1800.00</ram:GrandTotalAmount>
        <ram:DuePayableAmount>1800.00</ram:DuePayableAmount>
      </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
    </ram:ApplicableHeaderTradeSettlement>
  </rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>

Points clés de cet exemple

  • TypeCode 380 identifie une facture (381 pour un avoir, 389 pour une auto-facturation)
  • schemeID="VA" désigne un numéro de TVA intracommunautaire
  • Format de date 102 signifie AAAAMMJJ (norme UN/EDIFACT)
  • Les namespaces rsm, ram et udt sont obligatoires et normalisés

5. Comment créer un Factur-X

La création d'un fichier Factur-X se fait en trois étapes : générer le XML CII, générer ou obtenir un PDF/A-3, puis embarquer le XML dans le PDF.

Diagramme des 3 étapes de création d'un fichier Factur-X : 1. Générer le XML CII, 2. Produire un PDF/A-3, 3. Embarquer le XML dans le PDF avec AFRelationship: Data.
Création d'un Factur-X : XML CII + PDF/A-3 + embarquement.

Étape 1 : Générer le XML CII

Construisez le XML en respectant le schéma du profil choisi. Des bibliothèques open source existent pour Python (factur-x), PHP (factur-x-php), Java (Mustang) et .NET.

Étape 2 : Produire un PDF/A-3

La plupart des générateurs de PDF (wkhtmltopdf, WeasyPrint, iText, Apache PDFBox) supportent la sortie PDF/A-3. Si votre PDF existant n'est pas PDF/A-3, vous pouvez le convertir avec Ghostscript ou un outil en ligne.

Étape 3 : Embarquer le XML

Ajoutez le fichier factur-x.xml comme pièce jointe avec le type MIME text/xml et la relation AFRelationship: Data. Mettez à jour les métadonnées XMP pour déclarer la conformité Factur-X et le profil utilisé.

Exemple Python avec la bibliothèque factur-x

from facturx import generate_from_file

# PDF source (doit être PDF/A-3 ou sera converti)
pdf_path = "facture.pdf"

# XML CII généré précédemment
xml_path = "factur-x.xml"

# Générer le Factur-X
with open(pdf_path, "rb") as pdf_file:
    with open(xml_path, "rb") as xml_file:
        facturx_pdf = generate_from_file(
            pdf_file,
            xml_file.read(),
            flavor="factur-x",
            level="en16931"
        )

# Sauvegarder
with open("facture-facturx.pdf", "wb") as out:
    out.write(facturx_pdf)

Via l'API e-invoice.be

Si vous préférez ne pas gérer l'assemblage vous-même, l'API e-invoice.be accepte vos données en JSON et produit une facture Peppol UBL validée, envoyée directement sur le réseau. Pas besoin de manipuler le XML manuellement.

Découvrir l'API Peppol

6. Validation

Valider un fichier Factur-X implique trois niveaux de vérification. Chaque niveau peut révéler des erreurs différentes.

1

Conformité PDF/A-3

Le conteneur PDF doit respecter la norme ISO 19005-3. Polices embarquées, pas de transparence interdite, métadonnées XMP présentes.

2

Schéma XML (XSD)

Le fichier factur-x.xml doit être valide par rapport au schéma XSD CII du profil déclaré. Vérifie la structure, les types de données et les cardinalités.

3

Règles métier (Schematron)

Vérifie la cohérence métier : totaux qui s'additionnent, TVA correcte, champs obligatoires selon le profil, règles pays.

Validez en un clic

Notre validateur Factur-X gratuit exécute les trois niveaux. Déposez votre fichier et obtenez un rapport détaillé avec les erreurs, le XPath fautif et une explication pour chaque violation.

Valider mon fichier Factur-X

7. Différences avec ZUGFeRD

Factur-X et ZUGFeRD sont le même format sous deux noms commerciaux. Quelques différences mineures subsistent dans l'usage :

 Factur-XZUGFeRD
Pays d'origineFrance (FNFE-MPE)Allemagne (FeRD)
Nom du fichier XMLfactur-x.xmlzugferd-invoice.xml ou factur-x.xml
Spécification techniqueIdentique (CII D16B dans PDF/A-3)Identique (CII D16B dans PDF/A-3)
ProfilsMinimum, Basic WL, Basic, EN 16931, ExtendedMinimum, Basic WL, Basic, EN 16931, Extended, XRechnung
Acceptation B2GChorus Pro (France)ZRE / OZG-RE (Allemagne)
InteropérabilitéUn fichier valide pour l'un est valide pour l'autre

En résumé : si votre partenaire vous demande du ZUGFeRD et que vous produisez déjà du Factur-X, vous n'avez rien à changer. Le format est identique. Seul le nom du fichier XML peut différer, et la plupart des logiciels acceptent les deux.

Pour un guide complet sur ZUGFeRD (structure, XRechnung, outils allemands), consultez notre guide détaillé ZUGFeRD.

8. Questions fréquentes

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

Oui, techniquement. Factur-X et ZUGFeRD partagent la même spécification depuis la version 1.0 (publiée conjointement par le FNFE-MPE en France et FeRD en Allemagne). Le nom commercial diffère selon le pays, mais le format XML CII embarqué dans un PDF/A-3 est identique. Un fichier Factur-X valide est aussi un fichier ZUGFeRD valide et vice versa.

Quel profil Factur-X choisir pour la France ?

Pour la plupart des entreprises, le profil EN 16931 (aussi appelé Comfort) est le choix recommandé. Il correspond exactement à la norme européenne et sera accepté par toutes les Plateformes de Dématérialisation Partenaires (PDP). Le profil Minimum convient uniquement si le PDF lisible suffit et que le XML sert de simple index. Le profil Extended est réservé aux cas métier très spécifiques (facturation récurrente complexe, informations logistiques détaillées).

Factur-X est-il accepté par Chorus Pro ?

Oui. Chorus Pro, la plateforme de facturation du secteur public français, accepte les factures Factur-X dans les profils Minimum, Basic, EN 16931 et Extended. Le PDF/A-3 est déposé comme pièce jointe et le XML CII est extrait automatiquement pour le traitement structuré.

Puis-je envoyer une facture Factur-X via Peppol ?

Pas directement. Le réseau Peppol utilise le format UBL (Peppol BIS Billing 3.0), pas le CII. Cependant, les deux formats respectent la norme EN 16931 et sont convertibles sans perte de données. Un Access Point comme e-invoice.be peut convertir automatiquement votre Factur-X en UBL pour transmission via Peppol.

Comment valider un fichier Factur-X ?

Trois niveaux de validation existent. Premièrement, vérifier que le PDF est conforme au standard PDF/A-3. Deuxièmement, valider le schéma XML CII (XSD). Troisièmement, vérifier les règles métier du profil choisi (schématron). L'outil gratuit sur e-invoice.be exécute les trois niveaux en un seul dépôt de fichier.

Quelle est la taille maximale d'un fichier Factur-X ?

La spécification Factur-X ne fixe pas de taille maximale. En pratique, la limite dépend de la plateforme de réception. Chorus Pro accepte jusqu'à 100 Mo. Les PDP fixent généralement une limite entre 10 et 50 Mo. Le XML CII seul dépasse rarement quelques dizaines de Ko.

Factur-X sera-t-il obligatoire en France ?

Factur-X est l'un des trois formats acceptés par la réforme de la facturation électronique (avec UBL et CII pur). Il n'est pas le seul format obligatoire, mais il est fortement recommandé car il combine lisibilité humaine (le PDF) et traitement automatisé (le XML). La réception de factures électroniques devient obligatoire le 1er septembre 2026 pour toutes les entreprises assujetties à la TVA.

Prêt à envoyer vos factures sur Peppol ?

Factur-X est parfait pour l'archivage et l'échange local. Pour envoyer sur le réseau Peppol, e-invoice.be convertit automatiquement vos données en UBL et les transmet au destinataire. Création de compte instantanée, KYC en 24 à 48 heures, envoi à partir de €0,25 par facture.

Audit facturation électronique

Pas sûr de votre format cible ? 15 minutes pour y voir clair.

Factur-X, UBL Peppol, CII pur : nous analysons ensemble votre flux actuel et vos contraintes réglementaires. Vous repartez avec une recommandation claire.

Tom Van Asbroeck
Hosted by Tom Van AsbroeckPeppol & tax expert

Conseil neutre. Aucune obligation de souscrire.

Factur-X : le format hybride PDF + XML expliqué (profils, exemple, validation) | e-invoice.be