Zum Inhalt springen
SONOYA.com
Digital Lifestyle

E-Rechnung öffnen: XRechnung und ZUGFeRD am Mac lesen

XRechnung oder ZUGFeRD als XML erhalten? So öffnest, prüfst und archivierst Du E-Rechnungen am Mac kostenlos und lokal, ohne Upload zu fremden Diensten.

Von

Rechnungssymbol auf farbigem Verlauf für eine E-Rechnung im Format XRechnung oder ZUGFeRD, die am Mac lesbar gemacht wird

Im Postfach liegt eine Rechnung, aber statt eines PDFs hängt eine Datei namens rechnung.xml an. Ein Doppelklick öffnet sie im Browser oder in einem Texteditor, und Du siehst eine Wand aus spitzen Klammern, Codes und Zahlen ohne erkennbaren Rechnungsbetrag. Seit 2025 kommt das immer häufiger vor, denn in Deutschland müssen alle Unternehmen E-Rechnungen empfangen können, auch Kleinunternehmer, Freiberufler und private Vermieter.

Diese Anleitung zeigt Dir, wie Du solche Rechnungen am Mac lesbar machst, prüfst, ob sie formal gültig sind, und sie richtig aufbewahrst. Der Weg ist kostenlos und läuft komplett auf Deinem Rechner, sodass keine Rechnungsdaten bei einem fremden Webdienst landen. Stand ist macOS 26 und 27, XRechnung 3.0.2 und die Mustang-Kommandozeile in Version 2.26.0.

Was eine E-Rechnung ist und was nicht

Eine E-Rechnung ist laut FAQ des Bundesfinanzministeriums eine Rechnung in einem strukturierten elektronischen Format, das eine Software automatisch auslesen kann. Ein normales PDF zählt seit dem 1. Januar 2025 ausdrücklich nicht mehr dazu, es ist nur noch eine „sonstige Rechnung“. In Deutschland begegnen Dir zwei Formate:

  • XRechnung ist eine reine XML-Datei nach der europäischen Norm EN 16931, entweder in der Syntax UBL oder CII. Es gibt keinen Bildteil, den Du einfach ansehen könntest. Ohne passendes Programm ist sie für Menschen kaum lesbar.
  • ZUGFeRD (international Factur-X) ist ein PDF, in das eine XML-Datei eingebettet ist. Das PDF siehst Du ganz normal in der Vorschau, die XML-Daten stecken unsichtbar darin. Ab Version 2.0.1 gilt ZUGFeRD als E-Rechnung, mit Ausnahme der Profile MINIMUM und BASIC-WL.

Ein wichtiges Detail aus der BMF-FAQ: Bei ZUGFeRD ist seit 2025 der XML-Teil maßgeblich, nicht das sichtbare PDF. Weichen beide voneinander ab, gelten die Daten aus der XML. Das Ministerium empfiehlt deshalb, auch bei ZUGFeRD den XML-Teil selbst anzusehen. Genau das machen wir weiter unten.

Wer E-Rechnungen empfangen muss

Diese Einordnung fasst die BMF-FAQ zusammen und ersetzt keine Steuerberatung:

  • Empfangen müssen seit dem 1. Januar 2025 alle inländischen Unternehmen, die von anderen Unternehmen Rechnungen bekommen. Dazu gehören ausdrücklich auch Kleinunternehmer, Freiberufler, Ärzte und Vermieter. Als Empfangsweg reicht laut BMF ein E-Mail-Postfach.
  • Ausstellen müssen Unternehmen E-Rechnungen erst nach Übergangsfristen: Bis Ende 2026 dürfen alle noch Papier- oder PDF-Rechnungen schicken, bei einem Vorjahresumsatz bis 800.000 Euro verlängert sich das bis Ende 2027.
  • Privatpersonen als Endverbraucher sind nicht betroffen. Rechnungen an Privatkunden bleiben, wie sie sind.

Der schnelle Weg ohne Installation

Wenn Du nur ab und zu eine einzelne Rechnung ansehen willst, gibt es einen offiziellen Weg im Browser: den E-Rechnungsviewer von ELSTER. Du brauchst kein ELSTER-Konto, ziehst die XML- oder ZUGFeRD-Datei in das Auswahlfeld und bekommst die Rechnung in lesbarer Form angezeigt. Der Dienst ist laut ELSTER unverbindlich, und Du gibst die Rechnungsdatei dafür an einen Webdienst der Steuerverwaltung.

