XRechnung öffnen und lesen
Von evoicely · Zuletzt geprüft am 20. Oktober 2026
Eine XRechnung ist eine reine XML-Datei ohne eigenes Layout. Browser und Texteditor zeigen sie deshalb als Code an. Um sie als Rechnung zu lesen, öffnen Sie sie in einem Viewer, der das XML darstellt. Am schnellsten geht das mit unserem kostenlosen Validator: Er zeigt die Datei wie eine Papierrechnung an und prüft sie im selben Schritt gegen die offiziellen Regeln, ohne sie zu speichern. Die KoSIT, die den Standard XRechnung betreut, veröffentlicht außerdem offizielle Stylesheets, die eine XRechnung in HTML oder PDF umwandeln. Oder Sie lesen das XML direkt; die Übersicht unten zeigt, wo was steht.
Warum eine XRechnung wie Code aussieht
XRechnung ist die deutsche Ausprägung der europäischen Norm EN 16931 für E-Rechnungen. Sie besteht nur aus strukturierten Daten, geschrieben in einer von zwei XML-Syntaxen: UBL (Wurzelelement Invoice oder CreditNote) oder UN/CEFACT CII (Wurzelelement CrossIndustryInvoice).
Einen PDF-Teil gibt es nicht. Bei ZUGFeRD ist das anders: Es ist ein PDF mit eingebettetem XML, Menschen lesen das PDF, Software das XML (XRechnung oder ZUGFeRD?).
Die XML-Datei ist die Rechnung. Jede Darstellung davon, am Bildschirm oder als PDF, ist nur eine Lesefassung. Bewahren Sie die XML-Datei auf, die Sie erhalten oder versendet haben; mehr dazu unter E-Rechnungspflicht in Deutschland.
Möglichkeit 1: ein Online-Viewer
Öffnen Sie den Validator, wählen Sie die XML-Datei aus oder fügen Sie ihren Inhalt ein und klicken Sie auf Rechnung prüfen. Sie erhalten:
- Die Rechnung in lesbarer Form: Verkäufer und Käufer mit Anschrift, USt-IdNr., elektronischer Adresse und Kontakt; Rechnungsnummer, Daten, Währung und Rechnungstyp; Käuferreferenz bzw. Leitweg-ID und Bestellreferenz; jede Position mit Menge, Preis, Umsatzsteuer und Leistungszeitraum; Zu- und Abschläge; die Steueraufschlüsselung und die Summen; Bankverbindung, Zahlungsbedingungen und Bemerkungen; und die Namen eventueller Anhänge.
- Das Prüfergebnis: ob die Datei das XML-Schema, die Regeln der EN 16931 und die XRechnung-Regeln erfüllt, mit einer Erklärung zu jedem Fehler.
Die Werte erscheinen genau so, wie sie in der Datei stehen, ohne dass etwas nachgerechnet wird. Sie sehen also, was die Software des Rechnungsempfängers liest. Das funktioniert für XRechnung in UBL und CII, für ZUGFeRD / Factur-X (als XML oder als PDF mit eingebettetem XML) und für Peppol BIS Billing 3.0. Die Datei wird im Arbeitsspeicher verarbeitet und nie gespeichert.
Sie brauchen eine Fassung zum Drucken oder Weitergeben? Auf der Ergebnisseite können Sie die Rechnung als lesbares PDF speichern, mit dem Prüfergebnis. Wie das geht, zeigt unser XRechnung-Viewer.
Möglichkeit 2: die offizielle Visualisierung der KoSIT
Die KoSIT veröffentlicht die XRechnung-Visualisierung: XSLT-Stylesheets unter der Apache-2.0-Lizenz, die eine XRechnung oder EN-16931-Rechnung in UBL oder CII als HTML oder PDF darstellen.
Das geschieht in zwei Schritten: Zuerst wird die Rechnung in ein Zwischenformat umgewandelt, das dem semantischen Datenmodell der XRechnung folgt, und daraus dann HTML (xrechnung-html.xsl) oder PDF (xr-pdf.xsl) erzeugt.
Sie brauchen dafür einen XSLT-Prozessor; Einzelheiten stehen im README des Repositorys (auf Englisch). Die Versionen finden Sie auf der Release-Seite und zusammen mit den XRechnung-Bundles auf xeinkauf.de.
Das ist die richtige Wahl, wenn Sie die Anzeige in Ihre eigene Software einbauen wollen oder eine PDF-Fassung brauchen. Das Projekt weist selbst darauf hin, dass seine Ausgabe für Menschen zum Lesen gedacht und keine gültige XRechnung ist. Sie ersetzt die XML-Datei also nicht.
Möglichkeit 3: das XML selbst lesen
Jeder Browser und jeder Texteditor öffnet die Datei; die meisten Browser zeigen XML als aufklappbaren Baum. Jeder Wert steht in einem Element mit festem Namen. Wenn Sie die Namen kennen, finden Sie also alles. Diese Tabelle zeigt, wo die wichtigsten Felder stehen, mit Werten aus einer fiktiven Beispielrechnung, so wie sie in der Datei geschrieben sind:
| Was | UBL | CII | Beispiel |
|---|---|---|---|
| Format und Version (BT-24) | cbc:CustomizationID | ram:GuidelineSpecifiedDocumentContextParameter/ram:ID | …kosit:xrechnung_3.0 |
| Rechnungsnummer (BT-1) | cbc:ID (oberste Ebene) | rsm:ExchangedDocument/ram:ID | INV-2026-0001 |
| Rechnungsdatum (BT-2) | cbc:IssueDate | ram:IssueDateTime | 2026-10-01 (UBL), 20261001 (CII) |
| Rechnungstyp (BT-3) | cbc:InvoiceTypeCode | rsm:ExchangedDocument/ram:TypeCode | 380 = Rechnung, 381 = Rechnungskorrektur (Credit note) |
| Verkäufer | cac:AccountingSupplierParty | ram:SellerTradeParty | Beispiel Software GmbH |
| Käufer | cac:AccountingCustomerParty | ram:BuyerTradeParty | Kunde Handels AG |
| Käuferreferenz / Leitweg-ID (BT-10) | cbc:BuyerReference | ram:BuyerReference | PO-4711 |
| Positionen (BG-25) | cac:InvoiceLine | ram:IncludedSupplyChainTradeLineItem | Pro plan (monthly), 49.00 |
| Steueraufschlüsselung (BG-23) | cac:TaxTotal/cac:TaxSubtotal | ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax | 19 % auf 78.97 = 15.00 |
| Fälliger Betrag (BT-115) | cac:LegalMonetaryTotal/cbc:PayableAmount | ram:DuePayableAmount | 93.97 |
| Fälligkeitsdatum (BT-9) | cbc:DueDate | ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime | 2026-10-15 |
| Bankverbindung (BT-84) | cac:PaymentMeans/cac:PayeeFinancialAccount/cbc:ID | ram:PayeePartyCreditorFinancialAccount/ram:IBANID | DE02 1203 0000 0000 2020 51 |
Beträge stehen im XML immer mit Punkt als Dezimaltrennzeichen und ohne Tausenderpunkte: 78.97 bedeutet 78,97 €.
Hier der Anfang derselben Rechnung in UBL. Sie wurde aus fiktiven Daten mit demselben Code erzeugt, den evoicely verwendet, und die vollständige Datei besteht den offiziellen KoSIT-Validator; die Kommentare <!-- --> sind für diese Seite ergänzt.
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" ...>
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>INV-2026-0001</cbc:ID> <!-- Rechnungsnummer -->
<cbc:IssueDate>2026-10-01</cbc:IssueDate>
<cbc:DueDate>2026-10-15</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode> <!-- 380 = Handelsrechnung -->
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>PO-4711</cbc:BuyerReference>
<cac:InvoicePeriod> <!-- Leistungszeitraum -->
<cbc:StartDate>2026-10-01</cbc:StartDate>
<cbc:EndDate>2026-10-31</cbc:EndDate>
</cac:InvoicePeriod>
<cac:AccountingSupplierParty> <!-- Verkäufer -->
<cac:Party>
<cbc:EndpointID schemeID="EM">billing@beispiel-software.example</cbc:EndpointID>
<cac:PostalAddress>
<cbc:StreetName>Musterstraße 1</cbc:StreetName>
<cbc:CityName>Berlin</cbc:CityName>
<cbc:PostalZone>10115</cbc:PostalZone>
...
<cac:InvoiceLine>
<cbc:ID>2</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">3</cbc:InvoicedQuantity> <!-- C62 = Eins (Stück) -->
<cbc:LineExtensionAmount currencyID="EUR">29.97</cbc:LineExtensionAmount> <!-- netto -->
<cac:Item>
<cbc:Name>Extra seats</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID> <!-- Regelsteuersatz -->
<cbc:Percent>19</cbc:Percent>
...
<cac:Price>
<cbc:PriceAmount currencyID="EUR">9.99</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
Was oft verwirrt
- Positionsbeträge sind netto. Die Umsatzsteuer wird nicht je Position aufgeschlagen, sondern steht in der Steueraufschlüsselung, ein Eintrag je Steuerkategorie und Steuersatz. Der Bruttobetrag steht in
cbc:TaxInclusiveAmount(UBL) bzw.ram:GrandTotalAmount(CII). - Der fällige Betrag kann 0 sein. Wurde die Rechnung schon bezahlt, etwa per Karte, wird der gezahlte Betrag (BT-113,
cbc:PrepaidAmountbzw.ram:TotalPrepaidAmount) abgezogen. - Codes statt Wörter. Steuerkategorien:
SRegelsteuersatz,ZNullsatz,Esteuerbefreit,AEReverse Charge (Steuerschuldnerschaft des Leistungsempfängers),Kinnergemeinschaftliche Lieferung. Zahlungsarten:58SEPA-Überweisung,59SEPA-Lastschrift,48Bankkarte. - Datumsangaben in CII haben die Form
20261001mitformat="102", das heißt JJJJMMTT. - Die Reihenfolge der Elemente ist für Software wichtig, nicht für Sie. Wenn Sie eine Datei von Hand bearbeiten, prüfen Sie sie danach erneut.
Anhänge im XML
Eine XRechnung kann rechnungsbegründende Unterlagen, etwa einen Stundennachweis, im XML mitführen (BG-24). In UBL stehen sie in cac:AdditionalDocumentReference/cac:Attachment/cbc:EmbeddedDocumentBinaryObject, Base64-kodiert, mit den Attributen filename und mimeCode.
Die EN 16931 erlaubt PDF, PNG, JPEG, CSV sowie Tabellen als Excel (XLSX) oder OpenDocument (Regel BR-CL-24).
Im Texteditor erscheinen sie als langer Zeichenblock. Unser Validator zeigt ihre Namen und Typen an; um einen Anhang zu öffnen, dekodieren Sie den Base64-Inhalt in eine Datei mit diesem Namen oder verwenden ein Werkzeug, das Anhänge extrahiert.
Sie haben ein PDF bekommen?
Ist die Rechnung ein PDF, kann es eine ZUGFeRD- oder Factur-X-Datei mit eingebettetem XML sein. Der Validator liest und prüft auch das eingebettete XML. Enthält ein PDF kein XML, ist es eine gewöhnliche PDF-Rechnung, keine E-Rechnung.
Weitere Leitfäden
- XRechnung validieren: der offizielle KoSIT-Validator Schritt für Schritt.
- Häufige XRechnung-Fehler: was BR-DE-15 und die anderen Regeln bedeuten.
- Mapping a Stripe invoice to EN 16931 (auf Englisch): dieselben Felder aus Sicht des Rechnungsstellers.
- XRechnung oder ZUGFeRD?
Was evoicely dabei übernimmt
Öffnen Sie eine XRechnung im Viewer, kostenlos und ohne Anmeldung. Wenn Sie Rechnungen mit Stripe stellen, macht evoicely daraus XRechnung und ZUGFeRD und prüft jede Datei mit den offiziellen Validatoren. Jetzt starten, kostenlos für 10 E-Rechnungen im Monat.
Dies sind allgemeine Informationen, keine Rechts- oder Steuerberatung. Klären Sie mit Ihrer Steuerberatung, was für Ihr Unternehmen gilt.