Ansichten eines Informatikers

XRechnung oder ZUGFeRD?

Hadmut
1.6.2026 14:04

Wenn einen das Leben vor die schweren Entscheidungen stellt.

Herrje. Als ob ich nicht genug Probleme hätte.

Amazon schreibt mir, sie wären jetzt so weit. Sie könnten jetzt elektronische Rechnungen (E-Rechnungen) erstellen.

Schön.

Aber, ach.

Ich soll mich einloggen und in meinen Benutzereinstellungen nicht nur die nötigen Angaben ergänzen, sondern auch auswählen, ob ich lieber XRechnung oder ZUGFeRD haben will.

Grrr.

ZUGFeRD

ZUGFeRD habe ich mir vor einiger Zeit mal angesehen und dachte nur „Ach, Du meine Güte“. Ein Definitions- und Spezifikationsmonstrum, in dem jemand versucht hat, jeden erdenklichen Geschäftsfall abzubilden. Siehe hier. Muss man sich mal klarmachen: Wenn man die Spezifikation abruft, kann man die zwar – im Gegensatz zu vielen anderen Normen – kostenlos bekommen, aber man bekommt ein ZIP-File, das (Version 2.4) sage und schreibe 457 Dateien enthält. Und viele der Dateien sind PDFs mit vielen, vielen Seiten.

Wahnsinn.

Für wirklich jeden erdenklichen Fall haben sie eigene Formate. Für eine Teilrechnung anders als für eine Gesamtrechnung. Für eine KFZ-Versicherung wieder anders. Kleinunternehmer, Miete, ÖPNV, Photovoltaik, Physiotherapie, Taxifahrten – für alles haben sie etwas definiert. Sogar für Reisekostenabrechnungen, und wenn ich mich recht erinnere, habe ich sogar etwas von Urlaubsanträgen irgendwo gesehen.

Ich habe da vor einiger Zeit mal reingesehen, um herauszufinden, wie ich elektronische Rechnungen a) einlesen und b) ausstellen kann. Ich bin Informatiker und das Lesen solcher Spezifikationen ist eigentlich mein Geschäft, mein Beruf. Neulich sagte mir ein Jurist, dass Juristen von Informatikern allgemein sehr beeindruckt seien, weil Informatiker dadurch auffielen, dass sie Texte, Gesetze, Schriftsätze usw. tatsächlich lesen würden und hinterher auch wüssten, was drin steht. Ja, ja, antwortete ich, das liegt halt daran, dass wir ständig irgendwelche Protokoll- und API-Definitionen lesen und befolgen müssen, und wir da nicht sagen, können, ach, das überfliege ich mal oder das lege ich dann so und so aus, sondern was wir machen, muss exakt passen – oder es passt eben nicht. In der Informatik ist knapp vorbei eben auch daneben.

Der – allerdings zeitlich sehr begrenzte – vor einiger Zeit erfolgte erste Versuch ZUGFeRD zu lesen, war nicht sehr erfolgreich. Ich habe zwar so das Grundprinzip verstanden (und inzwischen weitgehend schon wieder vergessen) und gesehen, dass sich da ein Gremium, bei dem ich mir nicht sicher bin, ob ich sie im Verdacht haben sollte, Koks oder Speed eingeworfen zu haben, jeden erdenklichen Fall so spezifisch abzudecken, dass ich meinen Fall darin nicht gefunden habe. Ich habe zumindest mit begrenzter Zeit nicht herausgefunden, wie ich beispielsweise eine Rechnung stellen müsste, weil es da mehrere Wege gab. Und solche Mehrdeutigkeiten sind übel, oft ein Zeichen von Überspezifikation.

Die Berufserfahrung zeigt, dass man zwar nicht zuviel in die – der Jurist würde sagen „materiellen“ – Inhalte stecken sollte, weil man sonst wieder versucht, phantasiestreuende natürlichsprachliche Inhalte zu verstehen, und dann, wenn etwas maschinenlesbar sein soll, schon strukturell-formale Unterscheidungen braucht, um eben Mehrdeutigkeiten und Interpretationsspielräume auszuschließen. Aber das Optimum ist – wie so oft – irgendwo in der Mitte. Mann kann es auch übertreiben, und wenn man es übertreibt, ist es schnell tot.