Für alle, die regelmäßig E-Rechnungen bekommen, ihre Belege prüfen wollen oder Rechnungsdaten grundsätzlich nicht in Webdienste laden möchten, ist der folgende lokale Weg die bessere Wahl.

Der lokale Weg mit Mustang

Für den lokalen Weg nutzen wir die Kommandozeilenversion von Mustang, einer quelloffenen Java-Bibliothek für ZUGFeRD und XRechnung unter der Apache-Lizenz. Ein einziges Programm kann damit alles, was Du brauchst: XRechnungen in lesbares HTML oder PDF umwandeln, die XML aus einem ZUGFeRD-PDF herausziehen und beide Formate gegen die offiziellen Regeln prüfen. Für die XRechnung-Prüfung nutzt Mustang die Regelwerke der KoSIT, der Koordinierungsstelle, die den Standard für Bund und Länder pflegt.

Java installieren

Mustang ist ein Java-Programm. Java bekommst Du am einfachsten über Homebrew. Falls Homebrew auf Deinem Mac noch fehlt, richtest Du es zuerst mit der Anleitung Homebrew auf dem Mac installieren ein. Öffne dann das Terminal und installiere das kostenlose Java der Eclipse Foundation:

Code
brew install --cask temurin

Homebrew lädt das Installationspaket von Eclipse Temurin und fragt einmal nach Deinem Mac-Passwort. Prüf danach, ob Java bereitsteht:

Code
java -version

Die Ausgabe beginnt mit openjdk version und einer Versionsnummer. Erscheint stattdessen der Hinweis, dass keine Java-Laufzeit gefunden wurde, schließ das Terminal-Fenster und öffne ein neues.

Mustang herunterladen

Leg einen Ordner für Deine E-Rechnungen an und lade Mustang direkt aus den offiziellen Releases hinein:

Code
mkdir -p ~/E-Rechnungen
cd ~/E-Rechnungen
curl -LO https://github.com/ZUGFeRD/mustangproject/releases/download/core-2.26.0/Mustang-CLI-2.26.0.jar

Der erste Befehl legt den Ordner E-Rechnungen in Deinem Benutzerordner an, der zweite wechselt hinein, der dritte lädt die rund 60 MB große Programmdatei. Gibt es eine neuere Version, ersetzt Du 2.26.0 an beiden Stellen durch die aktuelle Nummer von der Release-Seite.

Kopier jetzt die Rechnung, die Du ansehen willst, in diesen Ordner. In den folgenden Beispielen heißt sie rechnung.xml beziehungsweise rechnung.pdf.

Eine XRechnung lesbar machen

Dieser Befehl wandelt die XML-Datei in eine HTML-Seite mit deutscher Beschriftung um:

Code
java -jar Mustang-CLI-2.26.0.jar --action visualize --language de --source rechnung.xml --out rechnung.html

Mustang erkennt selbst, ob die Rechnung in UBL oder CII vorliegt, und schreibt neben die Datei rechnung.html noch xrechnung-viewer.css und xrechnung-viewer.js in den Ordner. Die beiden Zusatzdateien sorgen für Layout und Reiter, deshalb lässt Du sie im selben Ordner liegen. Öffne das Ergebnis im Browser:

Code
open rechnung.html

Du siehst jetzt eine aufgeräumte Rechnung mit Absender, Empfänger, Positionen, Steuerbeträgen und Bankverbindung. Über die Reiter oben wechselst Du zwischen der Übersicht, den Details und eventuellen Anhängen.

Lieber ein PDF zum Ausdrucken oder Weiterleiten? Dann tauschst Du die Aktion aus:

Code
java -jar Mustang-CLI-2.26.0.jar --action pdf --language de --source rechnung.xml --out rechnung-ansicht.pdf

Wichtig: Dieses PDF ist nur eine Lesehilfe. Die Rechnung im rechtlichen Sinn bleibt die XML-Datei.

Eine ZUGFeRD-Rechnung prüfen

