Skip to main content

Create ZUGFeRD Invoice in Power Automate

Create ZUGFeRD Invoice is a Power Automate action by PDF4me that generates a ZUGFeRD-compliant hybrid e-invoice, a single PDF/A-3 file with structured XML embedded inside. Use it to satisfy Germany's B2B e-invoicing mandate, exchange EN 16931-aligned invoices with any ERP, or archive one file that both humans and machines can read.

What this action does

PDF4me Create ZUGFeRD Invoice builds a ZUGFeRD-compliant hybrid e-invoice, a single PDF/A-3 archival PDF with structured invoice XML embedded inside, directly in a Power Automate flow. Humans read the PDF; ERPs and clearing platforms parse the XML. The action satisfies Germany's B2B e-invoicing mandate (effective 1 January 2025 for receipt, full sending by 2028) and the underlying EN 16931 European Standard. Map invoice data as XML, JSON, or CSV from SharePoint, OneDrive, Outlook, or Dataverse, and route the hybrid output to your archive, your ERP, or your customer in one step.

Related Blog Posts(1)

How Do I Authenticate My Power Automate Flow?

To call PDF4me through Power Automate, the flow needs a valid PDF4me API key on the PDF4me Connect connector. Authentication ensures secure communication and validates your identity as an authorized user. Get or rotate your key from the developer dashboard.

Important Facts You Should Not Miss

ZUGFeRD is hybrid PDF/A-3 + embedded XML, not a pure XML format
The default XmlWithPdf output is one file: an archival PDF/A-3 with the structured ZUGFeRD XML attached inside it. Humans open the PDF; AP systems parse the XML. Set XmlOnly only when the receiving system consumes pure XML.
The 2025 German B2B mandate needs ZUGFeRD 2.0 or higher
Germany's Wachstumschancengesetz (Growth Opportunities Act) made e-invoice receipt mandatory from 1 January 2025, with full sending obligations phased in by 2028. ZUGFeRD 2.0 and above (EN 16931 aligned) satisfy the mandate; the legacy 1.0 does not. Pick the highest version your connector exposes (the combined ZUGFeRD version + Input Format dropdown lists it).
Map ONE invoice data field, never two
The action shows Invoice XML Data, Invoice JSON Data, or Invoice CSV Data based on the format part of the combined dropdown. Map only the one that matches. Populating two data fields in the same run is the most common cause of validation failures.
Create ZUGFeRD Invoice action in Power Automate showing the main Parameters tab with ZUGFeRD version and Input Format set to 2.0-XML, Output Mode XmlWithPdf, Invoice Xml Data mapped from File Content, Conformance Level BASIC, Render Invoice on PDF Yes, File Content mapped from a previous action, and File Name abc.pdf

Main Parameters tab. ZUGFeRD version and Input Format is a combined dropdown (here 2.0-XML).

Create ZUGFeRD Invoice action in Power Automate showing the Advanced parameters section with Showing 1 of 1 and the Language field set to de

Advanced parameters. Language defaults to de; also accepts en, fr, it, es, nl, pl, pt, cs.

ZUGFeRD vs Factur-X vs XRechnung: pick the right profile

FormatWhere it is usedOutput typePick when
ZUGFeRDGermany, EU B2B, supplier-to-buyer invoicingHybrid PDF/A-3 + embedded XMLGeneral B2B; you want one file for humans and machines.
Factur-XFrance (sister format, technically identical to ZUGFeRD 2.x)Hybrid PDF/A-3 + embedded XMLCross-border FR<>DE invoicing; the same hybrid file works on both sides.
XRechnungGerman public sector (federal, state, municipal)Strict pure XML profileYou invoice a German public-sector authority; switch to an XRechnung-aligned profile when the receiver demands pure XML.

Parameters

