A ZUGFeRD invoice combines a visual PDF with machine-readable XML data – but what does that look like in practice? In this comprehensive guide, we show you with concrete ZUGFeRD invoice examples how the format is structured, which profiles exist, and how you can create, validate, and read a ZUGFeRD-compliant invoice yourself. Particularly relevant: a practical example for the car trade with margin taxation under Section 25a UStG.
What is a ZUGFeRD invoice? Structure and functionality
ZUGFeRD (Central User Guide of the Forum for Electronic Invoicing Germany) is a hybrid invoice format based on the international standard Factur-X. What makes it special: a ZUGFeRD invoice always consists of two components united in a single file.
The two layers of a ZUGFeRD invoice
| Component | Format | Purpose | Readable by |
|---|---|---|---|
| Visual layer | PDF/A-3 | Displays the invoice in the familiar way | Humans (any PDF reader) |
| Structured layer | XML (Cross Industry Invoice) | Machine-readable invoice data | Software & accounting systems |
The PDF/A-3 format is a special variant of the PDF standard that allows file attachments. ZUGFeRD uses exactly this capability: the XML file named factur-x.xml (in ZUGFeRD 2.x) is embedded as an attachment in the PDF. From the outside, the file looks like a regular PDF – internally, however, it contains the complete, structured invoice data.
Good to know: The PDF/A-3 format ensures that the invoice is suitable for long-term archiving. Fonts, colors, and layout are permanently embedded so that the invoice will be displayed identically even in 10 years – an important requirement for the statutory retention obligation.
ZUGFeRD profiles in detail: Minimum to XRechnung
ZUGFeRD offers various profiles that differ in the scope and depth of the XML data they contain. Depending on your business requirements and recipient, you choose the appropriate profile. Here is a complete overview of all available ZUGFeRD invoice example profiles:
Overview of all ZUGFeRD profiles
| Profile | Data scope | Line items | EN 16931 compliant | Typical use |
|---|---|---|---|---|
| Minimum | Header data only (invoice no., date, amounts) | No | No | Booking reference, payment processing |
| Basic WL | Extended header data without line items | No | No | Summarized invoice information |
| Basic | Header data + line items | Yes | No | Standard B2B invoices |
| EN 16931 (Comfort) | Complete EU standard data | Yes | Yes | EU-compliant e-invoices, B2B from 2025 |
| Extended | Maximum data scope, industry-specific | Yes | Yes (extended) | Car trade, complex industries |
| XRechnung | XRechnung specification in the ZUGFeRD container | Yes | Yes | Public sector clients (B2G) |
Which profile do you need? For most B2B invoices under the e-invoicing mandate from 2025, the EN 16931 (Comfort) profile is the right choice. It fulfills all legal requirements of the European standard. For the car trade with margin taxation, the Extended profile is recommended, as it supports industry-specific fields such as vehicle data.
Minimum profile: The entry level
The Minimum profile contains only the most essential data: invoice number, invoice date, seller, buyer, and total amounts. It is primarily suitable as a booking reference and is rarely used in practice as a standalone format, since it does not comply with the EU standard EN 16931 and therefore does not qualify as a fully-fledged e-invoice under the Growth Opportunities Act.
EN 16931 (Comfort): The EU-compliant standard
The Comfort profile – officially EN 16931 – fully implements the European standard. It contains all mandatory fields required for a legally compliant e-invoice, including detailed tax data, payment information, and complete line item details. From January 1, 2025, all companies in Germany must be able to receive e-invoices – and this profile is the recommended standard for that.
Extended profile: For industry-specific requirements
The Extended profile offers the greatest range of functionality and enables additional fields needed in specific industries. In the car trade, this is particularly relevant, as vehicle identification numbers (VIN), margin taxation under Section 25a UStG, and other industry-specific data can be represented.
Visual example: What a ZUGFeRD invoice looks like
To understand what a ZUGFeRD invoice looks like in practice, let us examine both sides – the visual PDF representation and the embedded XML structure.
The PDF side: What humans see
When you open a ZUGFeRD invoice in a regular PDF reader, you see a classically formatted invoice with all familiar elements:
- Letterhead: Company logo, sender address, recipient address
- Invoice details: Invoice number, invoice date, service period, customer number
- Line item table: Item description, quantity, unit price, total price per item
- Totals section: Net amount, VAT (broken down by tax rates), gross amount
- Payment information: Bank details (IBAN, BIC), payment due date, early payment discount notes
- Footer: Tax number/VAT ID, commercial register, managing director
The key difference from a regular PDF invoice is often only recognizable by a small detail: in the attachment list of the PDF reader (usually accessible via a paperclip icon), you will find the file factur-x.xml. Some PDF readers also display a ZUGFeRD conformity symbol.
The XML side: What software reads
The embedded XML file contains the same information in machine-readable form – structured according to the Cross Industry Invoice (CII) standard. Here is a simplified ZUGFeRD invoice example of the XML structure:
XML structure of a ZUGFeRD invoice: The most important fields
The XML file of a ZUGFeRD invoice follows a fixed structure based on the UN/CEFACT Cross Industry Invoice (CII) standard. Every ZUGFeRD XML file is divided into several main sections. For a practical ZUGFeRD invoice example, the following fields are particularly relevant:
The main sections of the ZUGFeRD XML
| XML section | Content | Important fields |
|---|---|---|
| ExchangedDocumentContext | Profile information and business context | GuidelineSpecifiedDocumentContextParameter (profile ID) |
| ExchangedDocument | Document header | ID (invoice no.), TypeCode (380=invoice), IssueDateTime |
| SupplyChainTradeTransaction | Business transaction | Contains the following three subsections |
| → ApplicableHeaderTradeAgreement | Trading partners | SellerTradeParty, BuyerTradeParty (name, address, tax ID) |
| → ApplicableHeaderTradeDelivery | Delivery information | ActualDeliverySupplyChainEvent (delivery date) |
| → ApplicableHeaderTradeSettlement | Payment and tax information | InvoiceCurrencyCode, ApplicableTradeTax, SpecifiedTradePaymentTerms, SpecifiedTradeSettlementHeaderMonetarySummation |
| IncludedSupplyChainTradeLineItem | Line items | LineID, SpecifiedTradeProduct (name, ID), NetPriceProductTradePrice, BilledQuantity |
TypeCodes: Document types in ZUGFeRD
The TypeCode in the ExchangedDocument indicates what type of document it is:
- 380: Commercial Invoice – the standard case
- 381: Credit Note
- 384: Corrected Invoice
- 389: Self-billed Invoice
- 751: Invoice Information / Proforma Invoice
Tax information in the XML: CategoryCode
Particularly relevant for the car trade are the tax category codes that indicate how a line item is taxed:
| CategoryCode | Meaning | Example |
|---|---|---|
| S | Standard tax rate | 19% or 7% VAT |
| Z | Zero rate | Intra-community supply |
| E | Tax exempt | Small business exemption Section 19 UStG |
| AE | Reverse charge | Recipient is liable for VAT |
| K | Intra-community supply | EU-wide B2B delivery |
Creating a ZUGFeRD invoice: Step-by-step guide
Whether you want to create a ZUGFeRD invoice manually, with a library, or with a ready-made software solution – here you will find the right approach. We show you the individual steps using a practical ZUGFeRD invoice example:
Step 1: Compile invoice data
Make sure all mandatory details are available according to Section 14 UStG and the selected ZUGFeRD profile level:
- Full name and address of invoice issuer and recipient
- Tax number or VAT ID of the invoice issuer
- Invoice number (sequential and unique)
- Invoice date and service date/period
- Quantity and type of goods delivered or services rendered
- Net amount, tax rate, and tax amount (itemized)
- Payment information (IBAN, BIC, payment due date)
Step 2: Generate the XML file
Create the ZUGFeRD-compliant XML file in CII format. You have several options:
- Manually: Write XML by hand (recommended only for developers)
- Library: Koha (Java), Mustang (Java), Factur-X (Python), ZUGFeRD-csharp (.NET)
- Software: Invoicing software with integrated ZUGFeRD support
Step 3: Create the PDF/A-3
Create the PDF/A-3 document with the visual invoice layout. Important: it must be PDF/A-3 (not PDF/A-1 or PDF/A-2), since only this version allows embedded files. Many libraries generate the PDF/A-3 automatically.
Step 4: Embed XML in the PDF
Embed the XML file as an attachment in the PDF/A-3 document. The file must be named factur-x.xml. Additionally, special PDF metadata (XMP) must be set to identify the document as ZUGFeRD-compliant and indicate the profile used.
Step 5: Perform validation
Check the finished ZUGFeRD invoice for conformity. This step is critical to ensure that both the XML structure and the PDF/A-3 conformity meet the requirements. Details on validation can be found in the next section.
Practical tip: For most companies, the most efficient approach is an invoicing software with integrated ZUGFeRD support. This eliminates the technical steps 2–4 entirely, and you receive a validated ZUGFeRD invoice at the click of a button.
Validating a ZUGFeRD invoice: How to check conformity
Validating a ZUGFeRD invoice covers several verification levels. Only when all levels are passed is the invoice considered compliant:
The three verification levels
| Verification level | What is checked? | Typical errors |
|---|---|---|
| 1. PDF/A-3 conformity | Does the PDF comply with the PDF/A-3 standard? | Missing fonts, transparent elements, wrong version |
| 2. XML schema validation | Does the XML structure conform to the CII schema? | Missing mandatory fields, wrong data types, invalid codes |
| 3. Business rule verification | Are the business rules of the selected profile met? | Missing tax IDs, inconsistent amounts, missing mandatory details |
Validation tools
- FeRD validation tool (free): The official tool from the Forum for Electronic Invoicing Germany – checks all three levels
- KoSIT Validator (open source): The Coordination Office for IT Standards provides a validator that also checks XRechnung profiles
- Mustang Validator (Java): Part of the Mustang library, can be used as a standalone tool
- veraPDF (open source): Specialized in PDF/A validation – checks the first level particularly thoroughly
- Online validators: Various providers offer web-based validation – be mindful of data protection
Reading and extracting ZUGFeRD XML
When you receive a ZUGFeRD invoice, you may want to extract the embedded XML data for further processing. Here are the most common methods:
Manual extraction
- Adobe Acrobat Reader: Open the PDF → Click the paperclip icon (attachments) → Right-click factur-x.xml → “Save attachment”
- Foxit Reader: Open the PDF → Navigation pane → Attachments → Export file
Programmatic extraction
For automated processing of large volumes of ZUGFeRD invoices, programming libraries are suitable:
- Python: The factur-x library (pip install factur-x) offers functions for reading and writing ZUGFeRD/Factur-X files
- Java: Mustang library from the Koha Group with comprehensive read and write support
- .NET: ZUGFeRD-csharp library for integration into Windows applications
- PHP: horstoeko/zugferd – a PHP library for ZUGFeRD 2.x and Factur-X
Automated processing in the invoice workflow
Modern e-invoicing software automatically reads the embedded XML and transfers the data directly into your accounting system. This saves manual entry and significantly reduces errors. Particularly valuable: the software can automatically match the extracted data with orders, delivery notes, and payments.
Tools for ZUGFeRD creation and processing
For creating and processing ZUGFeRD invoices, there is a broad spectrum of tools available – from open-source libraries to professional software solutions:
Developer libraries (open source)
| Library | Language | Features | License |
|---|---|---|---|
| Mustang | Java | Read, write, validate | Apache 2.0 |
| factur-x | Python | Read, write | BSD |
| ZUGFeRD-csharp | .NET/C# | Read, write | Apache 2.0 |
| horstoeko/zugferd | PHP | Read, write, validate | MIT |
| KoSIT Validator | Java | Validation (XRechnung + ZUGFeRD) | Apache 2.0 |
Professional software solutions
- AutoPult: Specialized in the car trade – automatically generates ZUGFeRD invoices with correct margin taxation and DATEV interface
- Lexware/lexoffice: ZUGFeRD export for small companies and freelancers
- sevDesk: Cloud-based solution with ZUGFeRD support
- DATEV: Integration via Unternehmen Online – import and export of ZUGFeRD invoices
ZUGFeRD 2.0 vs. 2.1 vs. 2.2: The key differences
The ZUGFeRD specification has been updated several times since its initial release. Here is an overview of the relevant versions and their differences:
| Feature | ZUGFeRD 2.0 | ZUGFeRD 2.1 | ZUGFeRD 2.2 / 2.3 |
|---|---|---|---|
| Release | March 2019 | July 2020 | 2022 / 2024 |
| Factur-X version | 1.0 | 1.0.05 | 1.0.06 / 1.0.07 |
| XRechnung profile | No | Yes (newly added) | Yes (updated) |
| XRechnung version | – | 1.2 / 2.0 | 2.2 / 3.0 |
| Attachment support | Limited | Improved | Extended (additional attachments) |
| Binary attachments | No | Yes (as additional PDF attachments) | Yes (other formats too) |
| Recommendation | No longer recommended | Still usable | Current recommendation |
Important innovations in ZUGFeRD 2.1+
- XRechnung profile: Enables the creation of XRechnung-compliant invoices within the ZUGFeRD container – ideal for combining both formats
- Additional attachments: From version 2.1, files other than factur-x.xml (e.g., proof of service, photos) can be embedded in the PDF
- Improved validation: Stricter checking rules and updated code lists ensure higher data quality
- Updated XRechnung versions: Each ZUGFeRD version references the XRechnung specification current at the time of release
Recommendation: Always use the latest ZUGFeRD version (currently 2.3). Older versions are still accepted but offer fewer features and may trigger warnings during validation. Regularly check whether your software is up to date.
Practical example: ZUGFeRD invoice for a vehicle sale with Section 25a UStG
A particularly illustrative ZUGFeRD invoice example from practice is the sale of a used car with margin taxation. This scenario shows how industry-specific requirements are mapped in the ZUGFeRD format.
Scenario: Car dealership Mustermann sells a used car
| Field | Value |
|---|---|
| Seller | Car Dealership Mustermann GmbH, Hauptstrasse 42, 80331 Munich |
| Buyer | Max Example, Musterweg 7, 60311 Frankfurt |
| Vehicle | BMW 320d Touring, first registered 03/2021, 45,000 km |
| VIN | WBAXXXXXXXX123456 |
| Invoice number | RE-2026-001234 |
| Invoice amount | 28,900.00 EUR (margin taxation – no VAT disclosed) |
| Taxation | Section 25a UStG – margin taxation |
| ZUGFeRD profile | Extended (for industry-specific fields) |
Special considerations for margin taxation
Under margin taxation per Section 25a UStG, no VAT may be disclosed on the invoice. This has direct implications for the XML structure:
- The Tax CategoryCode is set to E (Exempt)
- The tax rate (RateApplicablePercent) is 0.00
- The ExemptionReason field contains the note “Margin taxation under Section 25a UStG”
- The ExemptionReasonCode is set to vatex-eu-ae or a comparable code
- The PDF must display the margin taxation note clearly and visibly
Additional vehicle data in the Extended profile
The Extended profile enables the representation of vehicle-specific information in the XML structure:
- Vehicle Identification Number (VIN): As GlobalID of the product or in an additional reference field
- First registration and mileage: Via ApplicableProductCharacteristic fields
- Vehicle type and model: In the product description (SpecifiedTradeProduct)
Automatic ZUGFeRD creation with AutoPult
AutoPult solves the challenges of ZUGFeRD creation in the car trade through automation. As a specialized industry solution for car dealers, AutoPult generates ZUGFeRD-compliant invoices directly from the sales process – without manual intervention or technical knowledge.
How automatic ZUGFeRD generation works
- Automatic profile detection: AutoPult selects the right ZUGFeRD profile based on the invoice type – Extended for vehicle sales, EN 16931 for workshop invoices
- Correct margin taxation: The tax logic under Section 25a UStG is automatically mapped in XML and PDF – including all mandatory notes and correct CategoryCodes
- Vehicle data integration: VIN, first registration, mileage, and other vehicle data are automatically taken from vehicle management
- Integrated validation: Every invoice is automatically checked for ZUGFeRD conformity before sending
- DATEV interface: The generated ZUGFeRD invoices can be transferred directly to DATEV Unternehmen Online
- Email dispatch: ZUGFeRD invoices are sent by email to customers and tax advisors – all in one step
For car dealers: With AutoPult, you create ZUGFeRD-compliant invoices for vehicle sales, workshop orders, and parts sales in one system. The e-invoicing mandate is thus automatically fulfilled – without additional effort or technical knowledge. Start your free trial now.
Frequently Asked Questions (FAQ)
What is a concrete ZUGFeRD invoice example?
A ZUGFeRD invoice example is a PDF file in PDF/A-3 format that contains an embedded XML file (factur-x.xml). The PDF side displays the invoice visually (sender, recipient, line items, amounts), while the XML file structures the same data in a machine-readable format – according to the UN/CEFACT Cross Industry Invoice standard.
Which ZUGFeRD profile do I need for the e-invoicing mandate?
For the e-invoicing mandate under the Growth Opportunities Act, you need at least the EN 16931 (Comfort) profile. This profile fully meets the European standard. The Minimum and Basic WL profiles do not qualify as fully-fledged e-invoices under the law. For the car trade, the Extended profile is recommended.
Can I open a ZUGFeRD invoice with a regular PDF reader?
Yes, the visual PDF side of a ZUGFeRD invoice can be opened and read with any PDF reader. To see and extract the embedded XML file, you need a PDF reader that displays attachments (e.g., Adobe Acrobat Reader or Foxit Reader).
What is the difference between ZUGFeRD and XRechnung?
ZUGFeRD is a hybrid format (PDF + XML), while XRechnung is a pure XML format. Since ZUGFeRD 2.1, there is a dedicated XRechnung profile that bridges both worlds. For B2B invoices, ZUGFeRD is usually the better choice; for B2G (public sector clients), pure XRechnung is often required.
How do I validate a ZUGFeRD invoice?
Use the free FeRD validation tool or the KoSIT Validator. These check three levels: PDF/A-3 conformity, XML schema validation, and business rule verification. Professional software like AutoPult automatically validates invoices before sending.
How do I represent margin taxation (Section 25a UStG) in ZUGFeRD?
Set the Tax CategoryCode to E (Exempt), the tax rate to 0.00, and enter the note “Margin taxation under Section 25a UStG – VAT is not disclosed” in the ExemptionReason. This note must also be clearly visible in the PDF. The safest way to achieve this is with specialized automotive software.
Which ZUGFeRD version should I use?
Use the latest version – currently ZUGFeRD 2.3. This offers the greatest range of functionality, the most current XRechnung profiles, and the best compatibility. Older versions (2.0, 2.1) are still accepted but should no longer be used for new implementations.