Factur-X : la facture électronique
Depuis le 1er septembre 2026, toute entreprise française assujettie à la TVA doit savoir recevoir une facture électronique, et les grandes entreprises comme les entreprises de taille intermédiaire doivent émettre les leurs sous cette forme. Les plus petites suivent le 1er septembre 2027. Une facture qui n'est qu'une belle page cesse de compter comme une facture, et ne pas en émettre par voie électronique coûte 50 € par facture, jusqu'à 15 000 € par an.
Une facture électronique n'est pas un PDF envoyé par courriel. C'est la facture écrite sous forme d'entrées qu'une machine lit, dans l'une des trois formes que la réforme française accepte : deux d'entre elles sont des fichiers XML sans aucune page, et la troisième est Factur-X, un PDF qui contient ce XML à l'intérieur. Factur-X est la seule des trois qu'une personne peut encore ouvrir et lire, et c'est la plus employée en France.
Ce fichier en est une. Une personne l'ouvre et voit la page : la prestation, la taxe à vingt pour cent, cinq mille cent euros à payer. Le logiciel de comptabilité ouvre le même fichier, y trouve la facture jointe et lit ces mêmes montants sans que personne les retape. Les deux ne peuvent pas se contredire, puisqu'il n'y a qu'un seul document — et ce qu'il contient est imprimé plus bas sur cette page, ressorti du fichier même qui est proposé ici.
Ce qui va à l'intérieur est à vous de le choisir. Cette bibliothèque écrit n'importe lequel des cinq niveaux de détail que la norme définit : Minimum, les quelques entrées qu'un document doit avoir pour être comptabilisé ; Basic WL, la tête d'une facture sans ses lignes ; Basic, les lignes en plus ; EN 16931, tout ce que la norme européenne demande ; et Extended, tout cela encore, y compris ce que seuls certains métiers emploient. Elle écrit le fichier en PDF/A-3, la forme qu'une facture garde pour être classée des années durant, joint votre XML sous le nom que vous lui donnez, et déclare dans le document même que la pièce jointe est la facture et non un fichier qui l'accompagne. La même facture s'écrit depuis Rust, depuis Python, ou sous la forme de la description qu'un de vos programmes envoie à notre adresse.
Et ce qui va à l'intérieur doit correspondre à ce que le document en dit. Un fichier qui déclare une facture EN 16931 et qui en contient une au niveau Minimum n'est pas un fichier que nous écrivons : la facture est relue avant que le document ne sorte, et le document est refusé plutôt qu'envoyé en se contredisant. De même pour une facture jointe sous un nom auquel le document ne rattache aucun fichier, et pour un fichier qui n'est pas une facture du tout. Ce que la facture dit à l'intérieur est à vous et n'est pas jugé ici — mais les deux moitiés du fichier ne peuvent plus dire des choses différentes.
Ce que montre cet exemple
- Une page : la prestation, la taxe à vingt pour cent et cinq mille cent euros à payer — et la même facture à l'intérieur du fichier, écrite dans le XML que lit un logiciel de comptabilité.
- Le document disant ce qu'il contient : une facture, Factur-X version 1.0, le niveau de détail Minimum, jointe sous factur-x.xml et tenue pour la donnée propre du document — et n'importe lequel des cinq niveaux de détail, de Minimum à Extended, écrit de la même façon.
- Remis à veraPDF, un programme gratuit qui n'a pris aucune part à son écriture, comme fichier bon pour une conservation longue — et la facture qu'il contient ressortie et comparée à ce qui était fourni.
Le code source complet
Rien n'est omis et rien n'est simplifié : c'est le programme exactement tel qu'il tourne, pour le développeur qui utilise cette bibliothèque.
La troisième est la description elle-même : une simple liste de ce que la page doit dire, et c'est elle qu'on envoie au service.
Voir le code Rust
Voir le code Python
Voir le code JSON
Le document lui-même
Ouvrir le document en anglais
Ouvrir le document en français