Factur-X: die elektronische Rechnung

Seit dem 1. September 2026 muss jedes umsatzsteuerpflichtige Unternehmen in Frankreich eine elektronische Rechnung empfangen können, und die großen und mittleren müssen ihre in dieser Form versenden. Kleinere Unternehmen folgen am 1. September 2027. Eine Rechnung, die nur eine gut gemachte Seite ist, zählt nicht mehr als Rechnung, und das Nichtausstellen in elektronischer Form wird mit 50 € pro Rechnung geahndet, bis zu 15 000 € im Jahr.

Eine elektronische Rechnung ist kein per E-Mail gesendetes PDF. Sie ist die Rechnung, als Einträge geschrieben, die eine Maschine liest, in einer der drei Formen, die die französische Reform akzeptiert: Zwei davon sind XML-Dateien ganz ohne Seite, und die dritte ist Factur-X, ein PDF, das dieses XML in sich trägt. Factur-X ist die einzige der drei, die ein Mensch noch öffnen und lesen kann, und die in Frankreich am meisten genutzte.

Diese Datei ist eine einzige. Ein Mensch öffnet sie und sieht die Seite: die Leistung, die Steuer zu zwanzig Prozent, fünftausendeinhundert Euro zu zahlen. Eine Buchhaltungssoftware öffnet dieselbe Datei, findet die darin angehängte Rechnung und liest dieselben Beträge, ohne dass jemand sie abtippt. Beide können sich nicht widersprechen, denn es gibt nur ein Dokument — und was es trägt, steht weiter unten auf dieser Seite gedruckt, aus genau der hier angebotenen Datei wieder herausgeholt.

Was hineinkommt, wählen Sie. Diese Bibliothek schreibt jede der fünf Detailstufen, die die Norm definiert: Minimum, die wenigen Einträge, die ein Dokument überhaupt zum Buchen braucht; Basic WL, der Kopf einer Rechnung ohne Positionen; Basic, die Positionen dazu; EN 16931, alles, was die europäische Norm verlangt; und Extended, wiederum alles, einschließlich dessen, was nur manche Branchen verwenden. Sie schreibt die Datei als PDF/A-3, die Form, in der eine Rechnung jahrelang abgelegt bleibt, hängt Ihr XML unter dem von Ihnen angegebenen Namen an und gibt im Dokument selbst an, dass der Anhang die Rechnung ist und keine mitreisende Datei. Dieselbe Rechnung wird aus Rust geschrieben, aus Python oder als die Beschreibung, die ein Programm von Ihnen an unsere Adresse sendet.

Und was hineinkommt, muss zu dem passen, was das Dokument darüber sagt. Eine Datei, die eine Rechnung nach EN 16931 erklärt und eine Minimalrechnung enthält, schreiben wir nicht: Die Rechnung wird zurückgelesen, bevor das Dokument hinausgeht, und das Dokument wird abgelehnt, statt sich widersprechend versendet zu werden. Ebenso bei einer Rechnung, die unter einem Namen angehängt ist, unter dem das Dokument keine Datei trägt, und bei einer Datei, die gar keine Rechnung ist. Was die Rechnung inhaltlich sagt, ist Ihre Sache und wird hier nicht beurteilt — aber die beiden Hälften der Datei können nicht mehr Verschiedenes sagen.

Was dieses Beispiel zeigt

  • Eine Seite: die Leistung, die Steuer zu zwanzig Prozent und fünftausendeinhundert Euro zu zahlen — und dieselbe Rechnung in der Datei, als das XML geschrieben, das Buchhaltungssoftware liest.
  • Das Dokument sagt, was es trägt: eine Rechnung, Factur-X Version 1.0, Detailstufe Minimum, angehängt unter factur-x.xml und als eigene Daten des Dokuments getragen — und jede der fünf Detailstufen, von Minimum bis Extended, auf dieselbe Weise geschrieben.
  • veraPDF übergeben, einem kostenlosen Programm, das am Schreiben nicht beteiligt war, als Datei, die sich zur Langzeitaufbewahrung eignet — und die Rechnung darin wieder herausgeholt und mit dem verglichen, was hineinging.

Der Quellcode, vollständig

Nichts ist weggelassen und nichts vereinfacht: Das ist das Programm genau so, wie es läuft, für den Entwickler, der diese Bibliothek nutzt. Die dritte ist die Beschreibung selbst: eine schlichte Liste dessen, was die Seite sagen muss, und das wird dem Dienst gesendet.

Den Rust-Quellcode lesen Den Python-Quellcode lesen Den JSON-Quellcode lesen

Das Dokument selbst

Das Dokument auf Englisch öffnen Das Dokument auf Französisch öffnen Das Dokument auf Deutsch öffnen Das Dokument auf Spanisch öffnen Das Dokument auf Italienisch öffnen Das Dokument auf Portugiesisch öffnen

Factur-X: die elektronische Rechnung, erste Seite

Optimiert wiegt dieses Dokument 23.0 kB — mindestens 80 % leichter, als die meisten PDF-Generatoren es schreiben würden

Das Dokument ist leichter als vorher, und jede Seite sieht noch genau gleich aus. Die Zeile dieses Dokuments in der Tabelle aller Beispiele ansehen.

Die in dieser Datei verborgene Rechnung

Hier wird nichts neben der Rechnung ausgeschrieben: Das ist der Anhang selbst, alle 1 977 Bytes davon, aus der Datei oben so wieder herausgeholt, wie eine Buchhaltungssoftware ihn herausholt. Die Rechnung hängt ihn unter factur-x.xml an, gibt an, dass er eine Rechnung nach Version 1.0 der Spezifikation auf der Detailstufe MINIMUM ist, und erklärt ihn zu den eigenen Daten der Rechnung statt zu einer Datei, die zufällig mitreist.

