---
title: "E-Rechnung mit PHP ohne Laravel: ZUGFeRD, XRechnung"
description: "Quittio läuft in jedem PHP-8.3-Projekt: Symfony, Slim, Shopware-Plugin oder eigenes Framework. So installierst du den Kern und erzeugst ZUGFeRD und XRechnung."
canonical_url: "https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel"
locale: de
meta:
  "og:description": "Quittio läuft in jedem PHP-8.3-Projekt: Symfony, Slim, Shopware-Plugin oder eigenes Framework. So installierst du den Kern und erzeugst ZUGFeRD und XRechnung."
  "og:image": "https://quittio.dev/og/quittio-de.jpg"
  "og:image:alt": "Quittio: E-Rechnungen für PHP und Laravel. Rechtssicher, validiert, archiviert, mit geprüfter Beispielrechnung."
  "og:image:height": "630"
  "og:image:type": image/jpeg
  "og:image:width": "1200"
  "og:title": "E-Rechnung mit PHP ohne Laravel: ZUGFeRD, XRechnung"
  "twitter:image": "https://quittio.dev/og/quittio-de.jpg"
  "twitter:image:alt": "Quittio: E-Rechnungen für PHP und Laravel. Rechtssicher, validiert, archiviert, mit geprüfter Beispielrechnung."
---

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

# E-Rechnungen mit PHP erstellen, ganz ohne Laravel

Quittio ist als E-Rechnungs-Bibliothek für Laravel bekannt. Der Kern ist aber reines PHP und läuft in jedem Projekt mit PHP 8.3, auch ohne Framework.

**Anleitung**15.10.2026 · ca. 6 Minuten

**Kurz gesagt**

Für E-Rechnungen ohne Laravel installierst du quittio/core und das Länderpaket quittio/country-de. Statt der Facade erzeugst du einmal eine Instanz mit Quittio::create() und baust Rechnungen mit InvoiceBuilder::make(). ZUGFeRD, XRechnung, Peppol, Validierung und das Lesen von Eingangsrechnungen funktionieren genauso wie in Laravel.

## Welche Pakete du brauchst

| Paket | Ohne Laravel | Inhalt |
| --- | --- | --- |
| `quittio/core` | nötig | Datenmodell, Berechnung, CII und UBL, ZUGFeRD/Factur-X, Validierung, Lesen |
| `quittio/country-de` | empfohlen | Pflichtangaben nach UStG, Steuersätze, XRechnung-Regeln, DIN 5008 |
| `quittio/laravel` | nicht nötig | Facade, Konfiguration, Blade, Artisan |
| `quittio/quittio` | nicht nötig | Komplettpaket für Laravel-Projekte |

Voraussetzung ist PHP 8.3 oder neuer mit den Erweiterungen ctype, dom, gd, libxml, mbstring, xmlwriter und zlib. Laravel oder ein anderes Framework wird nicht gebraucht.

## Installation

Ein Befehl, keine Konfigurationsdatei:

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

## Ein vollständiges Skript

Das Skript erzeugt eine ZUGFeRD-Rechnung (PDF/A-3 mit eingebettetem XML), speichert sie und liest sie zur Kontrolle wieder ein. Es läuft so mit php rechnung.php.

rechnung.php

```
<?php
require __DIR__.'/vendor/autoload.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;
use Quittio\Country\DE\CountryDE;

$quittio = Quittio::create([], [new CountryDE]);
InvoiceBuilder::useDefaultVat(new CountryDefaultVat($quittio->countries()));   // Positionen ohne vat(): 19 %

$invoice = InvoiceBuilder::make()
    ->number('RE-2026-0120')
    ->issueDate('2026-10-14')
    ->deliveryDate('2026-10-14')
    ->seller(Party::make('Muster GmbH')->vatId('DE123456789')->address('Hauptstraße 1', '12345', 'Musterstadt', 'DE'))
    ->buyer(Party::make('Kunde AG')->vatId('DE987654321')->address('Bahnhofstraße 5', '54321', 'Beispielstadt', 'DE'))
    ->line('Consulting', netPrice: '120.00', quantity: 4, unit: UnitCode::Hour)
    ->payment(PaymentMeansCode::SepaCreditTransfer, iban: 'DE02120300000000202051')
    ->dueInDays(14)
    ->build();

$result = $quittio->make($invoice)->render();                        // ZUGFeRD: PDF/A-3 mit XML
$path = $result->save(__DIR__.'/invoices/'.$result->filename());   // invoices/Rechnung_RE-2026-0120.pdf

// Zur Kontrolle wieder einlesen, so wie der Empfänger es tut
$read = $quittio->readFile($path);
echo $read->data->totals->amountDue;                               // EUR 571.20
```

- Ohne Laravel gibt es keine Konfigurationsdatei. Verkäufer und Bankverbindung stehen deshalb im Code.
- useDefaultVat() gibt Positionen ohne eigenen Steuersatz den Standardsatz des Länderpakets, in Deutschland 19 %. Ohne diesen Aufruf schlägt build() bei solchen Positionen fehl.
- render() validiert die Rechnung. Ist sie ungültig, wird eine Exception mit allen Befunden geworfen, bevor eine Datei entsteht.

