Entwickler & Daten 10 Min. LesezeitVeröffentlicht am · Aktualisiert am

XRechnung mit Anhang: PDFs per Base64 einbetten (BG-24)

XRechnung mit Anhang: So betten Sie PDFs und andere Anlagen per Base64 in BG-24 ein, mit UBL- und CII-Beispiel, erlaubten MIME-Typen und Grenzen der OZG-RE.

Max BlueGründer & Chefredakteur

Das Wichtigste in Kürze

  • Anhänge einer XRechnung stehen in der Gruppe BG-24; jede Anlage braucht eine Kennung in BT-122 (Regel BR-52) und wird als Base64-Text in BT-125 mit MIME-Code und Dateiname eingebettet.
  • Zulässig sind PDF, PNG, JPEG, CSV, XLSX und ODS; application/xml nur mit der Extension XRechnung (BR-DEX-01), andere Typen weist der Validator mit BR-CL-24 zurück.
  • Nach dem BMF-Schreiben vom 15.10.2025 müssen alle umsatzsteuerlichen Pflichtangaben im XML stehen; ein Anhang darf nur ergänzen, und ein externer Link erfüllt § 14 Abs. 1 Satz 3 UStG nicht.
  • Die Bundesplattform OZG-RE erlaubt höchstens 200 eingebettete Dokumente; größere Unterlagen lassen sich über „Große Anlagen“ bis 200 MB insgesamt als Verweis anhängen.
  • Base64 nach RFC 4648 vergrößert jede Datei um rund ein Drittel: Aus einem PDF mit 7,5 MB werden etwa 10 MB Text in der XML-Datei.
Inhalt

Eine XRechnung mit Anhang enthält die Zusatzdokumente direkt in der XML-Datei: Jede Anlage steht in der Gruppe BG-24 und wird als Base64-Text in BT-125 eingebettet, mit MIME-Typ und Dateiname. Zulässig sind PDF, PNG, JPEG, CSV, XLSX und ODS. Alle umsatzsteuerlichen Pflichtangaben müssen trotzdem im XML selbst stehen, nicht nur in der Anlage.

Stand: September 2026 · Dieser Beitrag ersetzt keine Steuerberatung.

Dieser Beitrag zeigt, wann Anlagen nötig sind, welche Felder BG-24 hat, wie ein Anhang in UBL und CII aussieht, welche Grenzen die Bundesplattform setzt und wie Sie Dateien kodieren, einbetten und wieder auslesen. Den Aufbau der gesamten Datei erklärt der Beitrag XRechnung XML-Struktur. Weitere Themen für Entwickler finden Sie in der Kategorie Entwickler-Tools.

Wann braucht eine XRechnung einen Anhang?

Eine XRechnung ist ein Datensatz, kein Dokument mit Seiten. Unterlagen, die der Empfänger zusätzlich zur Prüfung braucht, reisen als Anhang in derselben Datei mit. Typische Fälle sind:

  • Stundennachweise bei Beratung und Dienstleistungen, etwa die Aufschlüsselung der abgerechneten Stunden. Mehr dazu im Beitrag E-Rechnung für Freiberufler.
  • Lieferscheine und Leistungsnachweise, die die berechnete Menge belegen.
  • Aufmaße im Bauwesen. Bei öffentlichen Bauaufträgen beginnt die Prüffrist des Auftraggebers laut FAQ der Bundesplattform erst mit Eingang der prüfbaren Rechnung einschließlich der rechnungsbegründenden Anlagen. Praxisfragen für Betriebe behandelt der Beitrag E-Rechnung im Handwerk.
  • Freistellungsbescheinigungen, für die XRechnung kein eigenes Feld hat. Die Bundesplattform verlangt sie deshalb als Anlage.
  • Verträge bei Dauerschuldverhältnissen. Nach dem BMF-Schreiben vom 15.10.2025 genügt bei Miete oder Wartung eine E-Rechnung für den ersten Zeitraum, wenn der zugrunde liegende Vertrag als Anhang enthalten ist.

Was darf in der Anlage stehen und was nicht?