Required in the action: ZUGFeRD version and Input Format, Output Mode, the matching Invoice XML / JSON / CSV Data field, and Conformance Level. PDF File Content and File Name become required only when Output Mode is XmlWithPdf. Output File Name sets the filename of the generated hybrid file. Render Invoice on PDF defaults to true. Language lives under Advanced parameters and defaults to de.

ParameterRequiredWhat it doesExample
ZUGFeRD version and Input FormatRequiredCombined dropdown that picks both the ZUGFeRD specification version (1.0, 2.0, etc.) and the shape of your invoice data (XML, JSON, CSV) in a single setting. The value drives which Invoice Data field appears below and which Conformance Level set is offered.2.0-XML
Output ModeRequiredXmlWithPdf returns the canonical hybrid PDF/A-3 file with the XML embedded inside. XmlOnly returns the XML invoice file alone. PDF File Content and File Name are only required for XmlWithPdf.XmlWithPdf
Invoice XML DataConditionalRequired when the Input Format part of the combined dropdown is XML. Map your ZUGFeRD XML payload from a previous action (Get file content, Compose, etc.).File Content
Invoice JSON DataConditionalRequired when the Input Format part is JSON. Map a structured invoice JSON object that PDF4me converts to the ZUGFeRD XML schema before embedding.File Content
Invoice CSV DataConditionalRequired when the Input Format part is CSV. Map a tabular CSV row that PDF4me converts to the ZUGFeRD XML schema before embedding.File Content
Conformance LevelRequiredProfile that controls how rich the invoice data must be. BASIC is the entry-level profile with line items, suitable for most B2B receivers. COMFORT adds additional fields for richer content. EXTENDED is the largest set, used for industry-specific scenarios beyond the EN 16931 baseline.BASIC
Render Invoice on PDFRequiredWhen set to Yes (default), PDF4me visually renders the invoice content on the PDF pages using your invoice data. Set to No when you supply a pre-designed background PDF and only need the XML embedded without redrawing the content.Yes
PDF File ContentConditionalRequired when Output Mode is XmlWithPdf. Map the background PDF bytes from a previous action (Get file content from SharePoint / OneDrive / Outlook / Dataverse). Skip for XmlOnly.File Content
File NameConditionalRequired when Output Mode is XmlWithPdf. The source PDF filename with extension. Used for trace and naming context.abc.pdf
Output File NameOptionalFilename of the generated hybrid file or XML. Use .pdf for XmlWithPdf and .xml for XmlOnly. Helps when the downstream Create file action expects an explicit name.Zugferd-output.pdf
LanguageOptionalAdvanced parameter. Locale used for invoice labels in the rendered PDF. Default de. Accepted codes: de, en, fr, it, es, nl, pl, pt, cs. The XML data itself stays language-neutral.de

Output Mode options

XmlWithPdfDefault. canonical ZUGFeRD hybrid file
One PDF/A-3 file with the structured invoice XML attached inside it. Use for outbound invoicing to customers, archival in SharePoint, attaching to Outlook emails, or anywhere a single artifact must serve both human and machine readers.
XmlOnlyStandalone XML invoice
Returns the ZUGFeRD invoice XML alone. Use when the receiving ERP, clearing house, or middleware ingests XML directly and the visual PDF is generated elsewhere or not required. PDF File Content / File Name are not required.

Conformance Level ladder

BASICDefault. broadest receiver compatibility
Entry-level profile with line items, tax breakdown, and parties. Aligns with the minimum EU directive on e-invoicing and is accepted by most B2B receivers. Start here for compatibility tests.
COMFORTRicher invoice content
Adds further structured fields on top of BASIC. Move here when your buyer or ERP expects a more complete invoice payload than the minimum. Confirm support before switching from BASIC.
EXTENDEDLargest set, industry-specific
Adds industry-specific fields beyond the EN 16931 baseline. Use only when the receiver explicitly requires it; the richer payload otherwise increases the chance of validation friction.

Language options (Advanced)

