---
title: "ZUGFeRD, XRechnung or Peppol: which format do you need?"
description: "ZUGFeRD, XRechnung and Peppol compared: what they are, who needs which format, how Quittio chooses automatically and when to set a format yourself."
canonical_url: "https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol"
locale: en
meta:
  "og:description": "ZUGFeRD, XRechnung and Peppol compared: what they are, who needs which format, how Quittio chooses automatically and when to set a format yourself."
  "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, XRechnung or Peppol: which format do you need?"
  "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, XRechnung or Peppol: which format do you need?

Three names, one standard. Once you know the differences, you choose correctly in seconds, and most of the time Quittio chooses for you.

**Formats**15 Oct 2026 · about 9 minutes

**In short**

For businesses in Germany, **ZUGFeRD in the EN 16931 profile** is the most convenient choice: a readable PDF with embedded XML. **German authorities** require **XRechnung** with a Leitweg-ID. **Peppol** is a delivery network, mainly for recipients abroad who are registered there. Consumers, small invoices up to €250 and customers outside the EU get a regular PDF. Quittio makes this choice automatically.

## What the three have in common

All three are based on the European standard **EN 16931**. It defines what an electronic invoice contains: seller, buyer, lines, VAT, totals, payment. Every field has a number, such as BT-1 for the invoice number or BT-10 for the buyer reference.

Technically there are two notations (syntaxes) for the same data: **CII** (Cross Industry Invoice) and **UBL** (Universal Business Language). The formats differ in the syntax they use, whether a PDF is included and which additional rules apply.

| Format | What it is | Typical recipient |
| --- | --- | --- |
| **ZUGFeRD / Factur-X** | PDF/A-3 with embedded CII XML. People read the PDF, software reads the XML. ZUGFeRD (Germany) and Factur-X (France) are the same standard. | Businesses |
| **XRechnung** | The German standard for public buyers: XML only, in CII or UBL, with additional German rules (BR-DE) | German authorities |
| **Peppol BIS Billing 3.0** | UBL XML delivered over the Peppol network, an international network for e-invoices | Businesses and authorities connected to Peppol |
| **CII, UBL** | Plain XML in either syntax | Recipients that ask for exactly that |
| **PDF** | A PDF without XML (PDF/A-3 for archiving) | Consumers, small invoices, countries without a mandate |

## The decision in one table

What matters is who receives the invoice. For a seller in Germany:

| Your customer | Format | Why |
| --- | --- | --- |
| Business in Germany | ZUGFeRD (EN 16931) | An e-invoice under German VAT law and a readable PDF |
| German public authority | XRechnung (CII) | Required by public buyers; the Leitweg-ID goes into the buyer reference |
| Consumer | PDF | No e-invoicing mandate |
| Small invoice up to €250 gross | PDF | Small invoices are exempt (sec. 33 UStDV) |
| Business in another EU country | ZUGFeRD (EN 16931) | Readable PDF with standard XML |
| Business reachable via Peppol | Peppol BIS | Delivery over the Peppol network |
| Customer outside the EU | PDF | No EU rules |

## Businesses in Germany: ZUGFeRD

For invoices to businesses in Germany, XRechnung and ZUGFeRD from version 2.0.1 count as e-invoices, ZUGFeRD in the profiles BASIC, EN 16931, EXTENDED and XRECHNUNG. Both formats are allowed. ZUGFeRD has a practical advantage: recipients who do not process invoices automatically yet can simply read the PDF.