Maßgeblich ist das BMF-Schreiben vom 15.10.2025 (öffnet in neuem Tab) (Rn. 35). Alle umsatzsteuerlichen Pflichtangaben nach §§ 14, 14a UStG müssen im strukturierten Teil der E-Rechnung stehen. Ein bloßer Verweis im XML auf eine Anlage, die diese Angaben enthält, genügt nicht, weil dann keine elektronische Verarbeitung möglich ist. Ergänzende Angaben dürfen dagegen in einem eingebetteten Anhang stehen; das Schreiben nennt als Beispiel die Aufschlüsselung von Stundennachweisen in einer PDF-Datei. Ein Link auf ein externes Ziel erfüllt weder § 14 Abs. 1 Satz 3 UStG noch § 31 Abs. 1 UStDV.

Auch die Leistungsbeschreibung im XML muss für sich eine eindeutige und leicht nachprüfbare Feststellung der Leistung ermöglichen. Eine Position „Beratung laut Anlage“ reicht dafür nicht. „Beratung Projekt Alpha, 15 Stunden, September 2026“ in der Position und die Einzelaufstellung der Tage im PDF erfüllen beide Anforderungen.

Ob alle Angaben nach § 14 Abs. 4 UStG vorhanden sind, können Sie vor dem Versand mit dem Werkzeug Pflichtangaben prüfen kontrollieren.

Welche Felder hat die Gruppe BG-24?

In der EN 16931 heißt die Gruppe ADDITIONAL SUPPORTING DOCUMENTS. Sie darf mehrfach vorkommen, einmal je Unterlage.

BTBezeichnungInhaltUBLCII
BT-122Supporting document referenceKennung der Unterlage, Pflicht in jeder BG-24 (BR-52)cbc:IDram:IssuerAssignedID
BT-123Supporting document descriptionkurze Beschreibungcbc:DocumentDescriptionram:Name
BT-124External document locationURL einer extern abgelegten Unterlagecac:Attachment/cac:ExternalReference/cbc:URIram:URIID
BT-125Attached documentBase64-Inhalt der Dateicac:Attachment/cbc:EmbeddedDocumentBinaryObjectram:AttachmentBinaryObject
BT-125-1Attached document Mime codez. B. application/pdfAttribut mimeCodeAttribut mimeCode
BT-125-2Attached document Filenamez. B. stundennachweis-2026-09.pdfAttribut filenameAttribut filename

Zwei Stolperstellen betreffen den Dokumenttyp. In CII braucht jede Anlage ram:TypeCode mit dem Wert 916. Der Code 130 kennzeichnet dort die Objektkennung BT-18; eine Anlage mit Code 130 scheitert an den Regeln CII-DT-021 und CII-DT-022. In UBL dient dasselbe Element cac:AdditionalDocumentReference mit cbc:DocumentTypeCode 130 ebenfalls der Objektkennung BT-18. Setzen Sie diesen Code bei einer Anlage, meldet der Validator UBL-CR-666 und UBL-CR-673.

Wie sieht ein Anhang in UBL aus?

In UBL steht cac:AdditionalDocumentReference nach cbc:BuyerReference und etwaigen Bestell- oder Vertragsreferenzen, aber vor cac:ProjectReference und cac:AccountingSupplierParty. Das Beispiel zeigt eine eingebettete PDF-Datei und einen externen Verweis. Der Base64-Text ist gekürzt; das Zeichen „…“ markiert die Stelle.

<cbc:BuyerReference>991-12345-73</cbc:BuyerReference>
<cac:AdditionalDocumentReference>
  <cbc:ID>STD-2026-09</cbc:ID>                                               <!-- BT-122 -->
  <cbc:DocumentDescription>Stundennachweis September 2026</cbc:DocumentDescription> <!-- BT-123 -->
  <cac:Attachment>
    <cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf"
        filename="stundennachweis-2026-09.pdf">JVBERi0xLjcKJeLjz9MK…</cbc:EmbeddedDocumentBinaryObject> <!-- BT-125 -->
  </cac:Attachment>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
  <cbc:ID>AUFMASS-17</cbc:ID>
  <cbc:DocumentDescription>Aufmaß Bauabschnitt 2</cbc:DocumentDescription>
  <cac:Attachment>
    <cac:ExternalReference>
      <cbc:URI>https://example.com/anlagen/aufmass-17.pdf</cbc:URI>         <!-- BT-124 -->
    </cac:ExternalReference>
  </cac:Attachment>
</cac:AdditionalDocumentReference>
<cac:AccountingSupplierParty>…</cac:AccountingSupplierParty>

Die vollständige Beispielrechnung mit PDF-, CSV- und Link-Anlage haben wir mit dem KoSIT-Validator 1.5.0 und der Prüfkonfiguration für XRechnung 3.0.2 geprüft; das Ergebnis war accept.

