Create a ZUGFeRD 2.0+ E-Invoice in Make: A 4-Module Dropbox Workflow

ZUGFeRD 2.0+ (also known as Factur-X in France and XRechnung in the German public sector) is a hybrid PDF/A-3 invoice with the machine-readable XML embedded inside the PDF. One file that both humans and ERP systems can consume. This guide walks through the exact run shown in the screenshots: a base invoice PDF and a ZUGFeRD 2.0+ XML in Dropbox become an EN16931-compliant hybrid e-invoice in /pdf4meoutput/, in 4 Make modules, zero code.
Four Make modules end-to-end. Two Dropbox Download a File steps pull the base PDF and the ZUGFeRD 2.0+ XML (the screenshots show YnooxTestone connection plus paths /pdf4metest/Zugfred Invoice/SimplePdf.pdf and /pdf4metest/Zugfred Invoice/version2.xml). PDF4me Create a ZUGFeRD invoice embeds the XML into the PDF with Output Mode XML With PDF, ZUGFeRD Version 2+, Conformance Level EN16931, Render Invoice on PDF Yes, Language de. Dropbox Upload a File writes the resulting hybrid PDF/A-3 to /pdf4meoutput/ with File set to Map, File Name 15. Name, Data 15. Document. The output opens in any PDF reader and parses cleanly in any ERP that supports ZUGFeRD / Factur-X / XRechnung.
First, the Conformance Level must match what your buyer or recipient ERP expects. EN16931 (Comfort) is the German legal default and the safe choice for B2B in the EU; XRECHNUNG is required for B2G (public-sector) invoicing in Germany; BASIC works for most other buyers. Second, the ZUGFeRD Version must be 2+ for anything EN 16931 aligned. Legacy 1.0 uses BASIC / COMFORT / EXTENDED and is incompatible with EN 16931 receivers. Pick 2+ unless a recipient explicitly asks for 1.0.
Common real-world questions this solves
People search this exact problem with phrasings like:
- "How do I create a ZUGFeRD invoice with embedded XML in Make?" This 4-module scenario does it end-to-end: PDF template plus XML invoice in, hybrid PDF/A-3 out.
- "Is ZUGFeRD the same as Factur-X?" Yes. Same technical format under different names. A ZUGFeRD 2.x file is accepted by systems expecting Factur-X and vice versa.
- "Which Conformance Level should I pick?" EN16931 for B2B (matches German legal default and EU EN 16931), XRECHNUNG for German public sector (B2G), BASIC for broadest legacy compatibility.
- "Do I need to write XML myself?" No, but for this scenario the screenshots use an existing XML invoice. The module also accepts JSON or CSV input and builds the XML for you.
- "What if my buyer needs only the XML, no PDF?" Set Output Mode to
XML Onlyand the module returns just the XML invoice file instead of the hybrid.
What you are building
A reusable Make scenario that produces a fully compliant ZUGFeRD 2.0+ hybrid e-invoice from a base PDF and an XML invoice file. Trigger can be manual, scheduled (as shown), Dropbox file-watch, or an HTTP webhook. The output is a single file that satisfies both the human-readable PDF requirement and the machine-readable XML requirement for EU e-invoicing mandates.

Four modules end-to-end. Two downloads, one PDF4me action, one upload. The clock badge on Module 1 indicates a scheduled trigger; swap to manual / file-watch / webhook to fit your use case.
What you need
- Make account with a scenario open. Create a Make account if you need one.
- PDF4me API key. Get your API key and connect on the first PDF4me module. See Connect PDF4me to Make.
- Dropbox with a source folder (e.g.
/pdf4metest/Zugfred Invoice/) holding the PDF template and the XML invoice, plus an output folder (/pdf4meoutput/). - A base PDF (the screenshots use
SimplePdf.pdf). It does not need any layout markup. The module embeds the XML as a PDF/A-3 attachment. - A ZUGFeRD 2.0+ XML invoice. Use your own, or grab a 2.0 XML sample to follow along.
Quick reference: what each parameter does
Build the scenario
Module 1: Dropbox Download a File (base PDF)
Pull the source PDF where the ZUGFeRD XML will be embedded as a PDF/A-3 attachment.
| Field | Value used in this run |
|---|---|
| Connection | YnooxTestone (ynoox.test...). your Dropbox connection |
| Way of selecting files | Select a file |
| File | /pdf4metest/Zugfred Invoice/SimplePdf.pdf |

Module 2: Dropbox Download a File (ZUGFeRD 2.0+ XML)
Pull the ZUGFeRD XML invoice file. The XML carries every invoice detail; the PDF is just the visual wrapper.
| Field | Value used in this run |
|---|---|
| Connection | YnooxTestone (ynoox.test...). same Dropbox connection |
| Way of selecting files | Select a file |
| File | /pdf4metest/Zugfred Invoice/version2.xml |

Module 3: PDF4me Create a ZUGFeRD invoice
The action that does the actual embedding. Map both downloaded files as inputs, pick your conformance settings, and run.
| Group | Field | Value |
|---|---|---|
| Auth | Connection | Classify Documen (testva...). PDF4me connection |
| Source | File (PDF template) | Map → Module 1 File Name + Data |
| Source | Input Format | XML |
| Source | File (XML invoice) | Map → Module 2 File Name + Data (a second File picker appears when Input Format is XML) |
| Output | Output Mode | XML With PDF (hybrid PDF/A-3) |
| Output | ZUGFeRD Version | 2+ |
| Output | Conformance Level | EN16931 |
| Output | Render Invoice on PDF | Yes |
| Output | Language | de |
Module 4: Dropbox Upload a File
Save the hybrid PDF/A-3 e-invoice back into the output folder.
| Field | Value used in this run |
|---|---|
| Connection | YnooxTestone (ynoox.test...) |
| Folder | /pdf4meoutput/ |
| File | Map (so File Name and Data come from the PDF4me step) |
| File Name | 15. Name (dynamic content from PDF4me Module 3) |
| Data | 15. Document (dynamic content from PDF4me Module 3) |

Save and click Run once. The hybrid PDF/A-3 lands in /pdf4meoutput/ within a couple of seconds.
Sample files (XML, JSON, CSV)
You can substitute Module 2 (XML) for any of these inputs and change Input Format accordingly.
version2.xml in the run above.