Die Detailstufe Minimum trägt, was unten zu lesen ist: wer verkauft und unter welcher Nummer er registriert ist, wer kauft, die Nummer der Rechnung und der Tag ihrer Ausstellung, die Währung und die drei Summen — netto, die Steuer selbst und der zu zahlende Betrag. Die ausführlicheren Stufen fügen die Positionen der Rechnung, die Anschriften, die Zahlungsangaben und den Rest hinzu.

<?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">
  <rsm:ExchangedDocumentContext>
    <ram:GuidelineSpecifiedDocumentContextParameter>
      <ram:ID>urn:factur-x.eu:1p0:minimum</ram:ID>
    </ram:GuidelineSpecifiedDocumentContextParameter>
  </rsm:ExchangedDocumentContext>
  <rsm:ExchangedDocument>
    <ram:ID>1964413</ram:ID>
    <ram:TypeCode>380</ram:TypeCode>
    <ram:IssueDateTime>
      <udt:DateTimeString format="102">20260714</udt:DateTimeString>
    </ram:IssueDateTime>
  </rsm:ExchangedDocument>
  <rsm:SupplyChainTradeTransaction>
    <ram:ApplicableHeaderTradeAgreement>
      <ram:SellerTradeParty>
        <ram:Name>Olivier Pons</ram:Name>
        <ram:SpecifiedLegalOrganization>
          <ram:ID schemeID="0002">123456789</ram:ID>
        </ram:SpecifiedLegalOrganization>
        <ram:PostalTradeAddress>
          <ram:CountryID>FR</ram:CountryID>
        </ram:PostalTradeAddress>
      </ram:SellerTradeParty>
      <ram:BuyerTradeParty>
        <ram:Name>ACME Ltd</ram:Name>
      </ram:BuyerTradeParty>
    </ram:ApplicableHeaderTradeAgreement>
    <ram:ApplicableHeaderTradeDelivery/>
    <ram:ApplicableHeaderTradeSettlement>
      <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
      <ram:SpecifiedTradeSettlementHeaderMonetarySummation>
        <ram:TaxBasisTotalAmount>4250.00</ram:TaxBasisTotalAmount>
        <ram:TaxTotalAmount currencyID="EUR">850.00</ram:TaxTotalAmount>
        <ram:GrandTotalAmount>5100.00</ram:GrandTotalAmount>
        <ram:DuePayableAmount>5100.00</ram:DuePayableAmount>
      </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
    </ram:ApplicableHeaderTradeSettlement>
  </rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>

Beispiele in der Nähe

Ein Blatt, das misst, was es angibt

Drei Lineale — Zentimeter, Zoll und Punkt — auf einer Seite, die dem, was sie druckt, sagt, sie genau in der gezeichneten Größe auszugeben und nichts anderes anzubieten. Legen Sie ein Maßband an den gedruckten Bogen, und Sie können es selbst prüfen.

Ein Register, dessen Seiten sagen, woher sie stammen

Zwei Sitzungen in einer Datei gebunden. Jede Seite trägt einen eigenen Vermerk — was sie ist, wessen Hand sie geschrieben hat, der Tag, an dem sie geschrieben wurde —, das Foto auf der zweiten Seite trägt ebenfalls einen, und jede Transkription ist an die Seite gebunden, die sie transkribiert, statt an die Datei insgesamt.

Eine Datei, die ihre eigenen Einträge erklärt

Das Aktenzeichen einer Registratur, die Abteilung, aus der es stammt, das Datum, bis zu dem das Dokument aufzubewahren ist, und seine Einstufung, in einer Datei, die ein Archiv noch annimmt. Keine Archivregel weiß, was ein Aufbewahrungsdatum ist; jeder Eintrag trägt daher eine Beschreibung seiner selbst, und diese Beschreibung lässt eine Prüfsoftware eine Angabe akzeptieren, die Sie allein erfunden haben. Eine zweite Seite fügt einen Ausleihvermerk hinzu, dessen Einträge ein Ja oder Nein, ein Dateityp, ein Personenname, eine Messung und zwei Webadressen sind, und gibt dieser Seite einen eigenen verborgenen Vermerk.

Ein Lieferschein, der seine eigene Bestellung kennt

Jede Zeile des Scheins trägt die Bestellung, für die sie kommissioniert wurde, die Artikelnummer und das Regal, aus dem sie stammt, und druckt nichts davon. Die Stelle, an der der Fahrer unterschreibt, trägt die Tour und den Transporter, und eine neben der Falzmarke trägt nichts außer ihrem eigenen Platz.

Ein Dokument, das sich vorlesen lässt

Zwei Seiten, die eine Kopie ihrer selbst tragen, die niemand sieht: Dies ist eine Überschrift, dies eine Tabelle, und dies ist die Reihenfolge, in der sie zu lesen sind. Eine Software, die das Dokument vorliest, folgt dem statt der Reihenfolge, in der die Markierungen gezeichnet wurden, und überspringt den Kolumnentitel. Auf der Seite sieht nichts anders aus.

Eine Liste, deren Bilder ebenfalls sprechen

Eine Teileliste, deren erste Spalte ein Bild statt eines Wortes ist. Jedes Bild trägt den Satz, den jemand an seiner Stelle hört, sodass in der Liste nichts für einen Leser verloren geht, der sie nicht sehen kann. Auf der Seite sind die Bilder einfach Bilder.

Jedes Beispiel, nach Thema