The Advanced parameters section exposes one field, Language. It controls only the locale used for labels drawn on the visual PDF; the XML data stays language-neutral. Default is de.

CodeLanguageTypical use
deGermanDefault. German domestic invoicing.
enEnglishCross-border B2B in English-speaking markets.
frFrenchFrance or French-speaking Switzerland (also pairs with Factur-X workflows).
itItalianItaly or Italian-speaking Switzerland.
esSpanishSpain and Spanish-speaking partners.
nlDutchNetherlands and Flemish Belgium.
plPolishPoland.
ptPortuguesePortugal and Portuguese-speaking partners.
csCzechCzechia.

Sample Invoice Files

Use these to test the flow with each input format before connecting your live data source. For German B2B production workflows aligned with the 2025 mandate, start with the JSON 2.0 EN16931 sample.

ZUGFeRD XML Sample
ZUGFeRD 1.0 BASIC XML. Pick 1.0-XML in the combined dropdown, then map this into Invoice XML Data.
ZUGFeRD-invoice-sample.xml
ZUGFeRD 2.0
ZUGFeRD 2.0 XML Sample (EN16931)
ZUGFeRD 2.0 EN16931 XML with seller / buyer parties, line items, VAT, and monetary summation in CrossIndustryInvoice format. Pick 2.0-XML.
ZUGFeRD-invoice-sample-2.0.xml
Recommended
JSON 2.0 EN16931 Sample
Full structured invoice for ZUGFeRD 2.0 EN16931. Pick 2.0-JSON, then map into Invoice JSON Data.
sample-invoice-zugferd-2.0-en16931.json
JSON Invoice Sample (basic)
Simpler JSON for smoke tests with ZUGFeRD 1.0 and BASIC conformance.
sample-invoice.json
CSV Invoice Sample
Flat CSV row for batch tests. Pick 1.0-CSV, then map into Invoice CSV Data.
test-invoice.csv
ZUGFeRD 2.0
CSV 2.0 Invoice Sample
Extended 22-column CSV: InvoiceId, IssueDate, seller / buyer address fields, SellerVatId, ProductId, Currency, PaymentReference, IBAN, BIC. Pick 2.0-CSV.
zugferd-invoice-2.0.csv

Input and Output Decision Matrix

If you selectThen mapYou get
ZUGFeRD version and Input Format = 2.0-XMLInvoice XML DataZUGFeRD 2.0 hybrid output (or XML-only) from your existing XML payload
ZUGFeRD version and Input Format = 2.0-JSONInvoice JSON DataZUGFeRD 2.0 hybrid from a structured JSON object converted to the schema
ZUGFeRD version and Input Format = 2.0-CSVInvoice CSV DataZUGFeRD 2.0 hybrid from a flat CSV row converted to the schema
Output Mode = XmlWithPdfPDF File Content + File Name (background PDF)PDF/A-3 hybrid file with embedded XML
Output Mode = XmlOnlyInvoice data only (no PDF bytes needed)Standalone ZUGFeRD XML invoice

How Do I Set Up Create ZUGFeRD Invoice in Power Automate?

  1. Add Create ZUGFeRD Invoice to your flow as a new step.
  2. Sign in to PDF4me Connect with your API key.
  3. Pick ZUGFeRD version and Input Format (for example 2.0-XML, 2.0-JSON, or 2.0-CSV).
  4. Set Output Mode to XmlWithPdf for the hybrid file or XmlOnly for pure XML.
  5. Map only the matching invoice data field (XML, JSON, or CSV) from a previous action.
  6. Set Conformance Level (BASIC for compatibility tests, COMFORT or EXTENDED when your receiver confirms support).
  7. Leave Render Invoice on PDF as Yes unless you supply a pre-designed background PDF.
  8. For XmlWithPdf, map PDF File Content and File Name from a previous action (Get file content).
  9. Set Output File Name (Zugferd-output.pdf or Zugferd-output.xml).
  10. Under Advanced parameters, set Language if you need labels in a non-German locale.
  11. Route the File Content output into SharePoint Create file, OneDrive Create file, Outlook Send an email, or a Dataverse record. Optionally chain Validate PDF/A before archive.

