Le fichier s’ouvre comme n’importe quel PDF : double-clic, la facture s’affiche. Le problème n’est pas là. Un Factur-X transporte aussi un fichier XML embarqué, invisible à l’écran, qui pèse le plus souvent entre 2 et 20 Ko. C’est lui que votre comptabilité lit, lui que votre plateforme contrôle, et lui qui décide si la facture est exploitable ou non.
Cette double nature vient du conteneur : un PDF/A-3 normé ISO 19005-3, dans lequel le standard Factur-X glisse une pièce jointe nommée factur-x.xml. Le lecteur humain voit un document, la machine lit des données structurées. Les deux doivent raconter exactement la même facture.
Reste la manipulation. Afficher la pièce jointe, la sortir du PDF, la lire sans être développeur, vérifier son profil, et savoir quoi faire quand elle a disparu. Quatre gestes, dix minutes, aucun logiciel payant nécessaire.
Le diagnostic vous sort trois plateformes classées.
Ouvrir le PDF et vérifier que le XML est bien dedans
Deux fichiers cohabitent, un seul se voit. La lecture humaine passe par le PDF, la lecture machine par le XML. Contrôlez donc d’abord que la pièce jointe existe réellement. Un PDF sans XML embarqué reste un PDF ordinaire, pas une facture électronique au sens de la réforme.
Ouvrir le fichier : la partie sans difficulté
Un Factur-X s’ouvre dans n’importe quel lecteur PDF, sans mot de passe et sans extension. Le format est déployé sur Chorus Pro depuis 2018, donc largement rodé. La partie visible affiche une facture classique, avec toutes les mentions obligatoires lisibles à l’œil.
Premier indice utile : le poids. Un PDF de facture nu tourne autour de 40 à 80 Ko. Le même document en Factur-X ajoute le XML embarqué, soit 2 à 20 Ko de plus selon le profil et le nombre de lignes. Un écart de quelques kilo-octets ne prouve rien à lui seul, mais il oriente le contrôle.
Un réflexe circule et ne marche pas : renommer le fichier en .zip pour l’ouvrir comme une archive. Un PDF n’est pas un conteneur ZIP, et la manipulation ne produit qu’un fichier corrompu. Les pièces jointes vivent dans une table interne du PDF, l’arbre EmbeddedFiles, accessible uniquement par un lecteur qui sait la parcourir.
Afficher la pièce jointe en dix secondes
Dans Adobe Acrobat Reader, ouvrez le volet de gauche et cliquez sur l’icône trombone, intitulée Pièces jointes. Si le volet reste masqué, passez par le menu Affichage, puis Afficher ou masquer, puis Volets du navigateur. Un fichier factur-x.xml doit apparaître, avec sa taille en octets.
Sans Acrobat, Firefox suffit. Sa visionneuse intégrée, pdf.js, affiche un onglet de pièces jointes dans la barre latérale, au même endroit que les miniatures et les signets. Le fichier y porte l’attribut PDF/A-3 AFRelationship avec la valeur Alternative, qui signale une représentation alternative du document.
Chrome, Edge et l’application Aperçu de macOS affichent le PDF sans exposer les fichiers embarqués. Ne pas voir de pièce jointe dans ces lecteurs ne prouve donc rien : le XML peut très bien être présent. Refaites le test dans Acrobat Reader ou Firefox avant de renvoyer la facture à votre fournisseur.
Extraire le fichier factur-x.xml du PDF
Voir la pièce jointe ne suffit pas toujours. Pour l’envoyer à un comptable, la faire valider ou l’importer dans un logiciel, il faut la sortir du conteneur. L’opération se fait en trois clics avec une interface, ou en une commande sur un lot entier de factures.
Depuis Acrobat Reader, en trois clics
Dans le volet Pièces jointes, sélectionnez la ligne factur-x.xml, puis faites un clic droit et choisissez Enregistrer la pièce jointe. Un double-clic fonctionne aussi, mais Windows ouvre alors le XML dans l’application associée par défaut, parfois un éditeur inadapté. L’enregistrement explicite évite cette loterie.
Vérifiez immédiatement la taille du fichier obtenu. Un XML Factur-X valide dépasse toujours le kilo-octet, même sur le profil le plus pauvre. Un fichier de 0 octet signale un générateur défaillant côté émetteur, un cas fréquent avec certaines bibliothèques PHP mal configurées.
La version courante de la spécification est Factur-X 1.09, alignée sur ZUGFeRD 2.5 et publiée le 10 juin 2026 par la FNFE-MPE et son homologue allemand. Elle conserve le nom de fichier normalisé factur-x.xml et les cinq profils, de MINIMUM à EXTENDED. Plus de 130 plateformes de services savent produire et lire ce format.
Sans Acrobat : navigateur ou ligne de commande
Dans Firefox, l’onglet des pièces jointes propose l’enregistrement direct du XML sur le disque. Aucune installation, aucun envoi de la facture vers un service externe. Pour une facture isolée, c’est la méthode la plus rapide sur Windows comme sur macOS.
Sur un lot, la ligne de commande gagne. L’outil pdfdetach, fourni avec Poppler, liste les fichiers embarqués via pdfdetach -list facture.pdf et les extrait tous via pdfdetach -saveall facture.pdf. L’alternative mutool extract facture.pdf, issue de MuPDF, produit le même résultat. Les deux existent en binaires Windows et s’installent sur macOS via Homebrew.
Pour un traitement récurrent, Mustangproject, une bibliothèque Java open source, extrait le XML et détecte le profil dans la foulée. Elle s’utilise en ligne de commande ou depuis un programme, et couvre aussi bien Factur-X que ZUGFeRD.
Sur Windows, quelques visionneuses gratuites affichent en outre la facture et sa pièce jointe côte à côte, sans passer par le terminal. Elles restent utiles au service comptable qui veut contrôler dix factures par semaine. Évitez en revanche les extracteurs en ligne pour des factures nominatives : le document part sur un serveur tiers, avec les coordonnées bancaires qu’il contient.
Lire le XML sans être développeur
Le XML extrait suit la syntaxe CII de l’UN/CEFACT. Ouvert dans un éditeur de texte brut, il ressemble à un mur de balises. Deux détours suffisent pourtant à le rendre lisible par un gestionnaire, sans écrire une ligne de code.
Ouvrir le XML dans un navigateur
Glissez le fichier .xml dans une fenêtre Firefox ou Edge. Le navigateur affiche une arborescence pliable, avec indentation et coloration. Vous repliez les blocs inutiles et vous ne gardez à l’écran que les branches qui vous intéressent, notamment les montants et la TVA.
Les préfixes rsm et ram reviennent partout. Le premier porte l’enveloppe du document, le second les données commerciales. Six balises suffisent à contrôler l’essentiel d’une facture reçue. Les montants, notamment, s’écrivent toujours avec un point décimal et sans symbole monétaire, la devise figurant dans un attribut séparé.
| Information cherchée | Balise du XML CII | Visible sur le PDF |
|---|---|---|
| Numéro de facture | ram:ID | Oui, en tête |
| Date d’émission | ram:IssueDateTime | Oui, sous le numéro |
| Identité du vendeur | ram:SellerTradeParty | Oui, en pied |
| Ventilation de TVA | ram:ApplicableTradeTax | Oui, bloc TVA |
| Total toutes taxes | ram:GrandTotalAmount | Oui, bas de page |
| Profil du fichier | ram:GuidelineSpecifiedDocumentContextParameter | Non, jamais |
La dernière ligne mérite l’attention. Le profil ne s’imprime nulle part sur le PDF, alors qu’il conditionne la richesse des données transmises. C’est la première chose que regarde un intégrateur quand une facture passe mal.
Basculer le XML dans Excel pour un contrôle rapide
Excel importe le XML sans macro. Onglet Données, puis Obtenir des données, puis À partir d’un fichier, puis À partir du XML. Le tableur détecte le schéma et propose un tableau par branche. Les lignes de facture arrivent dans une feuille exploitable, triable et sommable.
La limite tient à la structure imbriquée du CII : Excel éclate parfois une même facture sur trois ou quatre tables liées. Cependant, pour vérifier qu’un total de 12 480 euros TTC correspond bien à la somme des lignes, l’import fait le travail en deux minutes.
Vérifier le profil et la conformité du fichier
Un Factur-X lisible n’est pas forcément un Factur-X conforme. Deux contrôles séparent les deux états : identifier le profil déclaré, puis passer le XML dans un validateur. Aucun des deux ne demande de compétence technique particulière.
Lire le profil déclaré dans le XML
Le profil se lit dans la balise ram:GuidelineSpecifiedDocumentContextParameter, sous forme d’un identifiant URN. Cinq valeurs existent, de MINIMUM à EXTENDED. Le nom seul ne dit rien au lecteur pressé, alors que l’écart de contenu entre deux profils est considérable.
Un fichier MINIMUM ne porte que des données d’en-tête et de pied, sans aucune ligne de facture. Votre logiciel affichera donc un montant global sans détail, et vous ressaisirez les lignes à la main. Un fichier EN 16931 contient la totalité des données de la norme européenne, lignes comprises.
Passer le fichier dans un validateur EN 16931
La validation se fait en deux temps. Un contrôle XSD vérifie la structure, puis un contrôle Schematron applique les règles métier de la norme. Les erreurs remontent sous forme de codes normalisés, du type BR-16 pour une facture sans ligne ou BR-CO-10 pour un total incohérent.
Plusieurs validateurs gratuits existent, en ligne ou en local. Mustangproject valide hors connexion, ce qui évite d’envoyer une facture client chez un tiers. Par ailleurs, un service en ligne reste pratique pour un cas isolé, à condition d’accepter que le document transite sur un serveur externe.
Lisez le rapport dans le bon ordre. Les erreurs bloquantes portent le préfixe BR, les avertissements signalent des données facultatives absentes. Un fichier peut afficher douze avertissements et rester parfaitement recevable. À l’inverse, une seule erreur BR suffit à faire rejeter la facture par la plateforme du destinataire.
Un XML qui passe la validation Schematron EN 16931 franchit sans problème le contrôle de format d’une plateforme agréée. La réciproque est fausse. Une plateforme peut refuser un fichier techniquement valide dont l’annuaire ne reconnaît pas le destinataire.
Quand le fichier ne s’ouvre pas ou que le XML a disparu
Deux pannes reviennent en boucle chez les entreprises qui reçoivent leurs premières factures au format hybride. Soit le PDF s’affiche mais ne contient rien, soit la pièce jointe existe et refuse de se lire. Les causes diffèrent, les remèdes aussi.
Le PDF s’affiche mais ne contient aucune pièce jointe
Dans la majorité des cas, le XML a été détruit après coup. Réimprimer un Factur-X vers un PDF, le compresser, le scanner ou le signer avec un outil non compatible PDF/A-3 produit le même effet. Chacune de ces opérations réécrit le conteneur et jette la pièce jointe au passage.
Le document reste alors une facture papier numérisée, plus une facture électronique. Ni votre plateforme ni celle de votre client ne pourront l’exploiter. La seule issue consiste à redemander le fichier d’origine à l’émetteur, sans transformation intermédiaire.
Le coupable se trouve souvent dans la chaîne interne, pas chez le fournisseur. Un parapheur électronique, un antivirus qui reconstruit les pièces jointes ou une gestion électronique de documents mal réglée suffisent. Testez la même facture à deux endroits de votre circuit : à la réception dans la messagerie, puis après passage dans l’outil suspect.
La pièce jointe existe mais reste illisible
Trois défauts dominent. Un flux vide, à 0 octet, trahit un générateur qui a déclaré la pièce jointe sans écrire son contenu. Un marqueur BOM UTF-8 en tête de fichier fait échouer certains parseurs stricts. Enfin, un XML tronqué en cours d’écriture provoque une erreur de balise non fermée dès l’ouverture.
Le nom du fichier compte également. Une facture allemande peut embarquer zugferd-invoice.xml au lieu de factur-x.xml, et un outil qui cherche uniquement le nom français passera à côté. Le contenu, lui, reste du CII exploitable.
Factur-X et ZUGFeRD sont deux noms d’une même spécification franco-allemande. Un fichier ZUGFeRD 2.x nommé zugferd-invoice.xml se lit avec les mêmes outils et se valide avec les mêmes règles. Seules les versions ZUGFeRD 1.0, en syntaxe différente, demandent un traitement à part.
Dans tous ces cas, gardez le fichier reçu tel quel avant d’appeler l’émetteur. Une pièce jointe vide ou tronquée se prouve en deux secondes avec sa taille en octets. C’est l’argument qui débloque le remplacement de la facture, sans discussion sur la bonne foi de chacun.
- La pièce jointe s’appelle factur-x.xml et se voit dans Acrobat Reader ou Firefox, pas dans Chrome ni dans Aperçu.
- L’extraction se fait au clic droit, ou en lot avec pdfdetach et mutool.
- Un XML ouvert dans un navigateur ou importé dans Excel devient lisible sans compétence technique.
- Le profil, invisible sur le PDF, se lit dans la balise GuidelineSpecifiedDocumentContextParameter.
- Un XML absent signifie presque toujours que le PDF a été réécrit après son émission.
Le comparatif classe les plateformes selon leur gestion réelle du Factur-X.
Questions fréquentes
Peut-on imprimer un Factur-X et le classer en papier ?
Rien n’interdit d’imprimer la partie visible pour un dossier interne. Toutefois, l’impression perd le XML, donc la valeur d’origine de la facture. L’obligation de conservation porte sur le fichier électronique lui-même. Le délai atteint six ans au titre du livre des procédures fiscales, et dix ans au titre du code de commerce. Un tirage papier ne remplace jamais l’archivage du PDF/A-3 complet.
Si le PDF et le XML affichent des montants différents, lequel prime ?
La spécification impose la cohérence stricte entre les deux représentations, donc l’écart constitue déjà une anomalie. En pratique, le XML alimente la comptabilité, les contrôles automatiques et les déclarations, tandis que le PDF sert de représentation lisible. Une divergence se traite auprès de l’émetteur, par une facture rectificative, jamais par une correction manuelle de votre côté.
Faut-il archiver le PDF, le XML, ou les deux ?
Le fichier à conserver est le PDF/A-3 d’origine, puisqu’il contient déjà les deux couches. Extraire le XML pour le stocker séparément n’apporte rien sur le plan probatoire, et complique la piste d’audit fiable. Le format PDF/A a d’ailleurs été conçu pour l’archivage longue durée, avec polices et couleurs embarquées, ce qui garantit une restitution identique dans dix ans.
Peut-on ouvrir un Factur-X sur un smartphone ?
Le PDF s’affiche partout, y compris dans l’aperçu d’un client de messagerie mobile. Les pièces jointes embarquées, en revanche, restent invisibles dans les visionneuses natives d’iOS et d’Android. L’application Adobe Acrobat pour mobile expose le volet des pièces jointes et permet l’enregistrement du XML. Pour un contrôle sérieux, un poste fixe reste plus confortable.
Mon logiciel de comptabilité peut-il importer le PDF directement ?
Les logiciels compatibles détectent seuls la pièce jointe et lisent le XML sans extraction préalable. Les autres traitent le document comme un PDF ordinaire et déclenchent une reconnaissance de caractères, avec le taux d’erreur qui va avec. La question à poser à votre éditeur est précise : lit-il le Factur-X natif, et jusqu’à quel profil.