Everything an e-invoice needs.
Create, calculate, validate, design, read. Open source for every PHP 8.3 project, with a native Laravel integration.
A data model that does the maths
You provide quantities, prices, discounts and tax categories. Quittio calculates totals, VAT and rounding according to EN 16931. Gross prices from shops are converted so the customer pays exactly the displayed amount.
In the documentation- EN 16931 data model with all business terms
- Rounding according to BR-CO-10 to BR-CO-17
- Gross price mode for shops
- Reverse charge, small businesses, intra-community supplies
Validation on seven levels
Errors show up at render time, not at your customer. L1 to L4 and L7 run in PHP, L5 and L6 with the official KoSIT and veraPDF validators, locally, in Docker or in CI.
In the documentation- L1 Structure: Data formats, country and currency codes, decimals
- L2 Mandatory fields: Mandatory and allowed fields of the chosen profile
- L3 Business rules: EN 16931 (BR-…), XRechnung, Peppol and German VAT Act (DE-USTG-…)
- L4 XSD: XML against the schema (CII D16B, UBL 2.1)
- L5 KoSIT: Official Schematron rules in the KoSIT validator
- L6 veraPDF: PDF/A-3b conformance of the PDF
- L7 Plausibility: IBAN, BIC, VAT ID, Leitweg-ID, optional VIES
PDF and design
Your invoice, your design, one data model. Logo, colours and texts via configuration, override single partials or use your own template. A mandatory field guard makes sure PDF and XML show the same data.
In the documentation- Three design levels
- DIN 5008 letter layout with fold and punch marks
- Carry-over across pages
- EPC GiroCode and Swiss QR bill
- Watermarks, translations, HTML preview
- PDF/A-3b with embedded XML
Reading incoming invoices
Since 2025 every business in Germany must be able to receive e-invoices. Quittio reads CII, UBL and ZUGFeRD, checks them and compares stated with calculated amounts.
In the documentation- CII, UBL, ZUGFeRD 1.0 and 2.x, Factur-X, XRechnung
- Findings with rule codes
- Reading on the command line
- Protected against XXE, billion laughs and zip bombs
More documents
From quote to payment reminder with the same builder and templates. A quote becomes an invoice with one call.
In the documentation- Quotes and order confirmations
- Delivery notes without prices
- Proforma invoices
- Payment reminders with default interest (German base rate)
- Account statements
Laravel and testing
Quittio feels like Laravel: a facade, a config file, events, queue and mail. For tests there is a fake, assertions, factories and ready-made scenarios. Without Laravel, you use the core directly.
In the documentation- Facade, storage, queue, events, mail, Blade
- Artisan commands for schemas, code lists and base rate
- Quittio::fake() and assertions
- Factories and scenarios, also without Laravel
Country packs
Everything country-specific lives in country packs; the core stays country-neutral. Germany is the first pack.
In the documentation- Mandatory fields under sec. 14 UStG
- Tax presets with legal texts
- XRechnung profiles and BR-DE rules
- DIN 5008 and the German base rate
AI assistants
So that your assistant writes code for the current version: every docs page is available as Markdown, plus llms.txt and an MCP server. For Laravel Boost, Quittio ships guidelines and a skill.
In the documentation- llms.txt and llms-full.txt
- MCP server with search_docs, get_page, list_pages
- Claude Code, Cursor, VS Code, Claude Desktop
- Guidelines and a skill for Laravel Boost
More than generating files?
If your app issues invoices and has to keep them, Quittio Managed handles numbering, archive, cancellations and delivery.