Output

The action returns the generated file content plus metadata your flow can pass downstream.

FieldTypeDescription
File ContentBinaryThe generated PDF/A-3 hybrid file (XmlWithPdf) or the standalone XML invoice (XmlOnly).
FileName (header)StringSuggested output filename returned in the response headers.
PageCount (header)StringPage count of the generated PDF, returned when Output Mode is XmlWithPdf.

Troubleshooting

Invoice data mapped to the wrong format field

If the Input Format part of the combined dropdown is CSV, map only Invoice CSV Data. Do not populate XML / JSON fields in the same run. Pick a single format per call.

PDF output errors when Output Mode is XmlWithPdf

PDF File Content must come from a step that returns complete file bytes (Get file content from SharePoint / OneDrive / Outlook attachment), not metadata-only references such as an item GET that lacks the file payload.

Conformance Level rejected by the receiver

Start with BASIC for compatibility tests, then move up only after the receiving system confirms support. EXTENDED in particular can fail validation on receivers tuned for the EN 16931 baseline.

Legacy 1.0 chosen for a mandate-compliant flow

ZUGFeRD 1.0 does not satisfy the 2025 German B2B mandate. Pick the 2.0 family (or higher) in the ZUGFeRD version and Input Format dropdown for any mandate-sensitive workflow.

Workflow Examples

Workflow ExamplesOpen by default. Four common ZUGFeRD automation patterns in a 2x2 grid.
Dataverse to hybrid PDF archive
  1. Trigger when an invoice row is marked Approved in Dataverse (or ERP).
  2. Compose the invoice JSON from row columns and child line-item table.
  3. Get the layout PDF from a SharePoint document library template.
  4. Run Create ZUGFeRD Invoice with 2.0-JSON, XmlWithPdf, EN 16931-aligned conformance.
  5. Save the returned File Content to the records library; chain Validate PDF/A before retention.

Impact: One file for humans and machines, strong fit for audit and long-term storage.

CSV batch from SharePoint
  1. Trigger on a new file landing in a SharePoint staging folder.
  2. Read the CSV file content for invoice lines.
  3. Pick 2.0-CSV in the combined dropdown; map Invoice CSV Data.
  4. Set XmlWithPdf, route the result to an approved invoices library.

Impact: Repeatable batch generation without manual desktop tools.

XmlOnly to SAP or middleware
  1. Upstream system produces invoice JSON.
  2. Run the action with XmlOnly; skip PDF File Content.
  3. POST the returned XML to SAP, an EDI broker, or an e-invoicing clearing house.
  4. Log correlation IDs for support traceability.

Impact: Clean handoff when the PDF shell is generated elsewhere.

Outlook send and SharePoint archive
  1. Finalise the invoice in your billing system.
  2. Generate the ZUGFeRD hybrid file (XmlWithPdf).
  3. Outlook Send an email with the PDF/A-3 attached to the customer.
  4. SharePoint Create file in the records library with metadata columns (invoice number, amount, due date).

Impact: Customer self-service and fewer "wrong format" support tickets.

Industry Use Cases & Applications

Industry Use Cases & ApplicationsExpand to see manufacturing, finance, public sector, and SaaS scenarios.
Manufacturing & B2B
  • Supplier invoices. hybrid PDF/A-3 + XML for buyers with strict AP rules
  • Order-to-cash. automate invoice packages from ERP events
  • Audit trail. one artifact per shipment or milestone
Finance & Accounting
  • Accounts receivable. compliant outbound e-invoices that satisfy the 2025 mandate
  • Month-end. batch hybrid output from consolidated invoice data
  • Archival. pair with PDF/A validation before records retention
