---
title: "ZUGFeRD profiles explained: MINIMUM, BASIC, EN 16931, EXTENDED"
description: "The ZUGFeRD profiles MINIMUM, BASIC WL, BASIC, EN 16931 and EXTENDED at a glance: what they contain, which count as e-invoices and which one to use."
canonical_url: "https://quittio.dev/en/guides/zugferd-profiles-explained"
locale: en
meta:
  "og:description": "The ZUGFeRD profiles MINIMUM, BASIC WL, BASIC, EN 16931 and EXTENDED at a glance: what they contain, which count as e-invoices and which one to use."
  "og:image": "https://quittio.dev/og/quittio-en.jpg"
  "og:image:alt": "Quittio: Invoices, settled. E-invoicing for PHP and Laravel, with a validated sample invoice."
  "og:image:height": "630"
  "og:image:type": image/jpeg
  "og:image:width": "1200"
  "og:title": "ZUGFeRD profiles explained: MINIMUM, BASIC, EN 16931, EXTENDED"
  "twitter:image": "https://quittio.dev/og/quittio-en.jpg"
  "twitter:image:alt": "Quittio: Invoices, settled. E-invoicing for PHP and Laravel, with a validated sample invoice."
---

> Index of every page on this site: [llms.txt](https://quittio.dev/llms.txt)

# ZUGFeRD profiles explained: why MINIMUM and BASIC WL are not enough

ZUGFeRD has six profiles: five levels that build on each other, from MINIMUM to EXTENDED, and the XRECHNUNG profile. Only some of them count as an e-invoice in Germany. Here is what each profile contains and which one you should use.

**Formats**16 Oct 2026 · about 8 minutes

**In short**

A profile defines how much of EN 16931 is in the XML. **MINIMUM** and **BASIC WL** contain no invoice lines and therefore not all mandatory details; they do **not** count as e-invoices in Germany. **BASIC**, **EN 16931**, **EXTENDED** and **XRECHNUNG** do. If in doubt, use **EN 16931**: the complete standard and Quittio’s default.

## What a profile is

ZUGFeRD (Factur-X in France) is a PDF/A-3 with embedded XML. How much is in that XML is decided by the **profile**. Every profile writes its own identifier into field BT-24 (specification identifier), so the recipient knows which rules the invoice follows.

The profiles build on each other: each level contains everything of the previous one and more. The names grew historically; the EN 16931 profile used to be called COMFORT.

## The six profiles at a glance

| Profile | Contains | E-invoice in Germany? |
| --- | --- | --- |
| **MINIMUM** | Header data: number, date, seller and buyer (name only), totals. No lines, no addresses, no VAT breakdown | no |
| **BASIC WL** | MINIMUM plus addresses, payment data, VAT breakdown and document-level allowances. No lines (WL = “without lines”) | no |
| **BASIC** | BASIC WL plus lines with quantity, unit, price, VAT and item name | yes |
| **EN 16931** | The complete European standard, including item descriptions, item numbers, order references and contacts | yes, recommended |
| **EXTENDED** | EN 16931 plus sub lines, several discount tiers, instalments, structured late fees and more fields | yes |
| **XRECHNUNG** | EN 16931 with the XRechnung rules (BR-DE), embedded in the PDF | yes |

## Why MINIMUM and BASIC WL are not enough

An e-invoice must contain all mandatory VAT details in the structured part, i.e. in the XML and not just in the PDF. The mandatory details under sec. 14 (4) of the German VAT Act include the quantity and type of goods or the scope and type of service. Exactly this line data is missing in MINIMUM and BASIC WL.

The German tax administration has made this explicit: ZUGFeRD from version 2.0.1 counts as an e-invoice, except for the MINIMUM and BASIC WL profiles. These two profiles were originally meant as a booking aid: the PDF is the invoice and the XML only provides some header data for accounting.

**Consequence**

An invoice in the MINIMUM or BASIC WL profile is an “other invoice” for domestic B2B in Germany. It is only allowed during the transition periods: until the end of 2026, and until the end of 2027 for businesses with up to €800,000 prior-year turnover.

Quittio writes into each profile only what it may contain and reports data the profile cannot carry as warning `QUITTIO-PROFILE-NOT-ALLOWED`. A missing mandatory field of the profile is an error (`QUITTIO-PROFILE-REQUIRED`).

## BASIC or EN 16931?

BASIC already is an e-invoice but does not cover every field of the standard. Missing are, among others:

- Item description and seller and buyer item numbers
- Classification, country of origin and attributes of an item
- References to order lines, projects, contracts and receiving advice
- Seller and buyer contacts
- Payment means text, card data, account name and BIC

As soon as you need one of these, which happens quickly, BASIC is too small. That is why **EN 16931** is the sensible default: complete, understood by every recipient and the starting point for XRechnung and Peppol.

## When EXTENDED?

EXTENDED goes beyond the standard. You need it for sub lines (e.g. a bundle with individual parts), several discount tiers, instalments, exchange rates as structured data or line references.

Quittio switches to EXTENDED automatically when an invoice contains such data and you have not set a profile. Quittio never changes a profile you set explicitly; the validation then reports which data does not fit. With `auto_upgrade_profile = false`, such an invoice fails instead.

**XRechnung has no EXTENDED**

For XRechnung with sub lines, use the XRechnung extension: `->format('xrechnung-ubl')->profile('xrechnung-extension')`.

## Choosing profiles in Quittio

Usually you don’t choose a profile: every format has a default, and the automatic choice uses EN 16931. If a recipient explicitly requires a profile, set it:

InvoiceService.php

```
// default: EN 16931
$result = Quittio::make($invoice)->format('zugferd')->render();

// EXTENDED, e.g. for sub lines
$result = Quittio::make($invoice)->format('zugferd')->profile('extended')->render();

// only if a recipient explicitly requires it
$result = Quittio::make($invoice)->format('zugferd')->profile('basic')->render();

// XRechnung embedded in a PDF
$result = Quittio::make($invoice)->format('zugferd')->profile('xrechnung')->render();
```

To set the profile for all invoices, use `defaults.profile` in `config/quittio.php`. It is skipped where it does not fit, e.g. `basic` for XRechnung or Peppol.

## Checking the profile of incoming invoices

When you receive a ZUGFeRD invoice, check whether it is a real e-invoice. Quittio reads the profile and can validate against an expected profile:

IncomingInvoiceController.php

```
$read = Quittio::readFile('/path/to/incoming.pdf');
$read->profile;        // e.g. "en16931", "basic-wl" or "xrechnung"

// php artisan quittio:validate incoming.pdf --profile=en16931
```

If an invoice arrives in the MINIMUM or BASIC WL profile, it is not a valid e-invoice once the transition periods have ended. Ask the supplier for an invoice in a suitable profile.

**Under review**

Whether Quittio will block or only warn about plain PDFs and the MINIMUM and BASIC WL profiles for domestic B2B invoices is currently being reviewed with a tax adviser.

## Frequently asked questions

### **Which ZUGFeRD profile should I use?**

EN 16931. It is the complete standard, counts as an e-invoice and is understood by every recipient. Quittio uses it as the default.

### **Is BASIC an e-invoice?**

Yes. BASIC contains lines and counts as an e-invoice in Germany. It does not cover every field of the standard, such as item descriptions or contacts.

### **What is the difference between ZUGFeRD and Factur-X?**

None any more: ZUGFeRD 2.x and Factur-X are the same German-French standard with the same profiles.

### **What does the XRECHNUNG profile in ZUGFeRD mean?**

An XRechnung (CII) is embedded in a PDF, so the recipient gets an XRechnung with a readable PDF.

### **Do I still need to read older ZUGFeRD 1.0 invoices?**

Quittio also reads ZUGFeRD 1.0. Under German VAT law, however, ZUGFeRD only counts as an e-invoice from version 2.0.1.

**As of: 16 Oct 2026. Not tax or legal advice.**

Sources: [Sec. 14 (4) UStG](https://www.gesetze-im-internet.de/ustg_1980/__14.html) · [Sec. 27 (38) UStG](https://www.gesetze-im-internet.de/ustg_1980/__27.html) · [Federal Ministry of Finance letter of 15 Oct 2025 (section 14.1 (14) UStAE: ZUGFeRD from 2.0.1 without MINIMUM and BASIC WL)](https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Steuerarten/Umsatzsteuer/Umsatzsteuer-Anwendungserlass/2025-10-15-einfuehrung-obligatorische-e-rechnung.html) · Federal Ministry of Finance letter of 15 Oct 2024 (BStBl I p. 1320) · ZUGFeRD 2.x / Factur-X (FeRD)

## Read next

- [**Formats**

  **ZUGFeRD, XRechnung or Peppol: which format do you need?**

  How the formats differ, who needs which and how Quittio chooses automatically.](https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol)
- [**How-to**

  **Validating e-invoices: KoSIT validator and veraPDF in CI**

  The seven validation levels, setting up the official validators and automating them in GitHub Actions.](https://quittio.dev/en/guides/validating-e-invoices-kosit-verapdf)
- [**How-to**

  **Create an e-invoice in Laravel, step by step**

  From composer require to a valid ZUGFeRD invoice: installation, company data, format choice, errors, tests and cancellations.](https://quittio.dev/en/guides/create-e-invoices-with-laravel)

## EN 16931 is Quittio’s default.

No configuration, no profile choice: valid e-invoices from the first line.

[**Get started**](https://docs.quittio.dev/getting-started) [**ZUGFeRD with Quittio**](https://quittio.dev/en/formats/zugferd)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://quittio.dev/en#website","@type":"WebSite","description":"E-invoicing for PHP and Laravel: create, validate, read and archive ZUGFeRD, XRechnung and Peppol invoices.","inLanguage":"en","name":"Quittio","url":"https://quittio.dev/en","publisher":{"@id":"https://quittio.dev/#identity"},"translationOfWork":{"@id":"https://quittio.dev/#website"}},{"@id":"https://quittio.dev/en/guides/zugferd-profiles-explained#webpage","@type":"WebPage","dateModified":"2026-10-16","datePublished":"2026-10-15","description":"The ZUGFeRD profiles MINIMUM, BASIC WL, BASIC, EN 16931 and EXTENDED at a glance: what they contain, which count as e-invoices and which one to use.","name":"ZUGFeRD profiles explained: MINIMUM, BASIC, EN 16931, EXTENDED","url":"https://quittio.dev/en/guides/zugferd-profiles-explained","breadcrumb":{"@id":"https://quittio.dev/en/guides/zugferd-profiles-explained#breadcrumb"},"isPartOf":{"@id":"https://quittio.dev/en#website"},"potentialAction":[{"@type":"ReadAction","target":["https://quittio.dev/en/guides/zugferd-profiles-explained"]}],"primaryImageOfPage":{"@id":"https://quittio.dev/#logo"}},{"@id":"https://quittio.dev/#identity","@type":"Organization","description":"Open-Source-Bibliothek für E-Rechnungen in PHP und Laravel (ZUGFeRD, XRechnung, Peppol) und Quittio Managed.","email":"kontakt@niklasforst.de","legalName":"Niklas Forst – Softwareentwicklung","name":"Quittio","url":"https://quittio.dev","founder":{"@type":"Person","name":"Niklas Forst","url":"https://quittio.dev/ueber"},"logo":{"@id":"https://quittio.dev/#logo"},"sameAs":["https://github.com/Quittio/quittio","https://packagist.org/packages/quittio/quittio"]},{"@id":"https://quittio.dev/en/guides/zugferd-profiles-explained#article","dateModified":"2026-10-16","datePublished":"2026-10-15","description":"The ZUGFeRD profiles MINIMUM, BASIC WL, BASIC, EN 16931 and EXTENDED at a glance: what they contain, which count as e-invoices and which one to use.","headline":"ZUGFeRD profiles explained: why MINIMUM and BASIC WL are not enough","inLanguage":"en","thumbnailUrl":"https://quittio.dev/og/quittio-en.jpg","@type":["Article","TechArticle"],"author":{"@id":"https://quittio.dev/#/schema/person/1"},"image":{"@id":"https://quittio.dev/#/schema/image/1"},"isPartOf":{"@id":"https://quittio.dev/en/guides/zugferd-profiles-explained#webpage"},"mainEntityOfPage":{"@id":"https://quittio.dev/en/guides/zugferd-profiles-explained#webpage"},"publisher":{"@id":"https://quittio.dev/#identity"}},{"@id":"https://quittio.dev/en/guides/zugferd-profiles-explained#breadcrumb","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"Home","item":"https://quittio.dev/en","position":1},{"@type":"ListItem","name":"Guides","item":"https://quittio.dev/en/guides","position":2},{"@type":"ListItem","name":"ZUGFeRD profiles","position":3}]},{"@id":"https://quittio.dev/en/guides/zugferd-profiles-explained#/schema/question/1","@type":"Question","inLanguage":"en","name":"Which ZUGFeRD profile should I use?","acceptedAnswer":{"@type":"Answer","text":"EN 16931. It is the complete standard, counts as an e-invoice and is understood by every recipient. Quittio uses it as the default."}},{"@id":"https://quittio.dev/en/guides/zugferd-profiles-explained#/schema/question/2","@type":"Question","inLanguage":"en","name":"Is BASIC an e-invoice?","acceptedAnswer":{"@type":"Answer","text":"Yes. BASIC contains lines and counts as an e-invoice in Germany. It does not cover every field of the standard, such as item descriptions or contacts."}},{"@id":"https://quittio.dev/en/guides/zugferd-profiles-explained#/schema/question/3","@type":"Question","inLanguage":"en","name":"What is the difference between ZUGFeRD and Factur-X?","acceptedAnswer":{"@type":"Answer","text":"None any more: ZUGFeRD 2.x and Factur-X are the same German-French standard with the same profiles."}},{"@id":"https://quittio.dev/en/guides/zugferd-profiles-explained#/schema/question/4","@type":"Question","inLanguage":"en","name":"What does the XRECHNUNG profile in ZUGFeRD mean?","acceptedAnswer":{"@type":"Answer","text":"An XRechnung (CII) is embedded in a PDF, so the recipient gets an XRechnung with a readable PDF."}},{"@id":"https://quittio.dev/en/guides/zugferd-profiles-explained#/schema/question/5","@type":"Question","inLanguage":"en","name":"Do I still need to read older ZUGFeRD 1.0 invoices?","acceptedAnswer":{"@type":"Answer","text":"Quittio also reads ZUGFeRD 1.0. Under German VAT law, however, ZUGFeRD only counts as an e-invoice from version 2.0.1."}},{"@id":"https://quittio.dev/#/schema/person/1","@type":"Person","name":"Niklas Forst","url":"https://quittio.dev/ueber"},{"@id":"https://quittio.dev/#logo","@type":"ImageObject","caption":"Quittio","contentUrl":"https://quittio.dev/logo.png","inLanguage":"en","url":"https://quittio.dev/logo.png"},{"@id":"https://quittio.dev/#/schema/image/1","@type":"ImageObject","contentUrl":"https://quittio.dev/og/quittio-en.jpg","inLanguage":"en","url":"https://quittio.dev/og/quittio-en.jpg"}]}
```