ZUGFeRD

ZUGFeRD is the hybrid e-invoice format of the German market: a PDF that people can read, carrying an XML file that software can process. If you invoice German customers, this is the format you are most likely to meet next to XRechnung.

By Peppol Validator · Last updated

In short

  1. One file, two layers: a PDF/A-3 for the human reader and an embedded CII XML for the accounting system. The XML is what counts for tax purposes.
  2. ZUGFeRD and Factur-X are one standard since version 2.1, maintained jointly by Germany (FeRD) and France (FNFE-MPE).
  3. The profile matters. From BASIC upwards the XML is a valid EN 16931 invoice and counts as an e-invoice in Germany. MINIMUM and BASIC WL do not.

How a ZUGFeRD invoice is built

The container is PDF/A-3 (ISO 19005-3), an archival PDF flavour that allows file attachments. The attachment is an XML document in UN/CEFACT Cross Industry Invoice (CII) syntax, one of the two syntaxes recognised by the European norm EN 16931 (the other is UBL). Metadata inside the PDF declares which ZUGFeRD version and profile the attachment follows.

For the recipient, this means a gradual path to automation: a small business can open the PDF like any other invoice, while a company with an ERP system imports the XML without retyping anything. German tax guidance states that, for hybrid invoices, the structured XML prevails if it differs from the visible PDF, so the XML has to be correct on its own.

The name is an acronym of Zentraler User Guide des Forums elektronische Rechnung Deutschland. FeRD coordinates every release with its French partner FNFE-MPE, which publishes the same specification as Factur-X.

ZUGFeRD profiles

Profiles set how much structured data the XML must carry. They are the most common source of confusion: a file can be a perfectly valid ZUGFeRD MINIMUM document and still not be an e-invoice under German law.

ProfileData contentEN 16931E-invoice (DE)
MINIMUMHeader and totals only, no invoice linesNo (booking aid)No
BASIC WLHeader data and VAT breakdown, no lines (“without lines”)No (booking aid)No
BASICCore invoice with lines, reduced data setYes, compliant subsetYes
EN 16931 (COMFORT)The full EN 16931 semantic modelYesYes
EXTENDEDEN 16931 plus extra fields for complex processesYes, plus extra fieldsYes
XRECHNUNGAligned with the German XRechnung CIUSYes, XRechnung rulesYes

In practice, most German invoicing software defaults to the EN 16931 profile. Choose EXTENDED only when you need fields beyond the norm, for example for complex delivery or logistics data, and XRECHNUNG when a recipient explicitly asks for XRechnung content inside a PDF.

Versions and their Factur-X equivalents

ZUGFeRDFactur-XNote
1.0 (2014)nonePre-EN 16931 data model
2.0 (2019)1.0 (largely aligned)First EN 16931-based version
2.1 / 2.1.1 (2020)1.0.05Identical; XRECHNUNG profile added
2.2 (2022)1.0.06Identical
2.3.x (2024–2025)1.0.07 / 1.07.xIdentical
2.4 (from 15 Jan 2026)1.08Identical; adds sub-lines

ZUGFeRD 1.0 is not EN 16931 compliant and should not be used for new invoices. The German Federal Ministry of Finance accepts ZUGFeRD from version 2.0.1. For a new implementation, target the current release.

ZUGFeRD, XRechnung and Peppol

XRechnung is the German CIUS of EN 16931, maintained by KoSIT. It is XML only, in UBL or CII, and adds German rules (BR-DE-) such as the Leitweg-ID for public-sector buyers. Public authorities generally expect XRechnung; whether a portal accepts a ZUGFeRD file in the XRECHNUNG profile depends on that portal.

Peppol BIS Billing 3.0 uses UBL only, so a ZUGFeRD file is not sent over Peppol as such. Many German businesses use XRechnung over Peppol for public-sector invoices and ZUGFeRD by email for B2B. A side-by-side view is in ZUGFeRD vs Factur-X vs XRechnung, and the syntax differences in UBL vs CII vs Factur-X.

ZUGFeRD and the German mandate

