write_facturx.json

Le fichier JSON de l'exemple « Factur-X : la facture électronique ». La facture électronique que la loi française impose depuis septembre 2026 : un seul fichier, une page qu'une personne lit et la même facture à l'intérieur en XML. Plus rien à rapprocher ensuite, puisqu'il n'y a jamais qu'une seule facture.

JSON 89 lignes

Ce fichier est une requête : une application l'envoie par le réseau au serveur, qui crée le PDF et le renvoie. Il donne la même page que les versions Rust et Python de cet exemple. Une requête nomme chaque fichier qu'elle emploie, jamais le contenu de ces fichiers ; l'appel porte la requête et les fichiers ensemble. Une police que le serveur détient déjà, comme DejaVuSans, se nomme sans rien y joindre. Envoyez la requête à l'adresse que donne la page de l'API.

Cette requête nomme des fichiers qu'elle ne contient pas : invoice_xml. Chacun voyage à côté de la requête, dans le même appel, comme une pièce fournie nommée exactement comme la requête la nomme ici — la description dit quel nom joue quel rôle, vous nommez donc vos fichiers comme vous voulez. Une requête qui nomme un fichier dont l'appel ne contient rien est refusée.

À quoi sert cet exemple

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.

Ce que montre cet exemple

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
{
  "items": [
    {
      "type": "text",
      "rect": {
        "llx": 72.0,
        "lly": 760.0,
        "urx": 520.0,
        "ury": 779.2
      },
      "content": [
        "Invoice No. 1964413"
      ],
      "font": "DejaVuSans",
      "font_size": 16.0
    },
    {
      "type": "text",
      "rect": {
        "llx": 72.0,
        "lly": 728.0,
        "urx": 520.0,
        "ury": 741.2
      },
      "content": [
        "Issued 14 July 2026 — due within 30 days"
      ],
      "font": "DejaVuSans",
      "font_size": 11.0
    },
    {
      "type": "text",
      "rect": {
        "llx": 72.0,
        "lly": 706.0,
        "urx": 520.0,
        "ury": 719.2
      },
      "content": [
        "Rendering engine development .............. 4 250.00 EUR"
      ],
      "font": "DejaVuSans",
      "font_size": 11.0
    },
    {
      "type": "text",
      "rect": {
        "llx": 72.0,
        "lly": 684.0,
        "urx": 520.0,
        "ury": 697.2
      },
      "content": [
        "VAT at 20 % ................................. 850.00 EUR"
      ],
      "font": "DejaVuSans",
      "font_size": 11.0
    },
    {
      "type": "text",
      "rect": {
        "llx": 72.0,
        "lly": 662.0,
        "urx": 520.0,
        "ury": 676.4
      },
      "content": [
        "Total due ................................. 5 100.00 EUR"
      ],
      "font": "DejaVuSans",
      "font_size": 12.0
    }
  ],
  "metadata": {
    "title": "Invoice No. 1964413",
    "author": "Olivier Pons",
    "subject": "An electronic invoice, in the Factur-X format",
    "producer": "hqf-pdf",
    "created": "2026-07-14T09:30:00+02:00"
  },
  "archive": "pdfa3b",
  "invoice": {
    "xml": "invoice_xml",
    "profile": "MINIMUM",
    "version": "1.0",
    "relationship": "data",
    "issued": "2026-07-14T09:30:00+02:00"
  }
}