Wofür du das brauchst
- XRechnung bekommen, aber nur Code gesehen: Eine XRechnung ist eine reine XML-Datei ohne PDF. Öffnest du sie im Editor, siehst du Tags statt Rechnung. Hier wird daraus wieder eine lesbare Rechnung.
- ZUGFeRD gegenprüfen: Ein ZUGFeRD-PDF trägt die Rechnungsdaten zweimal – als Bild und als eingebettete XML. Steuerlich zählt seit 2025 die XML. Weichen beide voneinander ab, gilt, was in der XML steht. Das Bundesfinanzministerium empfiehlt deshalb, den XML-Teil selbst anzuzeigen. Genau das macht dieses Tool.
- Vor dem Bezahlen: Zahlbetrag, Fälligkeit, IBAN und Verwendungszweck auf einen Blick – mit Prüfung der IBAN-Prüfziffer.
- Ablegen oder weitergeben: Über „Drucken / als PDF“ wird aus der Ansicht ein PDF, das aussieht wie eine gewohnte Papierrechnung – für die Kollegin, die Steuerberatung oder den Ordner. Die Prüfung und die technischen Angaben werden nicht mitgedruckt. Aufbewahren musst du trotzdem die XML-Datei, denn steuerlich zählt sie, nicht der Ausdruck.
Was eine E-Rechnung ist
Seit dem 1. Januar 2025 gilt im Umsatzsteuerrecht nur noch eine Rechnung in einem strukturierten elektronischen Format als E-Rechnung – in der Regel eine XML-Datei nach der europäischen Norm EN 16931. Ein normales PDF per E-Mail ist seitdem eine „sonstige Rechnung“, auch wenn es elektronisch verschickt wird.
Empfangen können muss eine E-Rechnung seit dem 1. Januar 2025 jedes Unternehmen im Inland, ohne Ausnahme – auch Kleinunternehmer. Ein E-Mail-Postfach reicht dafür aus. Ausstellen müssen Unternehmen sie für Umsätze an andere inländische Unternehmen nach Übergangsfristen:
- Für Umsätze in den Jahren 2025 und 2026 sind bis Ende 2026 noch Papier und sonstige elektronische Rechnungen erlaubt (Letztere mit Zustimmung des Empfängers).
- Für Umsätze im Jahr 2027 gilt das nur noch, wenn der Gesamtumsatz des Ausstellers im Vorjahr höchstens 800.000 Euro betrug.
- Für Umsätze ab 2028 gilt die Pflicht für alle.
Ausgenommen bleiben unter anderem Rechnungen bis 250 Euro brutto, Fahrausweise und Rechnungen von Kleinunternehmern. Sie dürfen weiter als sonstige Rechnung kommen. Was davon für dich gilt, zeigt der Check Muss ich ab 2027 E-Rechnungen ausstellen?
XRechnung, ZUGFeRD, Factur-X – was ist was?
- XRechnung ist der deutsche Standard auf Basis der EN 16931: eine reine XML-Datei ohne Bildteil. Das Feld „Käuferreferenz“ ist in einer XRechnung Pflicht; bei Rechnungen an Behörden steht dort deren Leitweg-ID.
- ZUGFeRD ist ein hybrides Format: ein PDF für das Auge mit der XML als
eingebetteter Datei. Als E-Rechnung zählt es ab Version 2.0.1 – außer in den Profilen MINIMUM
und BASIC-WL. Das französische Gegenstück heißt Factur-X; die eingebettete
Datei heißt dort meist
factur-x.xml. Das Tool liest beide. - UBL oder CII sind die zwei XML-Sprachen, für die es zur EN 16931 offizielle Prüfregeln gibt. Eine XRechnung kann in beiden vorliegen, ZUGFeRD bettet CII ein. Für dich als Leser ist das egal – das Tool zeigt beide gleich an. Braucht ein Empfänger die andere Syntax, hilft E-Rechnung umwandeln.
Und die Rechnungen auf Papier?
Ganz verschwindet Papier nicht: Rechnungen bis 250 Euro, Fahrausweise und Rechnungen von Kleinunternehmern dürfen weiter als sonstige Rechnung kommen, also auch auf Papier. Wer seine Belege trotzdem an einem Ort und durchsuchbar haben will, scannt sie. Dafür taugt ein Dokumentenscanner mit automatischem Einzug: Er zieht einen Stapel Belege nacheinander ein und erfasst mit Duplex Vorder- und Rückseite in einem Durchgang. Das geht deutlich schneller als Blatt für Blatt auf dem Flachbettscanner.
Wichtig: Ein Scan ersetzt das Papieroriginal nicht automatisch. Ob du das Original danach wegwerfen darfst, hängt von den Regeln für die Aufbewahrung ab – das klärst du am besten mit deiner Steuerberatung.
Was das Tool prüft – und was nicht
Die Prüfung hat drei Stufen. Die erste läuft sofort beim Öffnen, die anderen beiden auf Knopfdruck.
1. Rechenprüfung – rechnet die Summen nach den Regeln der EN 16931 nach und zeigt bei einem Fehler, was in der Rechnung steht und was herauskommen müsste:
- Summe der Positionen = alle Nettobeträge der Positionen zusammen (BR-CO-10)
- Nachlässe und Zuschläge auf Belegebene stimmen mit ihren Summen überein (BR-CO-11, BR-CO-12)
- Nettobetrag = Positionen − Nachlässe + Zuschläge (BR-CO-13)
- Umsatzsteuer gesamt = Summe der Steuer je Steuersatz (BR-CO-14)
- Brutto = Netto + Umsatzsteuer (BR-CO-15)
- Zahlbetrag = Brutto − bereits gezahlt + Rundung (BR-CO-16)
Dazu prüft sie die Prüfziffer jeder IBAN.
2. XML-Schema (XSD) – prüft den Aufbau der Datei: ob jedes Element erlaubt ist, in der richtigen Reihenfolge steht und den richtigen Datentyp hat. Ein Fehler hier ist ein Formatfehler: Die Datei entspricht nicht der Syntax. Geprüft wird gegen das Schema, das zur Rechnung gehört – UBL 2.1 oder CII D16B für XRechnung, bei ZUGFeRD das Schema des Profils. Die Profile unterscheiden sich vor allem darin, welche Elemente sie zulassen. Ein ZUGFeRD-MINIMUM mit Rechnungspositionen fällt deshalb schon am Schema durch.
3. Geschäftsregeln (Schematron) – mehrere hundert Regeln zum Inhalt: Pflichtangaben, erlaubte Codes, Datumsformate, Steuerkategorien, die Rechenregeln von oben und für XRechnung die deutschen Zusatzregeln (BR-DE). Ein Verstoß ist ein Geschäftsregelfehler: Angaben fehlen oder widersprechen sich. Das Ergebnis unterscheidet Fehler, Warnungen und Hinweise und nennt zu jeder Meldung die Stelle in der Datei.
Welche Regeln gelten, hängt vom Format ab. Das Tool liest es aus der Kennung der Spezifikation in der Datei (BT-24) und wählt die Prüfung so, wie es die offiziellen Prüfprogramme tun:
- XRechnung (UBL oder CII): Schema, EN 16931 und XRechnung 3.0 – dieselbe Abfolge wie im KoSIT-Validator, den die öffentliche Verwaltung einsetzt.
- ZUGFeRD/Factur-X: Schema und Regeln des jeweiligen Profils MINIMUM, BASIC WL, BASIC, EN 16931 oder EXTENDED aus ZUGFeRD 2.5.2 (Factur-X 1.09.2, veröffentlicht am 4. August 2026). Die Profilregeln enthalten die Regeln der EN 16931, soweit sie für das Profil gelten.
- Andere UBL-Rechnungen (etwa Peppol): Schema und EN 16931.
Dafür lädt dein Browser einmalig 0,6 bis 1 MB Prüfregeln von xmoo.app, danach läuft alles in deinem Browser. Die Prüfung dauert meist eine Sekunde.
Warum ZUGFeRD EXTENDED eigene Regeln braucht
Anfangs prüfte das Tool jede Rechnung in CII-Syntax nach den Regeln der EN 16931. Bei echten EXTENDED-Rechnungen aus dem Mustang-Projekt, einer verbreiteten ZUGFeRD-Bibliothek, kamen dabei Fehler heraus, obwohl die Rechnungen gültig sind: BR-CO-12 (Summe der Zuschläge auf Belegebene) und BR-S-08 (Steuerbasis je Steuersatz). Der Grund: EXTENDED kennt Angaben, die es in der EN 16931 nicht gibt, etwa Logistikkosten. Sie zählen in EXTENDED zu den Zuschlägen, die Regeln der Norm rechnen sie aber nicht mit und kommen dann auf andere Summen. Deshalb gab es für EXTENDED eine Zeit lang gar keine offizielle Prüfung. Jetzt prüft das Tool jedes ZUGFeRD-Profil nach den Regeln, die FeRD und FNFE-MPE dafür veröffentlichen, und beide Rechnungen gehen ohne Fehler durch.
Beispiel: die Prüfung Schritt für Schritt
Über „Beispielrechnung ansehen“ öffnest du eine erfundene XRechnung einer Elektrowerkstatt. Sie hat drei Positionen: 100 m Mantelleitung zu 0,89 € (89,00 €), 3 Stunden Montage zu 65,00 € (195,00 €) und ein Fachbuch zu 24,90 €. Die Rechenprüfung geht so vor:
- Summe der Positionen: 89,00 + 195,00 + 24,90 = 308,90 € (BR-CO-10). Ohne Nachlässe und Zuschläge ist das auch der Nettobetrag (BR-CO-13).
- Umsatzsteuer je Satz: 19 % auf 284,00 € = 53,96 € und 7 % auf 24,90 € = 1,743 €, gerundet 1,74 €. Zusammen 55,70 € (BR-CO-14).
- Brutto: 308,90 + 55,70 = 364,60 € (BR-CO-15). Es ist noch nichts bezahlt, also ist der Zahlbetrag ebenfalls 364,60 € (BR-CO-16).
Die offizielle Prüfung meldet für diese Rechnung keine Fehler. Steht im Bruttobetrag 364,61 € statt 364,60 €, schlagen BR-CO-15 und BR-CO-16 an, und zwar in der Rechenprüfung und in den Regeln der EN 16931. Fehlt die Käuferreferenz, meldet die XRechnung-Regel BR-DE-15 einen Fehler. Steht die Rechnungsnummer hinter dem Rechnungsdatum, ist die Datei inhaltlich vollständig, fällt aber am XML-Schema durch, weil die Reihenfolge nicht stimmt. Genau diese Fälle prüfen die automatischen Tests des Tools bei jeder Änderung.
Was das Tool nicht prüft
- Ob der Inhalt sachlich stimmt – also ob du die Ware bekommen hast und der Preis vereinbart war.
- Ob das sichtbare PDF einer ZUGFeRD-Rechnung zur XML passt und ob das PDF der Norm PDF/A-3 entspricht. Steuerlich zählt die XML. Ein Validator für das ganze PDF wie der von Mustang prüft das PDF zusätzlich.
- Kleine Abweichungen bei der Einstufung: Der KoSIT-Validator stuft einzelne Regeln anders ein als das Regelwerk selbst. Das Tool zeigt die Stufe, die in den Regeln steht.
Das Steuerrecht unterscheidet Formatfehler von Geschäftsregelfehlern. Für eine verbindliche Prüfung nennt das Bundesfinanzministerium „geeignete Validierungsanwendungen“. Eine kostenlose Anzeige bietet inzwischen auch das ELSTER-Portal der Finanzverwaltung.
Wie deine Datei geschützt ist
Die Rechnung wird nur in deinem Browser gelesen. Es gibt keinen Upload, keinen Server, der mitliest, und nichts wird gespeichert. Bei einem ZUGFeRD-PDF sucht das Tool die eingebettete XML-Datei und packt sie mit der Entpackfunktion deines Browsers aus.
Die Anzeige läuft außerdem in einem abgeschotteten Rahmen. Diese Seite zeigt Werbung, aber der Rahmen hat einen eigenen, abgeschirmten Ursprung. Werbe- und Statistikskripte dieser Seite können in ihn nicht hineinsehen, und im Rahmen selbst läuft weder Werbung noch Statistik. Eine Sicherheitsrichtlinie verbietet dem Rahmen zudem, irgendetwas ins Netz zu schicken. Für die offizielle Prüfung lädt er nur die festen Regeldateien von xmoo.app nach – deine Rechnung geht dabei nicht mit.
Grenzen
- ZUGFeRD 1.0 (vor 2.0.1) zeigt das Tool nicht an. Als E-Rechnung zählt diese Fassung ohnehin nicht.
- Verschlüsselte PDFs lassen sich nicht lesen.
- Die Profile MINIMUM und BASIC-WL enthalten keine Positionen – dann bleibt die Positionsliste leer.
- Zusatzfelder des Profils EXTENDED und der XRechnung-Extension zeigt das Tool nur teilweise. Geprüft werden sie trotzdem vollständig.
- Ob das sichtbare PDF zur XML passt, vergleicht das Tool nicht. Es zeigt dir die XML, damit du das selbst kannst.
- Die Regeln gelten für XRechnung 3.0 und ZUGFeRD 2.5.2. Ältere Fassungen können Meldungen zeigen, die nach ihrer eigenen Version keine wären.
Häufige Fragen
Wie öffne ich eine XRechnung?
Zieh die XML-Datei oben in das Feld oder wähle sie über „Datei auswählen“ aus. Das Tool zeigt sie als Rechnungsblatt an, das du als PDF drucken kannst. Ein eigenes Programm brauchst du dafür nicht.
Woran sehe ich, ob eine ZUGFeRD-Rechnung gültig ist?
Öffne das PDF und klicke auf „Offiziell prüfen“. Das Tool sucht die eingebettete XML, liest das Profil und prüft Schema und Regeln dieses Profils. „Keine Fehler“ heißt: Die Datei entspricht ZUGFeRD 2.5.2 in diesem Profil. Bei MINIMUM und BASIC WL weist das Tool zusätzlich darauf hin, dass diese Profile steuerlich nicht als E-Rechnung gelten.
Was ist der Unterschied zwischen XML-Schema und Geschäftsregeln?
Das Schema prüft die Form: welche Elemente es gibt, in welcher Reihenfolge und mit welchem Datentyp. Die Geschäftsregeln prüfen den Inhalt: ob Pflichtangaben da sind und die Angaben zusammenpassen. Eine Datei kann am Schema scheitern und trotzdem alle Angaben enthalten – oder schemagültig sein, aber eine falsche Summe tragen.
Muss ich die Rechnung hochladen?
Nein. Lesen und Prüfen laufen vollständig in deinem Browser. Geladen werden nur die festen Prüfregeln von xmoo.app, deine Datei geht nirgendwohin (siehe unten).
Quellen
- Bundesministerium der Finanzen: Fragen und Antworten zur E-Rechnung (Stand März 2026), u. a. Fragen 4, 11, 12 und 12a
- BMF-Schreiben vom 15. Oktober 2025: Einführung der obligatorischen E-Rechnung – Abschnitt 14.1 Abs. 11–14 UStAE (Formate, ZUGFeRD-Profile) und 14.4 (XML ist bei hybriden Formaten führend)
- Übergangsfristen: § 27 Abs. 38 UStG; Ausnahmen: § 33, § 34, § 34a UStDV
- ZUGFeRD 2.5.2 (Factur-X 1.09.2) vom 4. August 2026: Infopaket bei FeRD (Forum elektronische Rechnung Deutschland); Lizenz der Schemata und Prüfregeln: Haftungsausschluss und Nutzungsrechte (Apache 2.0). Dieselben Dateien liefert das Python-Paket factur-x 7.7 unverändert mit; daraus stammen sie hier.
- Testrechnungen für ZUGFeRD: Mustang-Projekt (Apache 2.0)
- Rechenregeln und offizielle Prüfung EN 16931: EN 16931 Validation Artefacts der Europäischen Kommission, Version 1.3.17
- XRechnung: Prüfregeln (Version 2.6.0 für XRechnung 3.0) und Testdateien der KoSIT (Koordinierungsstelle für IT-Standards); welche Prüfungen der KoSIT-Validator für eine XRechnung ausführt (XML-Schema, EN 16931, XRechnung): Konfiguration des Validators; daraus, Release v2026-08-31, stammen auch die XML-Schemata für UBL 2.1 und CII D16B
- Bedeutung der Codes (Rechnungsart, Zahlungsart, Steuerkategorie, Einheiten): Codelisten UNTDID 1001, 4461, 5305 und UN/ECE Recommendation 20/21 in der Fassung von Peppol BIS Billing 3.0
Verwendete Software und Lizenzen
- SaxonJS 2.7 führt die Prüfregeln im Browser aus. Copyright Saxonica Ltd, unverändert weitergegeben nach der SaxonJS-Lizenz (dort auch der Haftungsausschluss). Enthält big.js, Copyright Michael Mclaughlin, MIT-Lizenz.
- EN 16931 Validation Artefacts 1.3.17, © Europäische Union, unter der EUPL 1.2. Hier als kompilierte Fassung (SEF); der Quelltext liegt im Release auf GitHub.
- XRechnung-Schematron 2.6.0 der KoSIT, unter der Apache License 2.0. Hier als kompilierte Fassung (SEF); der Quelltext liegt im Release auf GitHub.
- ZUGFeRD 2.5.2 / Factur-X 1.09.2, Schemata und Prüfregeln von FeRD und FNFE-MPE, unter der Apache License 2.0. Die Prüfregeln hier als kompilierte Fassung (SEF); die Codeliste, die sie als eigene Datei laden, ist dabei in die Regeln eingesetzt. Entnommen aus factur-x von Alexis de Lattre (Akretion), BSD-Lizenz.
- XML-Schemata UBL 2.1, Copyright OASIS Open (mit dem eingebundenen XML-Signatur-Schema, Copyright The Internet Society und W3C), und UN/CEFACT CII D16B, Copyright UN/CEFACT, jeweils unverändert mit ihrem Copyright-Vermerk weitergegeben.
- xmllint-wasm 5.3.0 prüft das XML-Schema: libxml2 als WebAssembly, Copyright die Autoren von libxml und libxml.js, MIT-Lizenz. Hier ohne Worker als einzelnes Skript eingebunden, das WebAssembly ist darin eingebettet.