E-Rechnungen für PHP und Laravel. Rechtssicher, validiert, archiviert.
Quittio erstellt, prüft, liest und archiviert elektronische Rechnungen nach EN 16931, in jedem PHP-8.3-Projekt und mit eigener Laravel-Integration. ZUGFeRD, XRechnung und Peppol aus einem Datenmodell, geprüft mit den offiziellen Validatoren.
composer require quittio/quittiocomposer require quittio/core quittio/country-de- 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
Wie Quittio arbeitet
Deine Daten rein. Gültige E-Rechnungen raus.
Quittio rechnet Summen und Steuer, prüft jede Rechnung in sieben Stufen gegen die offiziellen Regeln und rendert das Format, das dein Kunde braucht.


Rechtssicher
Pflichtangaben nach § 14 UStG, Steuer-Presets für Reverse Charge, Kleinunternehmer und innergemeinschaftliche Lieferungen. Ein Wächter sorgt dafür, dass PDF und XML dieselben Daten zeigen.
Validiert
Sieben Prüfstufen von der Datenstruktur bis PDF/A-3b. Die offiziellen Regeln laufen im KoSIT-Validator und in veraPDF, lokal und in deiner CI.
Entwicklerfreundlich
Eine flüssige API mit sinnvollen Standardwerten, in reinem PHP wie in Laravel, dort mit Fakes und Assertions für Pest. Ein paar Zeilen statt eines XML-Projekts.
So einfach geht es
Erstellen, ausgeben, prüfen, lesen.
Echte Beispiele aus der Dokumentation. Kein XML von Hand, keine Rechenfehler.
use Quittio\Core\Builder\Party;
use Quittio\Core\Enums\UnitCode;
use Quittio\Laravel\Facades\Quittio;
$result = Quittio::invoice() // Verkäufer und Bank aus config/quittio.php
->number('RE-2026-0042')
->deliveryDate('2026-09-30')
->buyer(Party::make('Kunde AG')
->vatId('DE987654321')
->address('Bahnhofstraße 5', '54321', 'Beispielstadt', 'DE')))
->line('Web development', netPrice: '95.00', quantity: 24, unit: UnitCode::Hour)
->line('Hosting', netPrice: '49.00') // Menge 1, USt 19 % als Standard
->dueInDays(14)
->render(); // ZUGFeRD: PDF/A-3 mit eingebettetem XMLuse 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;
use Quittio\Country\DE\CountryDE;
// einmal: Länderpaket und Standard-USt, statt config/quittio.php
$quittio = Quittio::create([], [new CountryDE]);
InvoiceBuilder::useDefaultVat(new CountryDefaultVat($quittio->countries()));
$invoice = InvoiceBuilder::make()
->seller(Party::make('Muster GmbH')
->vatId('DE123456789')
->address('Hauptstraße 1', '12345', 'Musterstadt', 'DE'))
->payment(PaymentMeansCode::SepaCreditTransfer, iban: 'DE02120300000000202051')
->number('RE-2026-0042')
->deliveryDate('2026-09-30')
->buyer(Party::make('Kunde AG')
->vatId('DE987654321')
->address('Bahnhofstraße 5', '54321', 'Beispielstadt', 'DE')))
->line('Web development', netPrice: '95.00', quantity: 24, unit: UnitCode::Hour)
->line('Hosting', netPrice: '49.00') // Menge 1, USt 19 % als Standard
->dueInDays(14);
$result = $quittio->make($invoice)->render(); // ZUGFeRD: PDF/A-3 mit eingebettetem XML
Quittio::make($invoice)->format('xrechnung-cii')->render(); // XRechnung 3.0, CII
Quittio::make($invoice)->format('xrechnung-ubl')->render(); // XRechnung 3.0, UBL
Quittio::make($invoice)->format('peppol')->render(); // Peppol BIS Billing 3.0
$result->pdf();
$result->save('invoices', '2026/');
$result->cancel('ST-2026-0001', reason: 'Doppelt berechnet'); // der Storno-Beleg, gerendert$quittio->make($invoice)->format('xrechnung-cii')->render(); // XRechnung 3.0, CII
$quittio->make($invoice)->format('xrechnung-ubl')->render(); // XRechnung 3.0, UBL
$quittio->make($invoice)->format('peppol')->render(); // Peppol BIS Billing 3.0
$result->pdf();
$result->save(__DIR__.'/invoices'); // Verzeichnis oder Dateipfad
$storno = $quittio->cancellation($result->data(), 'ST-2026-0001', reason: 'Doppelt berechnet');
$quittio->make($storno)->render(); // der Storno-Beleg, gerendert$report = Quittio::invoice()
->buyer($customer)
->line('Consulting', netPrice: '120.00')
->check('xrechnung-cii'); // validiert wie render(), ohne PDF, wirft nie
$report->isValid(); // false
$report->errors(); // [BR-DE-15] Die Käuferreferenz (BT-10) fehlt.$invoice = InvoiceBuilder::make()
->seller($company)
->buyer($customer)
->line('Consulting', netPrice: '120.00');
// validiert wie render(), ohne PDF, wirft nie
$report = $quittio->make($invoice)->format('xrechnung-cii')->check();
$report->isValid(); // false
$report->errors(); // [BR-DE-15] Die Käuferreferenz (BT-10) fehlt.- L1StrukturDatenmodell vollständig berechnet
- L2Profil XRECHNUNGPflichtfelder vorhanden
- L3BR-DE-15Die Käuferreferenz (BT-10, Leitweg-ID) fehlt.
- L3DE-USTG-06Leistungsdatum gesetzt
- L4XSDnicht geprüft, Datenstufe hat Fehler
Korrektur:
->buyerReference('04011000-12345-03')$read = Quittio::read($request->file('invoice')->get()); // XML oder PDF
$invoice = $read->data; // InvoiceData wie im Dokument angegeben
$invoice->number; // "RE-2026-0101"
$invoice->seller->name; // der Lieferant
$invoice->totals?->amountDue; // Zahlbetrag
$read->profile; // z. B. "en16931" oder "xrechnung"$read = $quittio->readFile($_FILES['invoice']['tmp_name']); // XML oder PDF
$invoice = $read->data; // InvoiceData wie im Dokument angegeben
$invoice->number; // "RE-2026-0101"
$invoice->seller->name; // der Lieferant
$invoice->totals?->amountDue; // Zahlbetrag
$read->profile; // z. B. "en16931" oder "xrechnung"Gelesen: RE-2026-0101
- Lieferant
- Lieferant GmbH
- Profil
- en16931
- Zahlbetrag
- 1.190,00 €
- Befunde
- keine
Warum jetzt
Die E-Rechnung kommt Schritt für Schritt.
Für inländische Rechnungen zwischen Unternehmen. Ausgenommen sind unter anderem Kleinbetragsrechnungen bis 250 €, Fahrausweise und Rechnungen an Verbraucher.
01.01.2025
Empfangen
Alle Unternehmen in Deutschland müssen E-Rechnungen empfangen können.
01.01.2027
Ausstellen ab 800.000 €
Unternehmen mit mehr als 800.000 € Vorjahresumsatz müssen im Inland E-Rechnungen ausstellen.
01.01.2028
Ausstellen für alle
Alle Unternehmen stellen im inländischen B2B-Bereich E-Rechnungen aus.
Quellen: § 14 UStG, § 27 Abs. 38 UStG, BMF-Schreiben vom 15.10.2025.
Funktionen
Alles, was eine E-Rechnung braucht.
Ein Datenmodell, alle Formate
ZUGFeRD, XRechnung, Peppol, CII und UBL aus denselben Daten. Formatwechsel ist eine Zeile.
MehrJedes PHP-Projekt
quittio/core läuft in jedem PHP-8.3-Projekt: Symfony, Slim, Shop-Plugin oder eigenes Framework. Laravel ist optional.
MehrLaravel-nativ
Facade, Queue, Events, Mail, Storage, Blade und Artisan-Befehle.
MehrRechnet selbst
Summen, Steuer und Rundung nach den BR-CO-Regeln der EN 16931.
MehrPDF-Vorlagen
Logo und Farben, einzelne Partials oder ein eigenes Template. DIN 5008 und GiroCode inklusive.
MehrEingangsrechnungen
CII, UBL und ZUGFeRD lesen und prüfen, abgesichert gegen XXE und Zip-Bomben.
MehrWeitere Belege
Angebote, Lieferscheine, Proforma-Rechnungen, Mahnungen und Kontoauszüge.
MehrTesten
Quittio::fake(), Assertions, Factories und Szenarien für Pest und PHPUnit.
MehrLänderpakete
Deutschland zuerst: UStG-Pflichtangaben, Steuer-Presets, BR-DE-Regeln.
Mehr
Validierung
Fehler beim Rendern, nicht beim Kunden.
Quittio prüft jede Rechnung in sieben Stufen. Die offiziellen Regeln laufen im KoSIT-Validator und in veraPDF.
- L1StrukturDatenformate, Länder- und Währungscodes, Nachkommastellen
- L2PflichtfelderPflicht- und erlaubte Felder des gewählten Profils
- L3GeschäftsregelnEN 16931 (BR-…), XRechnung, Peppol und UStG (DE-USTG-…)
- L4XSDXML gegen das Schema (CII D16B, UBL 2.1)
- L5KoSITOffizielle Schematron-Regeln im KoSIT-Validator
- L6veraPDFPDF/A-3b-Konformität des PDFs
- L7PlausibilitätIBAN, BIC, USt-IdNr., Leitweg-ID, optional VIES
- L1StrukturDatenmodell vollständig berechnet
- L2Profil XRECHNUNGPflichtfelder vorhanden
- L3BR-DE-15Die Käuferreferenz (BT-10, Leitweg-ID) fehlt.
- L3DE-USTG-06Leistungsdatum gesetzt
- L4XSDnicht geprüft, Datenstufe hat Fehler
Korrektur:
->buyerReference('04011000-12345-03')Beispieldateien
Sieh dir das Ergebnis an.
Eine Rechnung in allen Formaten, mit Quittio erzeugt und vom offiziellen KoSIT-Validator ohne Fehler und Warnungen akzeptiert.
- ZUGFeRD (EN 16931)PDF/A-3b mit XMLRE-2026-0042.pdfHerunterladen
- XRechnung (CII)XMLRE-2026-0042-xrechnung-cii.xmlHerunterladen
- XRechnung (UBL)XMLRE-2026-0042-xrechnung-ubl.xmlHerunterladen
- Peppol BIS 3.0XMLRE-2026-0042-peppol.xmlHerunterladen
- KoSIT-PrüfberichtHTML, zur XRechnung (CII)RE-2026-0042-kosit.htmlAnsehen (öffnet in neuem Tab)
Open Source und Managed
Kostenlos starten. Managed, wenn deine App Rechnungen ausstellt.
Quittio
Erstellen, prüfen, lesen und rendern. Für jedes PHP-Projekt, mit oder ohne Laravel, kostenlos.
- ZUGFeRD, XRechnung, Peppol, UBL, CII
- Validierung L1–L7 mit KoSIT und veraPDF
- PDF-Vorlagen, DIN 5008, GiroCode
- Eingangsrechnungen lesen und prüfen
Quittio Managed
Deine Laravel-App stellt Rechnungen selbst aus? Dann brauchst du mehr als ein PDF.
- Lückenlose Nummernkreise
- Unveränderbare Rechnungen und Archiv mit SHA-256
- Storno, Teilstorno und Korrektur
- Versand, Audit-Log und Aufbewahrung
KI-Assistenten
Dein KI-Assistent kennt Quittio.
Die Dokumentation gibt es als Markdown, als llms.txt und als MCP-Server. So schreiben Claude Code, Cursor oder Copilot Code für die aktuelle Version.
So richtest du es einclaude mcp add --transport http quittio-docs https://docs.quittio.dev/mcp- Claude Code
- Cursor
- GitHub Copilot
- Claude Desktop
- Laravel Boost
Häufige Fragen
Brauche ich Laravel?
Nein. quittio/core läuft in jedem PHP-8.3-Projekt, zum Beispiel mit Symfony, Slim oder ganz ohne Framework. Laravel 13 brauchst du nur für die Integration und für Quittio Managed. Eine Anleitung steht im Ratgeber unter „E-Rechnungen mit PHP erstellen, ganz ohne Laravel“.
Ist Quittio kostenlos?
Ja. Core, Laravel-Integration und das Länderpaket Deutschland stehen unter MIT. Kostenpflichtig ist nur Quittio Managed, die Rechnungsverwaltung in der Datenbank.
Welche Formate unterstützt Quittio?
ZUGFeRD/Factur-X, XRechnung 3.0 (CII und UBL), Peppol BIS Billing 3.0, CII und UBL 2.1, dazu PDF, HTML und JSON.
Ersetzt Quittio meine Buchhaltung oder Steuerberatung?
Nein. Quittio erzeugt und prüft Rechnungen. Buchhaltung, Umsatzsteuer-Erklärung und Beratung bleiben, wo sie sind.
Ist Quittio produktionsreif?
Version 0.3.0 erzeugt Rechnungen, die die offiziellen Validatoren bestehen. Die API kann sich bis 1.0.0 noch ändern, die rechtlichen Texte des Länderpakets werden gerade von einer Steuerberatung geprüft.
Was unterscheidet Quittio von Quittio Managed?
Quittio erzeugt die Dateien. Managed verwaltet die Rechnungen danach: Nummern, Unveränderbarkeit, Archiv, Storno, Versand und Aufbewahrung.
Deine erste gültige E-Rechnung in zehn Minuten.
Installieren, Firmendaten hinterlegen, Rechnung bauen. Den Rest prüft Quittio.