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:

Important: The following XML representation is simplified. A real ZUGFeRD XML file additionally contains namespace declarations, schema references, and further technical metadata. The complete specification can be found on the official ZUGFeRD website of the FeRD.

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
Margin taxation under Section 25a UStG: For margin-taxed vehicle sales, the CategoryCode E (Exempt) is used together with a corresponding exemption reason (ExemptionReason). The note “Margin taxation under Section 25a UStG – VAT is not disclosed” must appear in both the PDF and the XML.

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
Data protection note: Do not upload real invoices with customer data to public online validators. Instead, use local tools or ensure that the provider operates GDPR-compliantly and deletes the data after the check.

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)
Practical note for car dealers: The correct representation of margin taxation in the ZUGFeRD XML is technically demanding and error-prone. Incorrect CategoryCodes or missing exemption notes can lead to validation errors and, in the worst case, tax consequences. Therefore, use specialized automotive software that automatically maps these specifics correctly.

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.