A Peppol invoice is more than its totals. A well-formed UBL or CII invoice can carry whole documents inside it: a human-readable PDF of the invoice, a delivery note, a signed timesheet, a spreadsheet that backs the charges. Those files travel embedded in the XML, encoded so they survive the trip across the Peppol network. This tool pulls them all back out, so you can open, review, or archive what your supplier actually sent, not just the numbers your accounting system chose to display.
Where attachments live in a UBL or Peppol invoice
The EN 16931 European standard 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 UBL 2.1 and Peppol BIS Billing 3.0 that shows up as an AdditionalDocumentReference with an EmbeddedDocumentBinaryObject. In UN/CEFACT CII (the syntax behind Factur-X and ZUGFeRD) it is an AdditionalReferencedDocument with an AttachmentBinaryObject. Different words, the same EN 16931 idea. Extracting an attachment means reading that base64 payload and decoding it back into the original file, byte for byte.
Embedded files versus external links
Not every supporting document is embedded. A BG-24 entry can instead point to an external URI (BT-124), a plain link to a document hosted somewhere else. Those two cases are very different in practice. An embedded payload is self-contained: the file is right there in the invoice, 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.
Every syntax, one result
Peppol runs on UBL, but attachments are not a UBL-only concern. Drop in plain UBL 2.1, a Peppol BIS Billing 3.0 document, a UN/CEFACT CII invoice, or a hybrid PDF such as Factur-X or ZUGFeRD that carries the invoice XML embedded inside it. In each case the extractor finds the supporting documents in the same EN 16931 place and returns them the same way: one ZIP, each attachment under its own filename, ready to use.
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 UBL viewer. Need to check a UBL file before you send it? Validate it against Peppol BIS 3.0 in one drop.