---
title: "Quittio: E-invoicing for PHP and Laravel (ZUGFeRD, XRechnung, Peppol)"
description: "Open-source library for PHP and Laravel: create EN 16931 e-invoices, validate them with the KoSIT validator, output PDF/A-3 and read incoming invoices."
canonical_url: "https://quittio.dev/en"
locale: en
meta:
  "og:description": "Open-source library for PHP and Laravel: create EN 16931 e-invoices, validate them with the KoSIT validator, output PDF/A-3 and read incoming invoices."
  "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": "Quittio: E-invoicing for PHP and Laravel (ZUGFeRD, XRechnung, Peppol)"
  "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)

[**New** Quittio 0.3.0 is out · open source (MIT)](https://quittio.dev/en/changelog)

# Invoices, settled. E-invoicing for PHP and Laravel.

Quittio creates, validates, reads and archives electronic invoices according to EN 16931, in any PHP 8.3 project and with a dedicated Laravel integration. ZUGFeRD, XRechnung and Peppol from one data model, checked with the official validators.

[**Get started**](https://docs.quittio.dev/getting-started) [**Documentation**](https://docs.quittio.dev)

$`composer require quittio/quittio`

$`composer require quittio/core quittio/country-de`

InvoiceController.phpCopy$result =Quittio::invoice()->number('INV-2026-0042')->deliveryDate('2026-09-30')->buyer(Party::make('Customer Ltd')->vatId('IE7654321K')->address('5 Station Road', 'T12 X2Y3', 'Cork', 'IE'))->line('Web development', netPrice: '95.00', quantity: 24,unit: UnitCode::Hour)->line('Hosting', netPrice: '49.00')->dueInDays(14)->render();

- EN 16931
- ZUGFeRD / Factur-X
- XRechnung 3.0
- Peppol BIS 3.0
- UBL 2.1
- PDF/A-3b
- KoSIT
- veraPDF
- PHP 8.3+
- Laravel 13

**How Quittio works**

## Your data in. Valid e-invoices out.

Quittio calculates totals and VAT, checks every invoice on seven levels against the official rules and renders the format your customer needs.

*Laravel apps, other PHP frameworks and plain PHP pass invoice data to Quittio. Quittio calculates, validates on seven levels with the KoSIT validator and veraPDF, and outputs ZUGFeRD, XRechnung 3.0 and Peppol BIS 3.0 as well as PDF, HTML and JSON.*

- ### Compliant

  Mandatory fields under German VAT law, tax presets for reverse charge, small businesses and intra-community supplies. A guard makes sure PDF and XML show the same data.
- ### Validated

  Seven validation levels from data structure to PDF/A-3b. The official rules run in the KoSIT validator and veraPDF, locally and in your CI.
- ### Developer-friendly

  A fluent API with sensible defaults, in plain PHP and in Laravel, there with fakes and assertions for Pest. A few lines instead of an XML project.

**How it works**

## Create, output, validate, read.

Real examples from the documentation. No hand-written XML, no rounding errors.

InvoiceService.php

```
use Quittio\Core\Builder\Party;
use Quittio\Core\Enums\UnitCode;
use Quittio\Laravel\Facades\Quittio;

$result = Quittio::invoice()                 // seller and bank account from config/quittio.php
    ->number('INV-2026-0042')
    ->deliveryDate('2026-09-30')
    ->buyer(Party::make('Customer Ltd')
        ->vatId('IE7654321K')
        ->address('5 Station Road', 'T12 X2Y3', 'Cork', 'IE')))
    ->line('Web development', netPrice: '95.00', quantity: 24, unit: UnitCode::Hour)
    ->line('Hosting', netPrice: '49.00')      // quantity 1, standard VAT rate by default
    ->dueInDays(14)
    ->render();                               // ZUGFeRD: PDF/A-3 with embedded XML
```

invoice.php

```
use Quittio\Core\Builder\InvoiceBuilder;
use Quittio\Core\Builder\Party;
use Quittio\Core\Enums\PaymentMeansCode;
use Quittio\Core\Enums\UnitCode;
use Quittio\Core\Quittio;
use Quittio\Core\Tax\CountryDefaultVat;

// once: configuration, country packs and the default VAT rate
$quittio = Quittio::create($config, $countryPacks);
InvoiceBuilder::useDefaultVat(new CountryDefaultVat($quittio->countries()));

$invoice = InvoiceBuilder::make()
    ->seller(Party::make('Example Software Ltd')
        ->vatId('IE1234567T')
        ->address('12 Harbour Road', 'D02 X285', 'Dublin', 'IE'))
    ->payment(PaymentMeansCode::SepaCreditTransfer, iban: 'IE29AIBK93115212345678')
    ->number('INV-2026-0042')
    ->deliveryDate('2026-09-30')
    ->buyer(Party::make('Customer Ltd')
        ->vatId('IE7654321K')
        ->address('5 Station Road', 'T12 X2Y3', 'Cork', 'IE')))
    ->line('Web development', netPrice: '95.00', quantity: 24, unit: UnitCode::Hour)
    ->line('Hosting', netPrice: '49.00')      // quantity 1, standard VAT rate by default
    ->dueInDays(14);

$result = $quittio->make($invoice)->render();   // ZUGFeRD: PDF/A-3 with embedded XML
```

![Invoice INV-2026-0042 from Example Software Ltd to Customer Ltd for €2,864.67, created by Quittio with the default template](https://quittio.dev/invoices/invoice-en-1200.webp)

**Why now**

## Germany is rolling out e-invoicing step by step.

For domestic invoices between businesses. Exceptions include small invoices up to €250, tickets and invoices to consumers.

1. 1 Jan 2025 ### Receive

   Every business in Germany must be able to receive e-invoices.
2. 1 Jan 2027 ### Issue above €800,000

   Businesses with more than €800,000 prior-year turnover must issue e-invoices domestically.
3. 1 Jan 2028 ### Issue for everyone

   All businesses issue e-invoices for domestic B2B transactions.

[**What this means for your app**](https://quittio.dev/en/e-invoicing-mandate-germany)

Sources: sec. 14 UStG, sec. 27 (38) UStG, Federal Ministry of Finance letter of 15 Oct 2025.

**Features**

## Everything an e-invoice needs.

- [<h3>One data model, every format</h3>

  ZUGFeRD, XRechnung, Peppol, CII and UBL from the same data. Switching format is one line.**More **](https://quittio.dev/en/formats)
- [<h3>Any PHP project</h3>

  quittio/core runs in any PHP 8.3 project: Symfony, Slim, a shop plugin or your own framework. Laravel is optional.**More **](https://quittio.dev/en/guides/e-invoices-with-php-without-laravel)
- [<h3>Laravel-native</h3>

  Facade, queue, events, mail, storage, Blade and Artisan commands.**More **](https://quittio.dev/en/features#laravel)
- [<h3>Does the maths</h3>

  Totals, VAT and rounding according to the BR-CO rules of EN 16931.**More **](https://quittio.dev/en/features#rechnen)
- [<h3>PDF templates</h3>

  Logo and colours, single partials or your own template. DIN 5008 and payment QR codes included.**More **](https://quittio.dev/en/features#pdf-design)
- [<h3>Incoming invoices</h3>

  Read and check CII, UBL and ZUGFeRD, protected against XXE and zip bombs.**More **](https://quittio.dev/en/features#eingangsrechnungen)
- [<h3>More documents</h3>

  Quotes, delivery notes, proforma invoices, payment reminders and statements.**More **](https://quittio.dev/en/features#belege)
- [<h3>Testing</h3>

  Quittio::fake(), assertions, factories and scenarios for Pest and PHPUnit.**More **](https://quittio.dev/en/features#laravel)
- [<h3>Country packs</h3>

  Germany first: mandatory fields, tax presets, BR-DE rules.**More **](https://quittio.dev/en/features#laender)

**Validation**

## Errors at render time, not at your customer.

Quittio checks every invoice on seven levels. The official rules run in the KoSIT validator and veraPDF.

1. **L1****Structure**Data formats, country and currency codes, decimals
2. **L2****Mandatory fields**Mandatory and allowed fields of the chosen profile
3. **L3****Business rules**EN 16931 (BR-…), XRechnung, Peppol and German VAT Act (DE-USTG-…)
4. **L4****XSD**XML against the schema (CII D16B, UBL 2.1)
5. **L5****KoSIT**Official Schematron rules in the KoSIT validator
6. **L6****veraPDF**PDF/A-3b conformance of the PDF
7. **L7****Plausibility**IBAN, BIC, VAT ID, Leitweg-ID, optional VIES

**Sample files**

## See the result.

One invoice in every format, created with Quittio and accepted by the official KoSIT validator without errors or warnings.

- [**ZUGFeRD (EN 16931)**PDF/A-3b with XMLRE-2026-0042.pdf**Download **](https://quittio.dev/samples/RE-2026-0042.pdf)
- [**XRechnung (CII)**XMLRE-2026-0042-xrechnung-cii.xml**Download **](https://quittio.dev/samples/RE-2026-0042-xrechnung-cii.xml)
- [**XRechnung (UBL)**XMLRE-2026-0042-xrechnung-ubl.xml**Download **](https://quittio.dev/samples/RE-2026-0042-xrechnung-ubl.xml)
- [**Peppol BIS 3.0**XMLRE-2026-0042-peppol.xml**Download **](https://quittio.dev/samples/RE-2026-0042-peppol.xml)
- [**KoSIT validation report**HTML, for the XRechnung (CII)RE-2026-0042-kosit.html**View **(opens in a new tab)](https://quittio.dev/samples/RE-2026-0042-kosit.html)

**Open source and Managed**

## Start for free. Managed when your app issues invoices.

**Open source · MIT**

### Quittio

Create, validate, read and render. For any PHP project, with or without Laravel, free of charge.

- ZUGFeRD, XRechnung, Peppol, UBL, CII
- Validation L1–L7 with KoSIT and veraPDF
- PDF templates, DIN 5008, payment QR codes
- Read and check incoming invoices

[**Get started**](https://docs.quittio.dev/getting-started)

**Early access · from €149 per project**

### Quittio Managed

Does your Laravel app issue the invoices itself? Then you need more than a PDF.

- Gapless numbering
- Immutable invoices and an archive with SHA-256
- Cancellation, partial cancellation and correction
- Delivery, audit log and retention

[**See Quittio Managed**](https://quittio.dev/en/managed)

**AI assistants**

## Your AI assistant knows Quittio.

The documentation is available as Markdown, as llms.txt and as an MCP server, so Claude Code, Cursor or Copilot write code for the current version.

[**How to set it up**](https://docs.quittio.dev/ai)

$`claude mcp add --transport http quittio-docs https://docs.quittio.dev/mcp`

- **Claude Code**
- **Cursor**
- **GitHub Copilot**
- **Claude Desktop**
- **Laravel Boost**

## Frequently asked questions

### **Do I need Laravel?**

No. quittio/core runs in any PHP 8.3 project, for example with Symfony, Slim or no framework at all. You only need Laravel 13 for the integration and for Quittio Managed. There is a guide: “Create e-invoices with plain PHP, no Laravel needed”.

### **Is Quittio free?**

Yes. The core, the Laravel integration and the German country pack are MIT licensed. Only Quittio Managed, the invoice management in your database, is paid.

### **Which formats does Quittio support?**

ZUGFeRD/Factur-X, XRechnung 3.0 (CII and UBL), Peppol BIS Billing 3.0, CII and UBL 2.1, plus PDF, HTML and JSON.

### **Does Quittio replace my accounting or tax adviser?**

No. Quittio creates and validates invoices. Accounting, VAT returns and advice stay where they are.

### **Is Quittio production-ready?**

Version 0.3.0 creates invoices that pass the official validators. The API may still change until 1.0.0, and the legal texts of the country pack are being reviewed by a tax adviser.

### **What is the difference between Quittio and Quittio Managed?**

Quittio creates the files. Managed handles the invoices afterwards: numbering, immutability, archive, cancellations, delivery and retention.

## Your first valid e-invoice in ten minutes.

Install, add your company details, build an invoice. Quittio checks the rest.

[**Get started**](https://docs.quittio.dev/getting-started) [**Documentation**](https://docs.quittio.dev)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://quittio.dev/#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/","publisher":{"@id":"https://quittio.dev/#identity"},"translationOfWork":{"@id":"https://quittio.dev/#website"}},{"@id":"https://quittio.dev/en#webpage","@type":"WebPage","description":"Open-source library for PHP and Laravel: create EN 16931 e-invoices, validate them with the KoSIT validator, output PDF/A-3 and read incoming invoices.","name":"Quittio: E-invoicing for PHP and Laravel (ZUGFeRD, XRechnung, Peppol)","url":"https://quittio.dev/en","about":{"@id":"https://quittio.dev/#identity"},"isPartOf":{"@id":"https://quittio.dev/en#website"},"potentialAction":[{"@type":"ReadAction","target":["https://quittio.dev/en"]}],"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#/schema/software-source-code/1","@type":"SoftwareSourceCode","codeRepository":"https://github.com/Quittio/quittio","license":"https://opensource.org/licenses/MIT","name":"Quittio","programmingLanguage":"PHP","version":"0.3.0"},{"@id":"https://quittio.dev/en#/schema/question/1","@type":"Question","inLanguage":"en","name":"Do I need Laravel?","acceptedAnswer":{"@type":"Answer","text":"No. quittio/core runs in any PHP 8.3 project, for example with Symfony, Slim or no framework at all. You only need Laravel 13 for the integration and for Quittio Managed. There is a guide: “Create e-invoices with plain PHP, no Laravel needed”."}},{"@id":"https://quittio.dev/en#/schema/question/2","@type":"Question","inLanguage":"en","name":"Is Quittio free?","acceptedAnswer":{"@type":"Answer","text":"Yes. The core, the Laravel integration and the German country pack are MIT licensed. Only Quittio Managed, the invoice management in your database, is paid."}},{"@id":"https://quittio.dev/en#/schema/question/3","@type":"Question","inLanguage":"en","name":"Which formats does Quittio support?","acceptedAnswer":{"@type":"Answer","text":"ZUGFeRD/Factur-X, XRechnung 3.0 (CII and UBL), Peppol BIS Billing 3.0, CII and UBL 2.1, plus PDF, HTML and JSON."}},{"@id":"https://quittio.dev/en#/schema/question/4","@type":"Question","inLanguage":"en","name":"Does Quittio replace my accounting or tax adviser?","acceptedAnswer":{"@type":"Answer","text":"No. Quittio creates and validates invoices. Accounting, VAT returns and advice stay where they are."}},{"@id":"https://quittio.dev/en#/schema/question/5","@type":"Question","inLanguage":"en","name":"Is Quittio production-ready?","acceptedAnswer":{"@type":"Answer","text":"Version 0.3.0 creates invoices that pass the official validators. The API may still change until 1.0.0, and the legal texts of the country pack are being reviewed by a tax adviser."}},{"@id":"https://quittio.dev/en#/schema/question/6","@type":"Question","inLanguage":"en","name":"What is the difference between Quittio and Quittio Managed?","acceptedAnswer":{"@type":"Answer","text":"Quittio creates the files. Managed handles the invoices afterwards: numbering, immutability, archive, cancellations, delivery and retention."}},{"@id":"https://quittio.dev/#logo","@type":"ImageObject","caption":"Quittio","contentUrl":"https://quittio.dev/logo.png","inLanguage":"en","url":"https://quittio.dev/logo.png"}]}
```