Wie sieht ein Anhang in CII aus?

In CII gehört die Anlage in ram:ApplicableHeaderTradeAgreement, hinter die Parteien und etwaige Bestell- oder Vertragsreferenzen. Innerhalb von ram:AdditionalReferencedDocument gilt die Reihenfolge ram:IssuerAssignedID, ram:URIID, ram:TypeCode, ram:Name, ram:AttachmentBinaryObject.

<ram:ApplicableHeaderTradeAgreement>
  <ram:BuyerReference>991-12345-73</ram:BuyerReference>
  <ram:SellerTradeParty>…</ram:SellerTradeParty>
  <ram:BuyerTradeParty>…</ram:BuyerTradeParty>
  <ram:AdditionalReferencedDocument>
    <ram:IssuerAssignedID>STD-2026-09</ram:IssuerAssignedID>                 <!-- BT-122 -->
    <ram:TypeCode>916</ram:TypeCode>
    <ram:Name>Stundennachweis September 2026</ram:Name>                      <!-- BT-123 -->
    <ram:AttachmentBinaryObject mimeCode="application/pdf"
        filename="stundennachweis-2026-09.pdf">JVBERi0xLjcKJeLjz9MK…</ram:AttachmentBinaryObject> <!-- BT-125 -->
  </ram:AdditionalReferencedDocument>
</ram:ApplicableHeaderTradeAgreement>

In unseren Tests hat die KoSIT-Prüfung ein fehlendes filename in CII nicht beanstandet, in UBL dagegen schon (UBL-DT-07). Setzen Sie das Attribut trotzdem immer: Ohne Namen kann der Empfänger die Datei nicht sinnvoll speichern, und BR-DE-22 prüft die Eindeutigkeit über genau dieses Attribut.

Welche Dateitypen und Regeln prüft der Validator?

MIME-Code (BT-125-1)DateiendungHinweis
application/pdf.pdfhäufigster Fall
image/png.pngFotos, Scans
image/jpeg.jpg, .jpegFotos, Scans
text/csv.csvStundenlisten, Mengenaufstellungen
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.xlsxExcel-Tabellen
application/vnd.oasis.opendocument.spreadsheet.odsOpenDocument-Tabellen
application/xml.xmlnur mit Extension XRechnung, z. B. GAEB-Dateien

Die folgenden Meldungen haben wir mit derselben Validator-Version nachgestellt:

MeldungAuslöserLösung
BR-52BG-24 ohne Kennung BT-122; in UBL zusätzlich ein XSD-Fehlercbc:ID bzw. ram:IssuerAssignedID setzen
BR-CL-24MIME-Code außerhalb der Liste, z. B. application/zip oder application/xml ohne ExtensionDatei in PDF umwandeln oder Extension verwenden
BR-DE-22zwei Anlagen mit gleichem filenameeindeutige Namen vergeben
UBL-DT-06, UBL-DT-07mimeCode oder filename fehlt in UBLAttribute ergänzen
XSD-FehlerBase64-Text abgeschnitten oder mit Base64url-Zeichen - und _Datei neu kodieren
CII-DT-021, CII-DT-022CII-Anlage mit ram:TypeCode 130Code 916 verwenden
UBL-CR-666, UBL-CR-673UBL-Anlage mit cbc:DocumentTypeCode 130Code entfernen

Laut Spezifikation müssen Dateinamen auch ohne Beachtung der Groß- und Kleinschreibung eindeutig sein, und die Dateiendung gehört zur Prüfung. Vergeben Sie daher Namen, die sich nicht nur in der Schreibweise unterscheiden, und eine Endung, die zum MIME-Code passt. Unser XRechnung Validator prüft diese Regeln mit den offiziellen KoSIT-Regeln und erklärt jede Meldung; die Codes sind auch unter XRechnung Fehlercodes beschrieben. Weitere typische Probleme behandelt der Beitrag XRechnung-Fehler beheben.

Extension XRechnung für XML-Anlagen

Für XML-Anlagen, im Bau vor allem GAEB-Dateien, brauchen Sie die Extension XRechnung, die seit dem 01.01.2021 genutzt werden darf. BT-24 lautet dann urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0#conformant#urn:xeinkauf.de:kosit:extension:xrechnung_3.0. Mit dieser Kennung akzeptiert die KoSIT-Prüfung application/xml (BR-DEX-01). Die angehängte XML-Datei darf ihrerseits keine Elemente enthalten, die weitere XML-Dokumente einbetten, und Sender und Empfänger sollten die Nutzung vorher abstimmen. Ein eigenes Syntax-Binding der Extension gibt es laut Spezifikation 3.0.2 nur für UBL Invoice; XML-Anhänge sind aber auch in CII nutzbar.