Der Klassiker ist die Konkurrenz zwischen TCP/IP und ISO-OSI. ISO-OSI war das von den Europäern entwickelte Netzwerk-Protokoll und Modell (von dem wir heute noch solche Dinge wie X.509-Zertifikate. SNMP, LDAP haben, und bis vor ein paar Jahren im Behördenbereich noch X.400-Mails hatten), das von Gremien so gebaut war, dass es wirklich alle Anforderungen erfüllte und alles rigoros und orthogonal durchspezifierte, durchdacht, logisch, aber eben so riesig gewuchert, dass es als unimplementierbar galt. LDAP hatte nur deshalb Erfolg, weil es nur eine kleine Untermenge des von ISO-OSI definierten Directory-Verzeichnisses X.500 spezifiziert und vorschreibt, nämlich das Protokoll selbst, aber die Server-Implementierung und das darunterliegende Transportprotokoll völlig offen lässt. Viele Teile, auch X.500, galten als schlicht unimplementierbar, weil viel zu komplex.

Im Gegensatz dazu war TCP/IP zwar nicht ordentlich und sauber strukturiert, und organisch gewachsen, aber a) pragmatisch, b) implementiert und c) verfügbar und einsatzfähig. Deshalb hat TCP/IP gegen ISO-OSI gewonnen wie VHS gegen Betamax.

Andererseits ist es auch wieder von Vorteil, ein möglichst umfangreiches Protokoll zu verwenden, weil man damit nämlich wieder verhindert, dass für jeden Fall irgendwas anderes auftaucht.

Also hatte ich damals beschlossen, mich vorerst nicht weiter zu befassen, weil es Zeitverschwendung sei, wenn ich mich damit abmühe, und einfach mal abwarte, bis ich ein paar E-Rechnungen bekomme, damit ich sehen kann, worauf es hinausläuft.

Soweit ich das bisher ersehen konnte, wird ZUGFeRD in PDF-Rechnungen eingebettet. Was aber zählt, wenn die sich unterscheiden? Was ist, wenn jemand eine Rechnung über 85 Euro bekommt, sich die anschaut und meint, das wäre so OK und auf Überweisen klickt, und elektronisch lautet die Rechnung aber auf 85.000 Euro?

XRechnung

XRechnung dagegen habe ich mir noch gar nicht angesehen. Das scheint aber ein reines XML-Format , ohne PDF außenrum und strukturell einfacher zu sein, was mir zunächst mal eigentlich besser gefällt. Dazu kommt, dass das in manchen Fällen, nämlich gegenüber Behörden und öffentlichen Auftraggeber das Pflichtformat ist, es deshalb sinnvoll ist, das zu implementieren.

Letztlich muss man dann aber zweie implementieren, weil viele dann wohl auf ZUGFeRD setzen werden.

Bei XRechnung geht der nächste Ärger aber schon los. Denn so auf Anhieb ist da nicht ersichtlich,

  • wer das definiert und die Definitionshoheit hat,
  • wo ich eine Spezifikation finde,
  • was die aktuelle Version ist.

Wikipedia und Google helfen auch nicht so richtig weiter. 2023 jubelte das Beschaffungsamt, dass der neue Standard XRechnung 3.0.1 verfügbar sei, man könne den bei KoSIT finden. Aber wo genau? Und warum? Geben die das heraus, oder legen die nur eine Kopie auf die Webseite?

Scrollt man da ganz nach unten, findet man XRechnung 3.0.2.

Ob es eine Rechtsgrundlage, Ermächtigung oder so etwas gibt, ist mir nicht klar. Es scheint eher so ein „Wir machen das eben jetzt so, und wenn Du nicht mitmachst, dann kaufen wir halt nicht bei Dir“-Standard zu sein. Es wirkt auf den ersten Blick kompakter und pragmatischer, übersichtlicher – ist es aber nicht:

Da fängt der Mist nämlich schon an. Eigentlich spezifizieren sie nämlich nicht, sondern verbeispielen es nur. Frage: Wie gibt man ein Vorzeichen an? Steht das davor oder dahinter, Leerzeichen erlaubt, und ist ein + erlaubt oder nur ein -, welcher Zahlenbereich, und welche Genauigkeit? Der Betrag wird mit zwei Nachkommastellen angegeben. Und was mache ich bei Sache, deren Wert mit mehr als zwei Nachkommastellen angegeben wird? Beispielsweise Benzin?

Und worauf bezieht sich „Zwei Nachkommastellen“ überhaupt? Ist das dann immer Euro, oder kann ich beispielsweise auch 0.25 Cent in Rechnung stellen?