## Was anders ist als in Laravel

| Thema | Laravel | Reines PHP |
| --- | --- | --- |
| **Einstieg** | Facade Quittio::invoice() | Instanz aus Quittio::create(), Rechnung mit InvoiceBuilder::make() |
| **Konfiguration** | config/quittio.php | Array oder Config-Objekt an Quittio::create() |
| **Verkäufer und Bank** | aus der Konfiguration | im Code: ->seller(…) und ->payment(…) |
| **Standard-Umsatzsteuer** | automatisch | einmal InvoiceBuilder::useDefaultVat(…) beim Start |
| **Länderpaket** | wird automatisch erkannt | new CountryDE an Quittio::create() übergeben |
| **Vorlagen** | Blade | PHP-Vorlagen; Twig o. Ä. über eine eigene TemplateEngine |
| **Speichern** | Storage-Disk | $result->save($pfad) oder file\_put\_contents() |

Einstellungen übergibst du als Array, zum Beispiel für die Prüfstufen:

bootstrap.php

```
$quittio = Quittio::create([
    'validation' => ['mode' => 'error', 'levels' => ['L1', 'L2', 'L3', 'L4', 'L7']],
    'pdf' => ['b2c_embed_xml' => false],
], [new CountryDE]);
```

## XRechnung und Prüfen

Der Formatwechsel ist eine Zeile. Mit check() prüfst du eine Rechnung, ohne ein PDF zu erzeugen:

rechnung.php

```
// XRechnung statt ZUGFeRD
$result = $quittio->make($invoice)->format('xrechnung-cii')->render();

// Nur prüfen, ohne PDF; wirft nie, sondern liefert einen Bericht
$report = $quittio->make($invoice)->format('xrechnung-cii')->check();
$report->isValid();
$report->errors();
```

Auch der Storno-Beleg funktioniert ohne Laravel:

rechnung.php

```
$cancellation = $quittio->cancellation($result->data(), 'ST-2026-0001', reason: 'Doppelt berechnet');
```

## Eingangsrechnungen lesen

Seit 2025 muss jedes Unternehmen E-Rechnungen empfangen können. Die Instanz liest CII, UBL und ZUGFeRD und prüft sie auf Wunsch mit allen Stufen:

eingang.php

```
$read = $quittio->read($uploadedContent);   // Inhalt einer XML- oder PDF-Datei
$read = $quittio->readFile('/path/to/invoice.pdf');

$read->data->number;                        // "RE-2026-0101"
$read->data->seller->name;                  // der Lieferant
$read->profile;                             // z. B. "en16931" oder "xrechnung"

$report = $quittio->validateFile($uploadedContent);   // alle Prüfstufen auf eine Eingangsrechnung
```

## In dein Projekt einbinden

Erzeuge die Instanz einmal beim Start und verwende sie überall. In Symfony, Slim oder einem anderen Framework registrierst du sie als Dienst; ohne Framework genügt eine kleine Fabrik:

InvoiceFactory.php

```
final class InvoiceFactory
{
    private static ?Quittio $quittio = null;

    public static function quittio(): Quittio
    {
        if (self::$quittio === null) {
            self::$quittio = Quittio::create([], [new CountryDE]);
            InvoiceBuilder::useDefaultVat(new CountryDefaultVat(self::$quittio->countries()));
        }

        return self::$quittio;
    }
}
```

## Was nur mit Laravel geht

- Facade, Konfigurationsdatei und Artisan-Befehle
- Blade-Vorlagen, Queue, Events, Mail und Storage-Integration
- Quittio::fake() und die Test-Assertions (Factories und Szenarien gibt es auch ohne Laravel)
- Quittio Managed (quittio/managed) mit Datenbank, Nummernkreisen und Archiv braucht Laravel 13