Welche Grenzen gelten bei der Bundesplattform OZG-RE?

Seit der Konsolidierung am 19.09.2025 ist die OZG-RE die einzige Rechnungseingangsplattform des Bundes. Ihre FAQ (öffnet in neuem Tab) regelt Anlagen so: Sie gehören Base64-kodiert in den Rechnungsdatensatz und dürfen nicht als separater E-Mail-Anhang verschickt werden. Zulässig sind die Endungen png, pdf, jpg, jpeg, xlsx, ods und csv, dazu xml mit der Extension. Pro Rechnung sind höchstens 200 eingebettete Dokumente erlaubt, aktive Inhalte wie Makros sind ausgeschlossen.

KanalGrößenangaben in der FAQ
WeberfassungAnlagen bis 15 MB im Reiter „Anhänge“; die Rechnungsgröße nennt die FAQ an anderer Stelle mit 11 MB
Hochladen einer extern erstellten RechnungAnlagen bis 15 MB, vorher Base64-kodiert in das XML eingebettet
E-MailAnlagen bis 15 MB eingebettet; an anderer Stelle nennt die FAQ 10 MB als Rechnungsgröße
PeppolAnlagen unter 100 MB eingebettet; Größenbegrenzung 100 MB
„Große Anlagen“bis 200 MB insgesamt, hochgeladen im Verwaltungsmenü und als Link in die Rechnung eingefügt

Die Werte sind in der FAQ nicht an allen Stellen einheitlich. Planen Sie deshalb mit dem kleinsten Wert und rechnen Sie den Base64-Aufschlag ein. Einen Link auf „Große Anlagen“ stimmen Sie vorab mit dem Rechnungsempfänger ab: Kann er ihn nicht öffnen, kann die Rechnung mangels Prüfbarkeit zurückgewiesen werden. Länder und Kommunen betreiben eigene Portale mit eigenen Regeln.

Was macht Base64 mit einer Datei?

Base64 nach RFC 4648 (öffnet in neuem Tab) stellt beliebige Bytes mit 64 druckbaren Zeichen dar: A–Z, a–z, 0–9, + und /, dazu = als Füllzeichen am Ende. Je drei Bytes werden zu vier Zeichen. Das ist nötig, weil ein PDF Bytes enthält, die in XML nicht vorkommen dürfen, etwa Nullbytes und Steuerzeichen, oder die dort eine Bedeutung haben, etwa < und &.

  • Größe: Die Datei wächst um rund 33 Prozent. Aus 3 MB werden 4 MB, aus 7,5 MB etwa 10 MB. Bei einer Grenze von 10 MB bleibt für ein PDF also deutlich weniger als 10 MB.
  • Keine Verschlüsselung: Jeder kann Base64 ohne Schlüssel zurückwandeln. Eine Anlage ist so lesbar wie die Rechnung selbst.
  • Standardalphabet: Der XML-Datentyp base64Binary kennt nur das Standardalphabet. Base64url mit - und _, wie es in Web-Tokens üblich ist, scheitert am XSD.
  • Zeilenumbrüche: Das Schema erlaubt Leerraum im Base64-Text. Strenge Decoder lehnen Umbrüche aber ab, in Java zum Beispiel Base64.getDecoder(); erst Base64.getMimeDecoder() überspringt sie. Kodieren Sie deshalb ohne Umbrüche.

Den Dateityp erkennen Sie oft schon am Anfang des Base64-Texts. Passt er nicht zum mimeCode, stimmt etwas nicht.

Beginn des Base64-TextsdekodiertDateityp
JVBERi0%PDF-PDF
iVBORw0KGgoPNG-SignaturPNG
/9j/JPEG-SignaturJPEG
UEsDBPK, ZIP-ContainerXLSX, ODS

Unser Werkzeug Base64 dekodieren arbeitet im Browser mit Text. Es eignet sich, um eine kurze CSV-Anlage zu kodieren (Umlaute werden als UTF-8 behandelt) oder den Anfang eines Base64-Blocks zu prüfen: Aus JVBERi0xLjcK wird %PDF-1.7. Für binäre Dateien wie PDFs nutzen Sie die Befehle aus dem nächsten Abschnitt.

