Zum Inhalt springen

ZUGFeRD-Rechnungen mit PHP und Laravel erstellen

Ein PDF für Menschen, ein XML für die Buchhaltung, beides in einer Datei. Quittio erzeugt ZUGFeRD als Standardformat.

Was ist ZUGFeRD / Factur-X?

ZUGFeRD (in Frankreich Factur-X) ist ein PDF/A-3, in das die Rechnung als CII-XML eingebettet ist. Menschen lesen das PDF, Software liest das XML. Beide zeigen dieselben Daten, weil Quittio sie aus einem Datenmodell erzeugt.

Für wen?

  • Rechnungen an Unternehmen in Deutschland und Frankreich
  • Empfänger, die ein lesbares PDF erwarten
  • Shops und SaaS-Produkte, die ein Format für alle wollen

So geht es mit Quittio

InvoiceService.php
use Quittio\Core\Builder\Party;
use Quittio\Laravel\Facades\Quittio;

$result = Quittio::invoice()
    ->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)
    ->render();                       // ZUGFeRD: PDF/A-3 mit eingebettetem XML

$result->pdf();
invoice.php
use Quittio\Core\Builder\InvoiceBuilder;
use Quittio\Core\Builder\Party;
use Quittio\Core\Quittio;
use Quittio\Core\Tax\CountryDefaultVat;
use Quittio\Country\DE\CountryDE;

// einmal beim Start: Länderpaket und Standard-USt
$quittio = Quittio::create([], [new CountryDE]);
InvoiceBuilder::useDefaultVat(new CountryDefaultVat($quittio->countries()));

$invoice = InvoiceBuilder::make()
    ->seller($company)   // Verkäufer und Bank im Code
    ->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);

$result = $quittio->make($invoice)->render();   // ZUGFeRD: PDF/A-3 mit eingebettetem XML

$result->pdf();

Ohne Laravel brauchst du nur quittio/core und quittio/country-de. Das ganze Skript steht im Ratgeber E-Rechnungen mit PHP, ganz ohne Laravel.

Geprüft mit: KoSIT-Validator (EN 16931) für das XML, veraPDF für PDF/A-3b

Beispieldatei: RE-2026-0042.pdf

Profile und Varianten

  • MINIMUMkeine E-Rechnung im Sinne des UStG
  • BASIC WLkeine E-Rechnung im Sinne des UStG
  • BASIC
  • EN 16931empfohlen
  • EXTENDED
  • XRECHNUNG

Häufige Fragen zu ZUGFeRD / Factur-X

ZUGFeRD oder XRechnung?

Für Unternehmen ist ZUGFeRD im Profil EN 16931 meist die bequemste Wahl, weil Empfänger ein lesbares PDF bekommen. Bundesbehörden verlangen XRechnung.

Welche Profile gelten als E-Rechnung?

BASIC, EN 16931, EXTENDED und XRECHNUNG. MINIMUM und BASIC WL enthalten zu wenige Angaben und gelten in Deutschland nicht als E-Rechnung.

Muss ich mich um PDF/A-3 kümmern?

Nein. Quittio erzeugt das PDF/A-3b mit eingebettetem XML und den nötigen Metadaten. veraPDF prüft es, lokal oder in deiner CI. In der CI von Quittio selbst prüft veraPDF die ZUGFeRD-PDFs aller EN-16931-Szenarien.

Ab wann welche Rechnung Pflicht ist, steht im Ratgeber zur E-Rechnungspflicht.