Quittio uses the **EN 16931** profile, the complete standard. The smaller profiles MINIMUM and BASIC WL are not enough; the guide [ZUGFeRD profiles explained](https://quittio.dev/en/guides/zugferd-profiles-explained) explains why.

**XRechnung to businesses?**

That works too. Some businesses prefer plain XML because their accounting software imports it directly. If in doubt, ask what your customer processes and set the format accordingly.

## German authorities: XRechnung with Leitweg-ID

Public buyers in Germany require XRechnung. Every authority has a **Leitweg-ID**, its routing address for invoices. It goes into the invoice as buyer reference (BT-10). If it is missing, Quittio reports rule `BR-DE-15`.

Quittio recognises authorities by a valid Leitweg-ID in the buyer reference or an electronic address with scheme `0204` and then chooses `xrechnung-cii` automatically. XRechnung also requires electronic addresses for seller and buyer, a seller contact and payment instructions.

## Peppol: a network, not a domestic file format

Peppol is first of all a **delivery network**. Participants are reachable through a Peppol ID; invoices travel via certified access points. The file format inside is Peppol BIS Billing 3.0, UBL according to EN 16931 with its own rules.

Peppol is not mandatory in Germany. It becomes relevant when customers abroad receive invoices via Peppol. Quittio creates the valid file; your access point provider handles delivery. A dedicated package for sending (`quittio/peppol`) is on the [roadmap](https://quittio.dev/en/roadmap).

For Quittio to choose Peppol automatically, pass a lookup that checks whether the buyer is reachable in the network. Quittio does not ship a lookup service of its own:

bootstrap.php

```
use Quittio\Core\Data\Party\BuyerParty;
use Quittio\Core\Formats\DefaultFormatResolver;
use Quittio\Core\Quittio;
use Quittio\Country\DE\CountryDE;

$quittio = Quittio::create($config, [new CountryDE], formatResolver: new DefaultFormatResolver(
    defaultProfile: 'en16931',
    autoUpgradeProfile: true,
    peppolLookup: fn (BuyerParty $buyer): bool => $directory->isRegistered($buyer->electronicAddress),
));
```

## Consumers, small amounts, abroad

- **Consumers:** no e-invoicing mandate. Quittio creates a PDF without XML.
- **Small invoices up to €250:** exempt. Mark the invoice with `->smallAmount()` and a PDF is created.
- **Customers outside the EU:** no EU rules, so a PDF.

InvoiceController.php

```
$result = Quittio::invoice()
    ->buyer($customer)
    ->line('Coffee', netPrice: '3.50')
    ->smallAmount()            // ≤ 250 €
    ->render();                // → pdf
```

## How Quittio chooses automatically

Without a format, Quittio decides from data you provide anyway: the countries of seller and buyer, whether the buyer is a consumer, and the buyer reference. In this order:

1. Domestic invoice with a country rule: in Germany a Leitweg-ID leads to XRechnung, a marked small invoice to PDF.
2. Buyer reachable via Peppol (only with a lookup): Peppol.
3. Consumer: PDF.
4. Other domestic invoices: ZUGFeRD with the EN 16931 profile.
5. Cross-border within the EU: the buyer’s country pack rules first, otherwise ZUGFeRD.
6. Seller or buyer outside the EU: PDF.

The result tells you what Quittio chose, or you can ask beforehand with `prepare()`:

InvoiceService.php

```
$result = Quittio::make($invoice)->render();       // no format: automatic choice
$result->format();                                 // "zugferd"
$result->profile()?->key();                        // "en16931"

$prepared = Quittio::make($invoice)->prepare();    // the same decision, without rendering
$prepared->format();
```

## Setting a format yourself

If a customer requires a specific format, name it. Every format has its default profile. Several formats from one calculation are possible too, e.g. ZUGFeRD for sending and XRechnung for the customer’s archive:

InvoiceService.php

```
$result = Quittio::invoice()
    ->buyer($customer)
    ->buyerReference('04011000-12345-03')          // Leitweg-ID, mandatory for XRechnung
    ->line('Consulting', netPrice: '120.00')
    ->render('xrechnung-cii');

// for an invoice you built before
$result = Quittio::make($invoice)->format('peppol')->render();

// several formats, one calculation
$result = Quittio::make($invoice)->formats(['zugferd', 'xrechnung-cii'])->render();
$result->as('xrechnung-cii')->xml();
```

To use the same format for every invoice, set `defaults.format` in `config/quittio.php`. The default `null` means automatic choice.

## Frequently asked questions

### **Is ZUGFeRD or XRechnung better?**

Both are valid e-invoices. ZUGFeRD is more convenient for businesses because a readable PDF is included. German authorities require XRechnung.

### **Do I need to support Peppol?**

Not in Germany. Peppol pays off when customers abroad receive invoices over the Peppol network. Quittio creates the file; an access point handles delivery.

### **Can I send a customer several formats?**

Yes. formats(\[…]) creates several formats from the same calculation. Make sure it is clear which document is the invoice.

### **What about invoices to private customers?**

There is no e-invoicing mandate for consumers. Quittio creates a PDF, optionally with embedded XML.

### **How does Quittio recognise an authority?**

By a valid Leitweg-ID in the buyer reference (BT-10) or an electronic address with scheme 0204.

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

Sources: [Sec. 14 UStG](https://www.gesetze-im-internet.de/ustg_1980/__14.html) · [Sec. 33 UStDV](https://www.gesetze-im-internet.de/ustdv_1980/__33.html) · [Federal Ministry of Finance letter of 15 Oct 2025 (section 14.1 (12) to (15) UStAE)](https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Steuerarten/Umsatzsteuer/Umsatzsteuer-Anwendungserlass/2025-10-15-einfuehrung-obligatorische-e-rechnung.html) · [E-Rechnungsverordnung (ERechV)](https://www.gesetze-im-internet.de/erechv/)

## Read next

- [**Formats**

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

  What each profile contains, which count as e-invoices and which one to use.](https://quittio.dev/en/guides/zugferd-profiles-explained)
- [**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)
- [**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)

## Not sure which format?

The format finder gives you the answer in two clicks, with matching code.

[**Open the format finder**](https://quittio.dev/en/formats) [**Formats in the docs**](https://docs.quittio.dev/formats)

```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-xrechnung-or-peppol#webpage","@type":"WebPage","dateModified":"2026-10-15","datePublished":"2026-10-15","description":"ZUGFeRD, XRechnung and Peppol compared: what they are, who needs which format, how Quittio chooses automatically and when to set a format yourself.","name":"ZUGFeRD, XRechnung or Peppol: which format do you need?","url":"https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol","breadcrumb":{"@id":"https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol#breadcrumb"},"isPartOf":{"@id":"https://quittio.dev/en#website"},"potentialAction":[{"@type":"ReadAction","target":["https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol"]}],"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-xrechnung-or-peppol#article","dateModified":"2026-10-15","datePublished":"2026-10-15","description":"ZUGFeRD, XRechnung and Peppol compared: what they are, who needs which format, how Quittio chooses automatically and when to set a format yourself.","headline":"ZUGFeRD, XRechnung or Peppol: which format do you need?","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-xrechnung-or-peppol#webpage"},"mainEntityOfPage":{"@id":"https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol#webpage"},"publisher":{"@id":"https://quittio.dev/#identity"}},{"@id":"https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol#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":"Choosing a format","position":3}]},{"@id":"https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol#/schema/question/1","@type":"Question","inLanguage":"en","name":"Is ZUGFeRD or XRechnung better?","acceptedAnswer":{"@type":"Answer","text":"Both are valid e-invoices. ZUGFeRD is more convenient for businesses because a readable PDF is included. German authorities require XRechnung."}},{"@id":"https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol#/schema/question/2","@type":"Question","inLanguage":"en","name":"Do I need to support Peppol?","acceptedAnswer":{"@type":"Answer","text":"Not in Germany. Peppol pays off when customers abroad receive invoices over the Peppol network. Quittio creates the file; an access point handles delivery."}},{"@id":"https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol#/schema/question/3","@type":"Question","inLanguage":"en","name":"Can I send a customer several formats?","acceptedAnswer":{"@type":"Answer","text":"Yes. formats([…]) creates several formats from the same calculation. Make sure it is clear which document is the invoice."}},{"@id":"https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol#/schema/question/4","@type":"Question","inLanguage":"en","name":"What about invoices to private customers?","acceptedAnswer":{"@type":"Answer","text":"There is no e-invoicing mandate for consumers. Quittio creates a PDF, optionally with embedded XML."}},{"@id":"https://quittio.dev/en/guides/zugferd-xrechnung-or-peppol#/schema/question/5","@type":"Question","inLanguage":"en","name":"How does Quittio recognise an authority?","acceptedAnswer":{"@type":"Answer","text":"By a valid Leitweg-ID in the buyer reference (BT-10) or an electronic address with scheme 0204."}},{"@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"}]}
```