Ein ZUGFeRD-PDF öffnest Du ganz normal per Doppelklick in der Vorschau. Weil aber die eingebettete XML maßgeblich ist, holst Du sie heraus und siehst sie Dir ebenfalls an:

Code
java -jar Mustang-CLI-2.26.0.jar --action extract --source rechnung.pdf --out rechnung-daten.xml
java -jar Mustang-CLI-2.26.0.jar --action visualize --language de --source rechnung-daten.xml --out rechnung-daten.html

Der erste Befehl zieht die XML aus dem PDF, der zweite macht sie lesbar. Vergleich Betrag, Steuersatz und Bankverbindung in der HTML-Ansicht mit dem PDF. Stimmen sie überein, ist alles in Ordnung. Weichen sie ab, gilt die HTML-Ansicht, und Du solltest beim Absender nachfragen.

Meldet der erste Befehl einen Fehler, enthält das PDF keine eingebettete XML. Dann ist es keine E-Rechnung, sondern ein normales PDF.

Prüfen, ob die Rechnung gültig ist

Mustang prüft eine XML-Datei oder ein ZUGFeRD-PDF gegen die Norm EN 16931 und die XRechnung-Regeln:

Code
java -jar Mustang-CLI-2.26.0.jar --action validate --source rechnung.xml

Die Ausgabe ist ein ausführlicher XML-Bericht. Entscheidend ist die Zeile ganz am Ende: <summary status="valid"/> bedeutet, dass die Rechnung formal in Ordnung ist. Bei <summary status="invalid"/> stehen weiter oben Fehlermeldungen mit Regelnummern wie BR-DE-15, die beschreiben, welches Pflichtfeld fehlt oder falsch ist. Eine formal ungültige Rechnung musst Du nicht selbst reparieren. Schick dem Absender die Fehlermeldung und bitte um eine korrigierte Rechnung.

Typische Stolpersteine

  • Unable to locate a Java Runtime: Java ist nicht installiert oder das Terminal wurde vor der Installation geöffnet. Neues Terminal-Fenster öffnen und java -version erneut aufrufen.
  • Unable to access jarfile: Du bist nicht im Ordner mit der JAR-Datei, oder der Dateiname weicht ab. Mit cd ~/E-Rechnungen wechselst Du hinein, mit ls siehst Du den genauen Namen.
  • Die HTML-Ansicht sieht unformatiert aus: Die Dateien xrechnung-viewer.css und xrechnung-viewer.js liegen nicht im selben Ordner wie die HTML-Datei.
  • Mustang bricht mit dem Hinweis ab, dass die Zieldatei existiert: Mustang überschreibt bewusst keine vorhandenen Dateien. Wähl einen anderen Namen hinter --out oder lösche die alte Ansicht.

E-Rechnungen richtig aufbewahren

Laut BMF-FAQ bewahrst Du Rechnungen acht Jahre auf, und bei einer E-Rechnung muss zumindest der strukturierte Teil unverändert in seiner ursprünglichen Form erhalten bleiben. Für Dich heißt das:

  1. Speichere die Original-XML beziehungsweise das Original-ZUGFeRD-PDF genau so, wie es per E-Mail kam. Umbenennen darfst Du die Datei, aber öffne und speichere die XML nie in einem Editor, weil sich dabei unbemerkt Zeichen ändern können.
  2. Die HTML- oder PDF-Ansicht aus Mustang kannst Du zusätzlich ablegen, sie ersetzt das Original aber nicht.
  3. Lege die Dateien in eine feste Ordnerstruktur, etwa E-Rechnungen/2026/Lieferant, und sichere diesen Ordner mit Deinem normalen Backup.

Wer viele Belege bekommt, legt sie am besten automatisch ab. Mit Paperless-ngx: Papierpost scannen und automatisch ablegen landen ZUGFeRD-PDFs im selben Archiv wie Deine gescannte Post. Paperless bewahrt dabei die Originaldatei unverändert auf und legt die durchsuchbare Fassung getrennt daneben. Die reinen XRechnung-Dateien hebst Du zusätzlich in Deinem Rechnungsordner auf, und für die lesbare Fassung im Archiv nimmst Du das mit Mustang erzeugte PDF.

Weiterlesen.