Wie bette ich einen Anhang Schritt für Schritt ein?

  1. Datei vorbereiten. Nutzen Sie ein zulässiges Format ohne Makros. Vergeben Sie einen sprechenden, eindeutigen Dateinamen mit passender Endung und ohne Pfadangaben, zum Beispiel stundennachweis-2026-09.pdf.
  2. Kodieren. Erzeugen Sie den Base64-Text ohne Zeilenumbrüche, etwa mit einem der folgenden Befehle.
  3. BG-24 einfügen. Setzen Sie den Block an die oben gezeigte Stelle. Als BT-122 eignet sich eine Kennung, auf die Sie im Rechnungstext verweisen, als BT-123 eine kurze Beschreibung.
  4. Größe prüfen. Vergleichen Sie die Größe der fertigen XML-Datei mit der Grenze Ihres Übertragungswegs.
  5. Validieren. Lassen Sie die Datei vor dem Versand prüfen, zum Beispiel mit dem Viewer unter XRechnung prüfen. BR-52, BR-CL-24 und BR-DE-22 fallen dabei auf. Bewahren Sie den Prüfbericht auf.
  6. Versenden und archivieren. Die Anlage ist Teil der XML-Datei. Archivieren Sie die XML unverändert im Original, wie es der Beitrag E-Rechnung archivieren beschreibt.
# Linux (GNU coreutils), ohne Zeilenumbrüche
base64 -w 0 stundennachweis-2026-09.pdf > stundennachweis.b64

# macOS (bricht ohne Option -b nicht um)
base64 -i stundennachweis-2026-09.pdf -o stundennachweis.b64

# Windows PowerShell
[Convert]::ToBase64String([IO.File]::ReadAllBytes("$PWD\stundennachweis-2026-09.pdf")) | Set-Content -NoNewline stundennachweis.b64

In Programmen genügt jeweils eine Zeile:

import base64, pathlib
b64 = base64.b64encode(pathlib.Path("stundennachweis-2026-09.pdf").read_bytes()).decode("ascii")
const b64 = require("fs").readFileSync("stundennachweis-2026-09.pdf").toString("base64");
String b64 = Base64.getEncoder().encodeToString(Files.readAllBytes(Path.of("stundennachweis-2026-09.pdf")));

Unser XRechnung Generator erzeugt die Rechnungsdaten als UBL oder ZUGFeRD, bettet aber keine Anlagen ein. Den BG-24-Block ergänzen Sie in Ihrer Rechnungssoftware oder per Skript; in der UBL-Ausgabe gehört er direkt hinter cbc:BuyerReference.

Wie lese ich Anhänge aus einer XRechnung aus?

Zum Sichten öffnen Sie die Datei im XML Viewer, der ebenfalls im Browser läuft. Im Baum sehen Sie jede Anlage mit Kennung, Beschreibung, MIME-Code und Dateiname. Zum Speichern der Dateien genügt ein kurzes Skript, das beide Syntaxen versteht:

import base64, pathlib, sys
import xml.etree.ElementTree as ET

TAGS = {
    "{urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2}EmbeddedDocumentBinaryObject",
    "{urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100}AttachmentBinaryObject",
}

for el in ET.parse(sys.argv[1]).iter():
    if el.tag in TAGS:
        name = pathlib.Path(el.get("filename") or "anhang.bin").name
        data = base64.b64decode("".join((el.text or "").split()), validate=True)
        pathlib.Path(name).write_bytes(data)
        print(f"{name}: {el.get('mimeCode')}, {len(data)} Bytes")

Das Skript entfernt Leerraum, bevor es dekodiert, und bricht bei ungültigem Base64 ab. Path(...).name verwirft Pfadanteile im Attribut filename, damit eine manipulierte Rechnung mit einem Namen wie ../../datei nichts außerhalb des Arbeitsordners schreibt. Die herausgelösten Dateien sind Arbeitskopien; das Original bleibt die unveränderte XML-Datei.

Wie funktionieren Anhänge bei ZUGFeRD?

