Auf dieser Seite
- Die zwei Syntaxen: UBL 2.1 und UN/CEFACT CII
- Warum die Norm kein Sichtformat vorschreibt
- Sichtdokument erzeugen: KoSIT-XSLT
- Technischer Ablauf (zweistufig)
- Einbindung in eigene Systeme
- Einbindung in den Rechnungseingang
- GoBD: Original-XML ist das Aufbewahrungsobjekt
- Häufige Encoding- und Öffnen-Fehler
- UTF-8 BOM
- Whitespace vor der XML-Deklaration
- Namespace-Mismatch
- Zeichensatz-Probleme in Positionstexten
- Versionspfad: XRechnung 3.0.2 → 4.0
- Weiterführende Ressourcen
- Systemische Einbindung statt Einzel-Viewer
Dieser Artikel richtet sich an ERP-Berater, IT-Verantwortliche und Steuerberater, die verstehen wollen, wie eine XRechnung intern aufgebaut ist, wie aus dem Roh-XML ein lesbares Dokument wird und was GoBD konkret für die Archivierung bedeutet. Der kaufmännische Einstieg steht auf der Übersichtsseite XRechnung öffnen & lesen.
Die zwei Syntaxen: UBL 2.1 und UN/CEFACT CII
XRechnung ist keine Dateiformat-Eigenerfindung, sondern die deutsche CIUS (Core Invoice Usage Specification) zur europäischen Norm EN 16931-1. Die Norm definiert ein semantisches Datenmodell – sie schreibt aber nicht vor, in welcher XML-Syntax es serialisiert wird. Erlaubt sind zwei Syntaxen:
| Merkmal | UBL 2.1 (OASIS) | UN/CEFACT CII |
|---|---|---|
| Root-Element | <Invoice> (UBL-Namespace urn:oasis:names:specification:ubl:schema:xsd:Invoice-2) | <CrossIndustryInvoice> (Namespace urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100) |
| Namespace-Präfixe | cbc, cac | ram, rsm, udt |
| Rechnungsnummer | direkt in cbc:ID unter dem Root | in rsm:ExchangedDocument/ram:ID (eine Ebene tiefer) |
| Erweiterungsmechanismus | Extension Point im Core vorhanden | nicht im Core, nur außerhalb |
| Peppol-Pflicht | ja – Peppol BIS Billing 3.0 verlangt UBL | nein |
| ZUGFeRD/Factur-X | nein | ausschließlich CII |
Faustregel: Bundesbehörden akzeptieren beide Syntaxen gleichwertig. Wer international über Peppol sendet, braucht UBL. Wer ZUGFeRD in das PDF einbettet, bekommt automatisch CII. Beide Syntaxen sind inhaltlich äquivalent – ein validierender Parser muss beide beherrschen.
Warum die Norm kein Sichtformat vorschreibt
EN 16931-1 beschreibt ausschließlich das semantische Modell: welche Felder es gibt (z. B. BT-1 Invoice number, BT-9 Payment due date, BG-25 Invoice line), welche davon Pflicht sind und welche Codierungen zulässig sind. Ein Layout – Schriftart, Spaltenbreite, Logo-Position – ist bewusst außerhalb des Normumfangs.
Gründe dafür:
- Die Rechnung soll maschinenlesbar sein, nicht druckbar. Der Empfänger importiert die Daten in sein ERP; ein vorgeschriebenes Layout wäre für die Buchung nutzlos.
- Unterschiedliche Empfangssysteme (Portale, ERPs, Marktplätze) brauchen unterschiedliche Darstellungen. Eine zentrale Visualisierungsvorschrift würde diese Flexibilität aufheben.
- Das Original-Dokument ist das XML – jede visuelle Darstellung ist eine abgeleitete, nicht normative Kopie.
Die Konsequenz: Wer die Datei öffnet und „lesen" möchte, bekommt ohne Viewer ausschließlich den XML-Quelltext zu sehen (verfügbare XRechnung-Lösungen im Überblick).
Sichtdokument erzeugen: KoSIT-XSLT
Die Koordinierungsstelle für IT-Standards (KoSIT) stellt ein Open-Source-XSLT-Paket (Apache 2.0) bereit, das XRechnung-XML in lesbare HTML- oder PDF-Dokumente transformiert.
Technischer Ablauf (zweistufig)
- Normalisierung: Das Eingabe-XML (UBL oder CII) wird in ein syntax-neutrales Zwischen-XML überführt. Dieser Schritt gleicht die strukturellen Unterschiede zwischen den beiden Syntaxen aus.
- Rendering: Das Zwischen-XML wird per
xrechnung-html.xslin HTML oder perxr-pdf.xslin ein druckbares PDF transformiert.
Das aktuelle Release (2026-01-31) ist kompatibel mit XRechnung 3.0.x.
Einbindung in eigene Systeme
<!-- Beispiel: Saxon-HE-Aufruf auf der Kommandozeile -->
java -jar saxon-he.jar \
-s:eingangsrechnung.xml \
-xsl:xrechnung-html.xsl \
-o:sichtdokument.html
In Java- und .NET-Umgebungen ist der Aufruf entsprechend über die JAXP- bzw. System.Xml.Xsl-API möglich. Viele DMS- und ECM-Plattformen integrieren XSLT-Transformationen nativ; das KoSIT-Stylesheet lässt sich dort direkt einbinden.
Wichtig: Das erzeugte HTML oder PDF ist kein gültiges XRechnung-Dokument und darf nicht anstelle der Original-XML archiviert werden (siehe GoBD-Abschnitt unten).
Einbindung in den Rechnungseingang
Für eine vollständige Verarbeitungskette im Eingangsbereich sind mindestens drei Schritte nötig:
- Empfang & Validierung: Die eingehende XML gegen das offizielle KoSIT-Schematron validieren (Pflichtfelder, Codelisten, Rechenregeln). Fehlerhafte Rechnungen sollten vor der Weiterleitung zurückgewiesen werden.
- Sichtdokument erzeugen: KoSIT-XSLT oder ein gleichwertiger Renderer erzeugt das HTML/PDF für die manuelle Sichtprüfung und Freigabe.
- Daten extrahieren & buchen: XPath-Abfragen oder eine dedizierte Parser-Bibliothek (z. B.
mustang-projectfür Java) extrahieren Betrag, Fälligkeitsdatum, Steuersatz und Positionszeilen für den ERP-Import.
Portale (Peppol-AP, OZG-RE, ZRE) liefern die Datei meist bereits validiert aus – der Validierungsschritt kann dann entfallen oder wird auf Plausibilität reduziert.
GoBD: Original-XML ist das Aufbewahrungsobjekt
Das BMF-Schreiben zu den GoBD (28.11.2019) konkretisiert § 147 AO für elektronische Unterlagen: Werden aufzeichnungs- und aufbewahrungspflichtige Daten, Datensätze und elektronische Dokumente im Unternehmen erzeugt oder empfangen, müssen sie auch in dieser Form aufbewahrt werden – und dürfen vor Ablauf der Frist nicht gelöscht werden.
Für den XRechnung-Eingang bedeutet das:
- Aufbewahrungsobjekt ist die Original-XML-Datei, so wie sie empfangen wurde – unveränderlich, mit Zeitstempel des Empfangs.
- Das gerenderte PDF oder das erzeugte HTML ist eine Arbeitskopie, kein Ersatz für die XML.
- Aufbewahrungsfrist für Eingangsrechnungen: 8 Jahre (§ 147 Abs. 1 Nr. 4 i.V.m. Abs. 3 AO; § 14b Abs. 1 UStG n.F.; § 257 Abs. 1 Nr. 4 HGB – geändert durch BEG IV, in Kraft ab 01.01.2025). Die 10-Jahresfrist gilt weiterhin für Handelsbücher, Inventare und Jahresabschlüsse (§ 147 Abs. 1 Nr. 1 AO). Quellen: § 14b UStG · Hetkamp-Kanzlei: BEG IV
- Die XML muss indexiert und maschinell auswertbar bleiben; eine Ablage in einem nicht lesbaren Archiv-Format genügt nicht (GoBD-Grundsatz der maschinellen Auswertbarkeit).
Praxis-Empfehlung: Original-XML und Sichtdokument parallel ablegen, XML als primäres Aufbewahrungsobjekt kennzeichnen, Sichtdokument als Referenz verknüpfen.
Im Zweifel stimmen Sie die Archivierungsorganisation mit Ihrem Steuerberater ab – die vorstehenden Angaben geben den Stand der GoBD (Stand: 2019, ergänzt 2025) wieder und ersetzen keine steuerliche Einzelberatung.
Häufige Encoding- und Öffnen-Fehler
UTF-8 BOM
Das KoSIT-Schematron verlangt encoding="UTF-8" ohne Byte Order Mark (BOM). Einige Windows-Editoren (Notepad, ältere Excel-XML-Exporte) setzen ein UTF-8-BOM (EF BB BF) vor die XML-Deklaration. Das macht das Dokument für strikte XML-Parser ungültig. Lösung: Export ohne BOM konfigurieren oder das BOM beim Empfang programmatisch entfernen.
Whitespace vor der XML-Deklaration
Leerzeichen oder Zeilenumbrüche vor <?xml version="1.0" encoding="UTF-8"?> sind nach XML-Spezifikation nicht erlaubt. ERP-Middleware-Zwischenstufen fügen solche Zeichen gelegentlich ein. Symptom: Parser wirft content is not allowed in prolog.
Namespace-Mismatch
Wird eine CII-Datei mit einem UBL-spezifischen Parser verarbeitet (oder umgekehrt), schlägt die Deserialisierung fehl, weil Root-Element und Namespaces nicht übereinstimmen. Robuste Implementierungen erkennen die Syntax anhand des Root-Elements automatisch.
Zeichensatz-Probleme in Positionstexten
Sonderzeichen in Positionsbeschreibungen (z. B. typografische Anführungszeichen, Streckendash) müssen als XML-Entities oder in korrektem UTF-8 kodiert sein. Werden sie aus einem Legacy-System in ISO-8859-1 geliefert und als UTF-8 deklariert, entstehen Mojibake-Artefakte.
Versionspfad: XRechnung 3.0.2 → 4.0
| Version | Veröffentlicht | Wesentliches |
|---|---|---|
| XRechnung 3.0 | 01.08.2023 | Umsetzung EN 16931-1:2017, obligatorischer Einsatz ab 01.01.2025 |
| XRechnung 3.0.2 | 03.07.2024 | Bugfix-Release: Kardinalitätsfehler in BG-27/BG-28 behoben |
| XRechnung 4.0 | geplant Mitte–Ende 2026 | Umsetzung EN 16931-1:2026; neue Erweiterungsarchitektur, XML-Attachments im Kernmodell, gelockerte 1:1:1-Beziehung Bestellung–Lieferung–Rechnung |
Quellen: xeinkauf.de – XRechnung 4.0 · The Invoicing Hub – XRechnung 3.0.2
Was das für Implementierungen bedeutet: Version 3.0.x und 4.0 werden strukturell verschieden sein – Schematron-Sets, XSLT-Stylesheets und XPath-Abfragen müssen bei der Migration auf 4.0 aktualisiert werden. KoSIT wird ein neues Visualisierungs-Release veröffentlichen; das Timing ist noch offen. Wer heute Systeme aufbaut, sollte die Syntax-Version beim Empfang auslesen und versioniert verarbeiten.
Weiterführende Ressourcen
- xeinkauf.de – XRechnung Spezifikation & Releases
- KoSIT xrechnung-visualization (GitHub)
- ELSTER E-Rechnungs-Viewer – kostenfrei, kein Account erforderlich
- BMF GoBD-Schreiben (AO-Handbuch 2024)
Systemische Einbindung statt Einzel-Viewer
Einzelne Viewer lösen das Sichtbarkeitsproblem manuell – Rechnung für Rechnung. Wer Eingangsrechnungen in die Liquiditätsplanung überführen will, braucht eine systemische Lösung: XRechnung öffnen & lesen – Übersicht zeigt, wie der Dienst die XML automatisch verarbeitet, validiert und direkt in die 13-Wochen-Liquiditätsvorschau einbucht – ohne manuellen XSLT-Aufruf, ohne separate Ablage.
Weiterführend: E-Rechnungspflicht 2025–2028 – was gilt wann und ZUGFeRD & Factur-X erklärt.