Eine ZUGFeRD-Rechnung ist mehr als die Zahlen auf der Seite. Der strukturierte Kern einer ZUGFeRD-Datei ist CII-XML, eingebettet in ein PDF/A-3, und dieses XML kann ganze Dokumente tragen: einen Lieferschein, einen signierten Stundennachweis, eine CSV zu den Beträgen oder eine ergänzende PDF. Eine XRechnung hat keine PDF-Seite, trägt aber dieselbe Art eingebetteter Anlagen in ihrem XML. Diese Dateien reisen Base64-kodiert in der Rechnung, um unversehrt anzukommen. Dieses Werkzeug holt sie alle heraus, damit Sie genau das öffnen, prüfen oder archivieren können, was Ihr Lieferant eingebettet hat, und nicht nur die Felder, die Ihr Buchhaltungs- oder DATEV-Import angezeigt hat.
Wo Anlagen in einer ZUGFeRD- oder XRechnung-Rechnung liegen
Die europäische Norm EN 16931, die Grundlage von ZUGFeRD und XRechnung, definiert eine Geschäftsgruppe namens Zusätzliche Begleitdokumente (BG-24). Jeder Eintrag beschreibt eine Begleitdatei: eine Referenz, eine optionale Beschreibung und dann entweder einen Link zum Dokument oder das Dokument selbst. Ist das Dokument eingebettet, werden seine Bytes als Base64-kodiertes Binärobjekt (BT-125) getragen, versehen mit Dateiname und MIME-Typ.
In UN/CEFACT-CII, der Syntax in jeder ZUGFeRD-Datei und der häufigsten XRechnung-Syntax, erscheint das als AdditionalReferencedDocument mit einem AttachmentBinaryObject. Eine Anlage zu extrahieren bedeutet, diese Base64-Nutzlast zu lesen und in die ursprüngliche Datei zurückzudekodieren, Byte für Byte. Da eine ZUGFeRD-PDF nur eine PDF/A-3-Hülle um dieses CII ist, liegen die Anlagen an derselben Stelle, egal ob Sie die hybride PDF oder die eigenständige XML hochladen. Die XRechnung begrenzt die zulässigen Anlagetypen auf PDF, PNG, JPEG, CSV, XLSX und ODS, sodass das Extrahierte immer eines davon ist.
Eingebettete Dateien (BT-125) und externe Links (BT-124)
Nicht jedes Begleitdokument ist eingebettet. Ein BG-24-Eintrag kann stattdessen auf eine externe URL (BT-124) verweisen, einen einfachen Link zu einem anderswo gehosteten Dokument. Die beiden Fälle sind in der Praxis sehr verschieden. Eine eingebettete Nutzlast ist eigenständig: die Datei liegt direkt in der ZUGFeRD-PDF oder XRechnung-XML, und sie zu extrahieren ist ein sicheres Offline-Dekodieren. Ein externer Link ist eine URL, die überallhin zeigen kann.
Dieses Werkzeug extrahiert nur, was in der Rechnung selbst eingebettet ist. Es folgt nie externen Links: eine URL abzurufen, die in einem Dokument ankam, ist ein Sicherheitsrisiko, und nur Sie sollten entscheiden, ob ein fremder Link geöffnet wird. Was Sie herunterladen, ist also genau der Inhalt, den die Rechnung trug, und nichts, was sie lediglich referenzierte.
Ein Ablegen, ein ZIP, bereit für Ihr GoBD-Archiv
Legen Sie eine ZUGFeRD-PDF oder eine eigenständige XRechnung-XML ab, und der Extraktor gibt ein einziges ZIP zurück, jede Anlage unter ihrem eigenen Dateinamen, bereit zur Nutzung oder zur Ablage. Die deutschen Aufbewahrungsregeln (GoBD) erwarten, dass eine Rechnung zusammen mit den zugehörigen Dokumenten aufbewahrt wird, daher ist es wichtig, die eingebetteten Anlagen bei der Rechnung zu behalten. Nichts wird dabei geöffnet: die eingebetteten Bytes werden dekodiert und direkt in das Archiv kopiert, ohne geparst, gerendert oder ausgeführt zu werden, und Ihre Rechnung wird im Arbeitsspeicher verarbeitet und in dem Moment verworfen, in dem das ZIP fertig ist. Nichts wird gespeichert, protokolliert oder weitergegeben.
Wie es weitergeht
Möchten Sie die Rechnung selbst lesen statt ihrer Anlagen? Öffnen Sie sie im XRechnung-Viewer. Müssen Sie eine Datei vor dem Versand prüfen? Validieren Sie Ihre ZUGFeRD oder XRechnung gegen EN 16931 und die deutschen CIUS-Regeln in einem Vorgang.