ZUGFeRD verwendet im XML-Teil dieselbe CII-Syntax. Ergänzende Unterlagen können deshalb, je nach Profil, genauso als ram:AdditionalReferencedDocument mit ram:AttachmentBinaryObject im XML stehen. Daneben ist eine ZUGFeRD-Rechnung ein PDF/A-3, das technisch weitere Dateien einbetten kann. Für die Umsatzsteuer zählt nach dem BMF-Schreiben vom 15.10.2025 der strukturierte XML-Teil; weicht die PDF-Ansicht davon ab, gilt das XML. Ob ein Empfänger zusätzliche Dateien im PDF-Container automatisch verarbeitet, hängt von seiner Software ab. Die Einbettung im XML ist deshalb der eindeutigere Weg, und wer ZUGFeRD im Profil XRECHNUNG an Bundesbehörden schickt, hält sich an die Anlagenregeln der OZG-RE.

Welche Dateien ein ZUGFeRD-PDF enthält, zeigt unser Werkzeug ZUGFeRD auslesen: Es holt die Rechnungs-XML heraus und listet die Namen weiterer eingebetteter Dateien auf. Die extrahierte XML können Sie anschließend im Viewer prüfen. Wie sich die beiden Formate grundsätzlich unterscheiden, erklärt der Vergleich Unterschied XRechnung ZUGFeRD, Profile und Versionen der Beitrag ZUGFeRD-Rechnung.

Schlagwörter:XRechnungAnhangBase64BG-24ZUGFeRDEntwickler

Tools zu diesem Artikel

Häufige Fragen

Kann man an eine XRechnung ein PDF anhängen?

Ja. Das PDF wird nicht separat verschickt, sondern Base64-kodiert in die XML-Datei eingebettet: in der Gruppe BG-24 mit einer Kennung (BT-122), dem MIME-Code application/pdf und einem eindeutigen Dateinamen. In UBL steht es in cac:AdditionalDocumentReference, in CII in ram:AdditionalReferencedDocument. Das PDF darf die Rechnung nur ergänzen; alle umsatzsteuerlichen Pflichtangaben müssen im XML selbst stehen.

Welche Dateiformate sind als Anhang einer XRechnung erlaubt?

Erlaubt sind PDF, PNG, JPEG, CSV, Excel-Tabellen (XLSX) und OpenDocument-Tabellen (ODS). XML-Dateien, etwa GAEB-Daten im Bauwesen, sind nur mit der Extension XRechnung zulässig (Regel BR-DEX-01). Word-Dokumente, ZIP-Archive oder E-Mail-Dateien weist der Validator mit BR-CL-24 zurück. Wandeln Sie solche Unterlagen vor dem Einbetten in ein PDF um; aktive Inhalte wie Makros schließt die Bundesplattform ausdrücklich aus.

Wie groß darf eine XRechnung mit Anhängen sein?

Die EN 16931 setzt keine Grenze, die Übertragungswege schon. Die FAQ der Bundesplattform OZG-RE nennt unter anderem 10 MB für die Rechnung per E-Mail, 11 MB in der Weberfassung, 15 MB für eingebettete Anlagen und 100 MB über Peppol, außerdem höchstens 200 eingebettete Dokumente. Rechnen Sie den Base64-Aufschlag von rund 33 Prozent ein und prüfen Sie die aktuellen Werte vor dem Versand.

Reicht ein Link auf die Anlage statt einer eingebetteten Datei?

Für umsatzsteuerliche Pflichtangaben nie: Laut BMF-Schreiben vom 15.10.2025 erfüllt ein Link auf ein externes Ziel die Anforderungen an eine E-Rechnung nicht, die Angaben gehören ins XML. Für ergänzende Unterlagen ist ein Verweis in BT-124 technisch möglich. Stimmen Sie das vorher mit dem Empfänger ab; kann die Stelle den Link nicht öffnen, kann die OZG-RE-Rechnung mangels Prüfbarkeit zurückgewiesen werden.

Wie bekomme ich einen Anhang aus einer XRechnung wieder heraus?

Suchen Sie in UBL das Element cbc:EmbeddedDocumentBinaryObject, in CII ram:AttachmentBinaryObject. Der Inhalt ist der Base64-Text der Datei, das Attribut filename liefert den Namen und mimeCode den Typ. Dekodieren Sie den Text mit der Base64-Funktion Ihrer Programmiersprache und speichern Sie die Bytes als Datei. Die Original-XML bleibt dabei unverändert im Archiv.

ThemenseiteMehr zu Entwickler & DatenXML, JSON, Base64, CSV und Zeitstempel: Formate und Werkzeuge für Entwickler, die mit E-Rechnungen und Geschäftsdaten arbeiten.