Public sector & regulated
  • Structured exchange. XmlOnly for mandated clearing channels
  • Transparency. embedded XML supports automated verification
  • Retention. align with internal records policies
SaaS & platforms
  • Billing exports. generate ZUGFeRD from JSON / CSV you already emit
  • Multi-tenant. separate invoice JSON / XML / CSV or templates per customer in your flow
  • Customer success. fewer manual "send invoice again" loops

Frequently Asked Questions

What is ZUGFeRD and how does it differ from XRechnung and Factur-X?+
ZUGFeRD is the German hybrid e-invoicing format: a PDF/A-3 archival PDF with structured XML invoice data embedded inside it. Humans read the PDF; machines parse the XML. XRechnung is the German public sector profile, a stricter pure-XML profile required when invoicing federal, state, or municipal authorities. Factur-X is the French sister format that uses the same hybrid PDF/A-3 + XML structure as ZUGFeRD 2.x and is fully compatible. Pick ZUGFeRD with EN 16931 alignment for general B2B; switch to XRechnung when invoicing a German public-sector buyer. The format is maintained by <a href="https://www.ferd-net.de/" target="_blank" rel="noopener noreferrer">FeRD, the Forum elektronische Rechnung Deutschland</a>.
Does ZUGFeRD satisfy the German B2B e-invoicing mandate that began in 2025?+
Yes, when generated as ZUGFeRD 2.0 or higher with EN 16931 alignment. Germany's Wachstumschancengesetz (Growth Opportunities Act) made e-invoice receipt mandatory for B2B transactions from 1 January 2025 and phases in full sending obligations by 2028. Legacy ZUGFeRD 1.0 does not satisfy the mandate; use the 2.0 family or higher. See the <a href="https://www.e-rechnung-bund.de/" target="_blank" rel="noopener noreferrer">German federal e-invoicing information portal</a> for the official rollout timeline.
When should I use XmlWithPdf versus XmlOnly?+
XmlWithPdf returns a single PDF/A-3 file with the ZUGFeRD XML attached inside it: the canonical hybrid output you send to customers, archive in SharePoint, or attach to email. XmlOnly returns the XML invoice alone, useful when the receiving ERP or clearing platform consumes XML directly and the PDF shell is generated elsewhere or not needed at all.
What is the difference between BASIC, COMFORT, and EXTENDED conformance?+
BASIC is the entry-level profile with the minimum line items and tax breakdown needed for a valid invoice; it offers the broadest receiver compatibility. COMFORT adds further structured fields for richer invoice content. EXTENDED includes the largest set, designed for industry-specific scenarios beyond the EN 16931 baseline. Start with BASIC for compatibility, then move to COMFORT or EXTENDED only after the receiver confirms support.
Do I need to map the background PDF when using XmlOnly?+
No. PDF File Content and File Name are only required when Output Mode is XmlWithPdf. With XmlOnly the action generates a standalone XML file from your invoice data and the PDF input fields can be left empty.
What does Render Invoice on PDF actually do?+
When set to Yes (default), PDF4me draws the invoice content (header, line items, totals) visually on the PDF pages using your invoice data. Set to No when you already provide a pre-designed background PDF that already shows the invoice content and you only need the structured XML embedded inside it.
Which language codes does the Language field accept?+
Nine codes: de (default, German), en (English), fr (French), it (Italian), es (Spanish), nl (Dutch), pl (Polish), pt (Portuguese), and cs (Czech). The setting affects only the labels drawn on the visual PDF; the XML data itself stays language-neutral.
How do I move the generated file into SharePoint, Outlook, or Dataverse?+
Add a follow-up action after Create ZUGFeRD Invoice and map the File Content output. For SharePoint use Create file under the document library; for OneDrive use Create file; for Outlook use Send an email with attachment and map File Content as the attachment content with Output File Name as the attachment name; for Dataverse use Add a new row or Upload a file to an existing row.

Same Task on Other Platforms

Get Help