Alles, was eine gültige E-Rechnung ausmacht, steckt im Core. Die vollständige Referenz für den Einsatz ohne Laravel steht in der [Dokumentation](https://docs.quittio.dev/getting-started#without-laravel).

## Häufige Fragen

### **Brauche ich Laravel für Quittio?**

Nein. quittio/core hat keine Abhängigkeit zu Laravel und läuft in jeder Anwendung mit PHP 8.3 oder neuer. Laravel brauchst du nur für die Integration quittio/laravel und für Quittio Managed.

### **Funktioniert Quittio mit Symfony, Slim, WordPress oder Shopware?**

Ja, mit allem, was Composer-Pakete laden kann. Erzeuge die Quittio-Instanz einmal beim Start und registriere sie so, wie dein Framework Dienste verwaltet.

### **Welches Paket installiere ich?**

quittio/core und für Deutschland quittio/country-de. Das Paket quittio/quittio ist für Laravel-Projekte gedacht, weil es die Laravel-Integration mitbringt.

### **Welche PHP-Erweiterungen brauche ich?**

ctype, dom, gd, libxml, mbstring, xmlwriter und zlib; intl wird empfohlen. Für den offiziellen KoSIT-Validator (Prüfstufe L5) zusätzlich Java 17 oder Docker, für veraPDF (L6) veraPDF oder Docker.

### **Sind die Rechnungen ohne Laravel genauso gültig?**

Ja. Datenmodell, Berechnung, Formate und Validierung stecken alle im Core. Die Laravel-Integration ist nur eine bequeme Hülle darum.

## Probier es in fünf Minuten aus.

Ein Composer-Befehl, ein Skript, eine gültige E-Rechnung.

[**Anleitung in der Doku**](https://docs.quittio.dev/getting-started#without-laravel) [**Formate ansehen**](https://quittio.dev/formate)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://quittio.dev/#website","@type":"WebSite","description":"E-Rechnungen für PHP und Laravel: ZUGFeRD, XRechnung und Peppol erstellen, prüfen, lesen und archivieren.","inLanguage":"de-DE","name":"Quittio","url":"https://quittio.dev/","publisher":{"@id":"https://quittio.dev/#identity"},"workTranslation":{"@id":"https://quittio.dev/en#website"}},{"@id":"https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel#webpage","@type":"WebPage","dateModified":"2026-10-15","datePublished":"2026-10-15","description":"Quittio läuft in jedem PHP-8.3-Projekt: Symfony, Slim, Shopware-Plugin oder eigenes Framework. So installierst du den Kern und erzeugst ZUGFeRD und XRechnung.","name":"E-Rechnung mit PHP ohne Laravel: ZUGFeRD, XRechnung","url":"https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel","breadcrumb":{"@id":"https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel#breadcrumb"},"isPartOf":{"@id":"https://quittio.dev/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel"]}],"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/ratgeber/e-rechnung-mit-php-ohne-laravel#article","dateModified":"2026-10-15","datePublished":"2026-10-15","description":"Quittio läuft in jedem PHP-8.3-Projekt: Symfony, Slim, Shopware-Plugin oder eigenes Framework. So installierst du den Kern und erzeugst ZUGFeRD und XRechnung.","headline":"E-Rechnungen mit PHP erstellen, ganz ohne Laravel","inLanguage":"de-DE","thumbnailUrl":"https://quittio.dev/og/quittio-de.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/ratgeber/e-rechnung-mit-php-ohne-laravel#webpage"},"mainEntityOfPage":{"@id":"https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel#webpage"},"publisher":{"@id":"https://quittio.dev/#identity"}},{"@id":"https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel#breadcrumb","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"Startseite","item":"https://quittio.dev","position":1},{"@type":"ListItem","name":"Ratgeber","item":"https://quittio.dev/ratgeber","position":2},{"@type":"ListItem","name":"PHP ohne Laravel","position":3}]},{"@id":"https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel#/schema/question/1","@type":"Question","inLanguage":"de-DE","name":"Brauche ich Laravel für Quittio?","acceptedAnswer":{"@type":"Answer","text":"Nein. quittio/core hat keine Abhängigkeit zu Laravel und läuft in jeder Anwendung mit PHP 8.3 oder neuer. Laravel brauchst du nur für die Integration quittio/laravel und für Quittio Managed."}},{"@id":"https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel#/schema/question/2","@type":"Question","inLanguage":"de-DE","name":"Funktioniert Quittio mit Symfony, Slim, WordPress oder Shopware?","acceptedAnswer":{"@type":"Answer","text":"Ja, mit allem, was Composer-Pakete laden kann. Erzeuge die Quittio-Instanz einmal beim Start und registriere sie so, wie dein Framework Dienste verwaltet."}},{"@id":"https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel#/schema/question/3","@type":"Question","inLanguage":"de-DE","name":"Welches Paket installiere ich?","acceptedAnswer":{"@type":"Answer","text":"quittio/core und für Deutschland quittio/country-de. Das Paket quittio/quittio ist für Laravel-Projekte gedacht, weil es die Laravel-Integration mitbringt."}},{"@id":"https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel#/schema/question/4","@type":"Question","inLanguage":"de-DE","name":"Welche PHP-Erweiterungen brauche ich?","acceptedAnswer":{"@type":"Answer","text":"ctype, dom, gd, libxml, mbstring, xmlwriter und zlib; intl wird empfohlen. Für den offiziellen KoSIT-Validator (Prüfstufe L5) zusätzlich Java 17 oder Docker, für veraPDF (L6) veraPDF oder Docker."}},{"@id":"https://quittio.dev/ratgeber/e-rechnung-mit-php-ohne-laravel#/schema/question/5","@type":"Question","inLanguage":"de-DE","name":"Sind die Rechnungen ohne Laravel genauso gültig?","acceptedAnswer":{"@type":"Answer","text":"Ja. Datenmodell, Berechnung, Formate und Validierung stecken alle im Core. Die Laravel-Integration ist nur eine bequeme Hülle darum."}},{"@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":"de-DE","url":"https://quittio.dev/logo.png"},{"@id":"https://quittio.dev/#/schema/image/1","@type":"ImageObject","contentUrl":"https://quittio.dev/og/quittio-de.jpg","inLanguage":"de-DE","url":"https://quittio.dev/og/quittio-de.jpg"}]}
```