Sie verweisen dazu auf ISO 15000-5:2014 Anhang B. Das ist an sich schön, standardisierte Formate zu verwenden, aber wo zum Teufel bekomme ich jetzt ISO 15000-5:2014 Anhang B her?

ISO-Normen kosten Geld. In diesem Fall 182 Euro. Und das ist nur der Teil 5 davon. Und ich weiß nicht, wieviele ISO-Normen ich überhaupt brauche, um XRechnung präzise lesen zu können.

Tut mir leid, wenn ich das mal so drastisch sage, aber das ist Scheiße. Oder, um mit der Zeit zu gehen, XSCHeißE. Das Acronym mit Groß- und Kleinbuchstaben ist dem digitalisierten Beamten, was das Arschgeweih der Proletenbraut war und der Bindesstrich-Doppelname der Feministin.

Wenn das nämlich nur so tut, als wäre das kompakt spezifiziert, letztlich aber nur beispielhaft faselt und alles andere teuren ISO-Normen überlässt, ist das auch nicht präzise und zugänglich definiert.

8.2. Binary Object

Mit diesem Datentyp wird eine die Rechnung begleitende Datei in der Form eines Binärobjekts abgebildet. Derartige Anhänge müssen mit der Rechnung übermittelt werden. Je Syntax muss zur Übermittlung von Anhängen genau ein Weg definiert sein. Gegebenenfalls liegen Größenbeschränkungen vor. Eine Orientierung ist im Übermittlungsleitfaden CEN/TR 16931-4 gegeben. Der Datentyp basiert auf dem Typ „Binary Object. Type“, wie in ISO 15000-5:2014 Anhang B definiert.

Und als Beispiel: application/pdf

Ah, jetzt habe ich den Unterschied verstanden:

  • ZUGFeRD ist eine menschenlesbare PDF-Rechnung, in die eine elektronische XML-Rechnung eingebettet ist.
  • XRechnung ist eine elektronische XML-Rechnung, in die eine menschenlesbare PDF-Rechnung eingebettet ist.

Genial. Deshalb brauchen wir zwei Formate.

Erinnert mich an Trinkhalme. Früher hatten wir Trinkhalme aus Plastik, die in einer Papierhülle steckten, damit sie sauber bleiben. Heute wir Trinkhalme aus Papier, die in einer Plastikhülle stecken, damit sie nicht aufweichen.

Was also tun?

Könnte es also sein, dass ich mir überlegen muss, ob ich eine Behörde oder ein Privatmann bin, und als Behörde lieber XRechnung, als Privatmann dagegen lieber ZUGFeRD haben will/soll?

Ich würde mir ja leichter tun, wenn es mal konkrete Beispiele gäbe. Oder zum Beispiel eine Test-Webseite, auf der man einfach so eine Rechnung hochladen kann und die einem dann sagt „Ist in Ordnung“ oder die Mängel auflistet, um zu testen. Wie soll ich wissen, ob ich das richtig implementiert habe, wenn ich das erst mit der Erstellung echter, ernster Rechnungen erfahren kann, die dann womöglich abgelehnt oder falsch gelesen werden?

Amazon schreibt mir

So funktioniert’s

  1. Melde dich bei deinem Amazon Business-Konto an.
  2. Gehe zu Kontoeinstellungen > Steuerinformationen.
  3. Gib deine Steuerinformationen und Unternehmensdaten ein und überprüfe sie.
  4. Gehe zu Kontoeinstellungen > Einstellungen für die elektronische Rechnungsstellung.
  5. Wähle dein bevorzugtes Format (XRechnung oder ZUGFeRD).
  6. Speichere deine Änderungen.

Nee, so funktioniert’s nicht. Schon weil ich diese Menüs so nicht habe. Bei mir heißt das „Firmenkonto verw. -> Rechnung & Versand (oder auch USt-IdNr. verwalten) -> E-Rechnungsstellung einrichten. Und da wird mir nur XRechnung, aber kein ZUGFeRD angeboten.

Also werde ich wohl schon deshalb XRechnung lernen und unterstützen müssen. Der nächste besteht dann sicher auf ZUGFeRD, womit ich nicht darum herumkommen werde, beide zu fressen.

Will ich aber XRechnung einrichten, will Amazon von mir wissen, ob ich denn auch wirklich zum Öffentlichen Sektor gehöre.

*Seufz*

Warum verschicken sie E-Mail, wonach ich mich zwischen XRechnung und ZUGFeRD entscheiden solle, wenn ich die Wahl doch eigentlich nicht habe?