Since 1 January 2025 every business in Germany must be able to receive structured e-invoices. Issuing becomes mandatory from 1 January 2027 for companies with prior-year turnover above EUR 800,000 and from 1 January 2028 for all others. ZUGFeRD in profile BASIC or higher is an accepted format, as are XRechnung and Peppol BIS. Deadlines and exemptions are covered in the German e-invoicing mandate and e-invoicing in Germany.

Validating a ZUGFeRD invoice

Our validator works on XML, not PDF. Save the attached XML from the PDF/A-3 first (usually factur-x.xml, via your PDF reader's attachments panel or a tool such as pdfdetach, qpdf or mutool), then upload it to the ZUGFeRD validator.

The XML is checked against the CEN EN 16931 schematron for CII: business rules (BR-), calculations (BR-CO-), decimals (BR-DEC-), VAT categories, code lists and CII syntax rules (CII-SR-). For the XRECHNUNG profile, the German KoSIT BR-DE rules run too. We do not check PDF/A-3 conformance, the PDF metadata, the FeRD profile-specific rules or the XML schema; for a binding XRechnung check use the KoSIT validator as well.

Frequently asked questions

What is ZUGFeRD?

ZUGFeRD is a German hybrid e-invoice format. A ZUGFeRD invoice is a PDF/A-3 document with an XML file attached in UN/CEFACT Cross Industry Invoice (CII) syntax. People read the PDF; software reads the XML. The format is maintained by FeRD, the Forum for Electronic Invoicing Germany.

What does ZUGFeRD stand for?

Zentraler User Guide des Forums elektronische Rechnung Deutschland, roughly 'Central User Guide of the Forum for Electronic Invoicing Germany'. FeRD sits within the AWV association and develops the format together with its French partner FNFE-MPE.

Which ZUGFeRD profiles exist?

ZUGFeRD 2.x defines MINIMUM, BASIC WL, BASIC, EN 16931 (formerly COMFORT), EXTENDED and XRECHNUNG. MINIMUM and BASIC WL carry header data only and are not complete EN 16931 invoices. BASIC is a compliant subset, EN 16931 covers the full norm, EXTENDED adds fields for complex processes, and XRECHNUNG follows the German XRechnung CIUS.

Are ZUGFeRD and Factur-X the same thing?

Since ZUGFeRD 2.1 (Factur-X 1.0.05) they are technically identical; ZUGFeRD 2.0 was already closely aligned. ZUGFeRD is the German name, Factur-X the French one. The current release is ZUGFeRD 2.4 / Factur-X 1.08, in force since 15 January 2026. ZUGFeRD 1.0 predates EN 16931 and uses a different data model.

How is ZUGFeRD different from XRechnung?

XRechnung is XML only, with no PDF. It is the German CIUS of EN 16931, maintained by KoSIT, and can be expressed in UBL or CII. ZUGFeRD wraps CII XML inside a PDF/A-3. Both satisfy the German B2B mandate when EN 16931 compliant. For invoices to public authorities, XRechnung is the standard.

Does ZUGFeRD meet the German e-invoicing mandate?

Yes, from version 2.0.1 and in profile BASIC or higher, according to the Federal Ministry of Finance (BMF). MINIMUM and BASIC WL do not qualify because VAT-relevant data is missing from the XML. A plain PDF without embedded XML is not an e-invoice either.

Can I validate a ZUGFeRD PDF?

Not as a PDF. Our validator accepts XML only. Extract the attached XML (usually factur-x.xml) from the PDF/A-3 and upload it to the ZUGFeRD validator, which checks it against the CEN EN 16931 rules for CII, plus the German KoSIT BR-DE rules for the XRECHNUNG profile. PDF/A-3 conformance and the XML schema are not checked.

How do I get the XML out of a ZUGFeRD PDF?

Use the attachments panel of your PDF reader (the paperclip in Adobe Acrobat Reader), or a command-line tool such as pdfdetach -saveall invoice.pdf, qpdf --show-attachment=factur-x.xml invoice.pdf or mutool extract invoice.pdf. The file is named factur-x.xml from ZUGFeRD 2.1 (xrechnung.xml in the XRECHNUNG profile), zugferd-invoice.xml in 2.0 and ZUGFeRD-invoice.xml in 1.0.

Further reading