A ZUGFeRD invoice is more than the numbers on the page. The structured heart of a ZUGFeRD file is CII XML, embedded inside a PDF/A-3, and that XML can carry whole documents of its own: a delivery note, a signed timesheet, a CSV that backs the charges, or a supplementary PDF. An XRechnung has no PDF page, yet it carries the same kind of embedded Anlagen inside its XML. Those files travel base64-encoded inside the invoice so they survive transmission intact. This tool pulls them all back out, so you can open, review, or archive exactly what your supplier embedded, not just the fields your accounting or DATEV import chose to show.
Where attachments live in a ZUGFeRD or XRechnung invoice
The EN 16931 European standard, the basis for both ZUGFeRD and XRechnung, defines a business group called Additional Supporting Documents (BG-24). Each entry describes one supporting file: a reference, an optional description, and then either a link to the document or the document itself. When the document is embedded, its bytes are carried as a base64-encoded binary object (BT-125), tagged with a filename and a MIME type.
In UN/CEFACT CII, the syntax inside every ZUGFeRD file and the most common XRechnung syntax, that shows up as an AdditionalReferencedDocument with an AttachmentBinaryObject. Extracting an attachment means reading that base64 payload and decoding it back into the original file, byte for byte. Because a ZUGFeRD PDF is just a PDF/A-3 wrapper around this CII, the attachments are found in the same place whether you upload the hybrid PDF or the standalone XML. XRechnung narrows the allowed attachment types to PDF, PNG, JPEG, CSV, XLSX, and ODS, so what you extract is always one of those.
Embedded files (BT-125) versus external links (BT-124)
Not every supporting document is embedded. A BG-24 entry can instead point to an external URL (BT-124), a plain link to a document hosted somewhere else. The two cases are very different in practice. An embedded payload is self-contained: the file is right there in the ZUGFeRD PDF or XRechnung XML, and extracting it is a safe, offline decode. An external link is a URL that could point anywhere.
This tool only extracts what is embedded in the invoice itself. It never follows external links: fetching a URL that arrived inside a document is a security risk, and whether to open a third-party link is a decision only you should make. So what you download is exactly the content the invoice carried, and nothing it merely referenced.
One drop, one ZIP, ready for your GoBD archive
Drop in a ZUGFeRD PDF or a standalone XRechnung XML and the extractor returns one ZIP, each attachment under its own filename, ready to use or to file away. German record-keeping rules (GoBD) expect an invoice to be retained together with the documents that belong to it, so keeping the embedded Anlagen next to the invoice matters. Nothing is opened along the way: the embedded bytes are decoded and streamed straight into the archive without being parsed, rendered, or executed, and your invoice is handled in memory and discarded the moment the ZIP is ready. Nothing is stored, logged, or passed on.
Where to next
Want to read the invoice itself rather than its attachments? Open it in the XRechnung viewer. Need to check a file before you send it? Validate your ZUGFeRD or XRechnung against EN 16931 and the German CIUS rules in one drop.