Zum Inhalt springen
Invoapi
REST-API · ZUGFeRD 2.5 · Factur-X

ZUGFeRD APIZUGFeRD-PDF und Factur-X per REST-API

Die ZUGFeRD API von invoapi erzeugt aus JSON ein hybrides ZUGFeRD-PDF: ein PDF/A-3 mit Ihrem Logo und Design, in dem die Rechnungsdaten als XML eingebettet sind. Jede Rechnung ist dreifach geprüft — XML-Regeln, ZUGFeRD-Profil und PDF/A-3.

100 Rechnungen kostenlos · ohne Kreditkarte · Server in Deutschland

Was die ZUGFeRD API für Sie erledigt

Ein ZUGFeRD-PDF selbst zu bauen heißt: Rechnung rendern, nach PDF/A-3 konvertieren, Schriften einbetten, CII-XML erzeugen, als factur-x.xml mit den richtigen XMP-Metadaten anhängen — und am Ende alles prüfen. Die ZUGFeRD API erledigt jeden dieser Schritte in einem Aufruf.

  • ZUGFeRD 2.5.2 / Factur-X als PDF/A-3 oder als reines CII-XML
  • Profile EN 16931 (Standard), BASIC, EXTENDED und XRECHNUNG
  • Eigenes Logo, Akzentfarbe, Schrift und vier Layouts für das sichtbare PDF
  • Summen und Umsatzsteuer werden berechnet, Bild und XML stimmen immer überein
  • Dreifache Prüfung: KoSIT-Validator, veraPDF und ZUGFeRD-Profilregeln (Mustang)
  • Eingehende ZUGFeRD-PDFs prüfen und als JSON auslesen

ZUGFeRD-PDF per API erstellen: das erste Beispiel

Mit format zugferd und output pdf liefert der Endpunkt /api/v1/generate das fertige PDF als Base64. Ohne output pdf erhalten Sie nur das CII-XML — praktisch, wenn Sie das XML in ein eigenes System übernehmen.

Anfrage
curl -X POST https://api.invoapi.de/api/v1/generate \
  -H "Authorization: Bearer $INVOAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "format": "zugferd",
    "profile": "en16931",
    "output": "pdf",
    "invoice": {
      "invoice_number": "RE-2026-0042",
      "issue_date": "2026-11-02",
      "due_date": "2026-12-02",
      "currency": "EUR",
      "buyer_reference": "PO-7781",
      "seller": {
        "name": "Muster GmbH", "vat_id": "DE123456789",
        "email": "rechnung@muster.de", "phone": "+49 30 1234567",
        "street": "Musterstraße 1", "postal_code": "10115",
        "city": "Berlin", "country_code": "DE"
      },
      "buyer": {
        "name": "Beispiel GmbH", "email": "kreditoren@beispiel.de",
        "street": "Teststraße 10", "postal_code": "20095",
        "city": "Hamburg", "country_code": "DE"
      },
      "items": [
        { "name": "IT-Beratung", "quantity": 8, "unit": "HUR",
          "unit_price": 120, "vat_rate": 19 }
      ],
      "payment": { "means_code": "58", "iban": "DE02120300000000202051" }
    }
  }'

Die Antwort aus einem echten Aufruf (gekürzt). Das PDF ist rund 50 KB groß und besteht alle drei Prüfungen:

Antwort
{
  "success": true,
  "format": "zugferd",
  "version": "2.5.2",
  "profile": "en16931",
  "valid": true,
  "totals": { "net": "960.00", "tax": "182.40", "payable": "1142.40", "currency": "EUR" },
  "validation": {
    "status": "valid",
    "rule_sets": [
      "Schematron rules for EN16931 (CII)",
      "PDF/A-3 conformance (veraPDF)",
      "ZUGFeRD / Factur-X profile rules (Mustang)"
    ]
  },
  "document": {
    "filename": "RE-2026-0042.pdf",
    "mime_type": "application/pdf",
    "content_base64": "JVBERi0xLjcK…"
  }
}

ZUGFeRD-Profile: welches Sie brauchen

ZUGFeRD kennt mehrere Profile, die sich im Umfang der XML-Daten unterscheiden. Nicht jedes Profil gilt als E-Rechnung im Sinne der E-Rechnungspflicht. Sie wählen das Profil mit dem Parameter profile; ohne Angabe nimmt die API EN 16931.

ProfilParameterGilt als E-RechnungWofür
MINIMUM—neinnur Buchungshilfe; die API erzeugt es nicht
BASIC WL—neinohne Positionen; die API erzeugt es nicht
BASICbasicjaeinfache Rechnungen mit Positionen
EN 16931en16931jaStandard für B2B in Deutschland (voreingestellt)
EXTENDEDextendedjazusätzliche Angaben über die Norm hinaus
XRECHNUNGxrechnungjaXRechnung-Regeln, eingebettet im PDF

Mehr zu den Unterschieden: ZUGFeRD-Profile erklärt.

Ihr Rechnungsdesign im ZUGFeRD-PDF

Das sichtbare PDF ist die Rechnung, die Ihr Kunde liest — es soll nach Ihnen aussehen. Logo und Gestaltung geben Sie im selben Aufruf mit; die API setzt sie in eines von vier Layouts. Weil die API Bild und XML aus denselben Daten erzeugt, können die Beträge im PDF nie von den XML-Daten abweichen.

Logo und Design im Aufruf
{
  "format": "zugferd",
  "output": "pdf",
  "logo": "data:image/png;base64,iVBORw0KGgo…",
  "design": {
    "layout": "split",
    "accent_color": "#1f4e8c",
    "font": "sans",
    "logo_position": "right",
    "language": "de",
    "intro_text": "Vielen Dank für Ihren Auftrag.",
    "footer_text": "Muster GmbH · Amtsgericht Berlin HRB 12345"
  },
  "invoice": { … }
}

Das Logo ist ein PNG oder JPEG bis 512 KB. Weitere Gestaltungsfelder — Kopfzeilenfarbe, Schriftgröße, Unterschrift, Bezahlt-Stempel — beschreibt die API-Dokumentation.

Dreifach geprüft, bevor das PDF Ihr Haus verlässt

  1. Schritt 1

    XML gegen die EN 16931

    Der KoSIT-Validator prüft das eingebettete CII-XML gegen Schema und Schematron der europäischen Norm.
  2. Schritt 2

    ZUGFeRD-Profilregeln

    Die Profilregeln der Mustang-Bibliothek prüfen, ob das XML zum angegebenen Profil passt und korrekt eingebettet ist.
  3. Schritt 3

    PDF/A-3 mit veraPDF

    veraPDF, die Referenzprüfung der PDF Association, bestätigt das Archivformat PDF/A-3 samt Metadaten.
  4. Schritt 4

    Ergebnis mit Befunden

    Nur wenn alle Prüfungen bestehen, steht valid auf true. Sonst nennt jeder Befund Regel, Feld und Lösungsvorschlag.

ZUGFeRD oder XRechnung?

Beide erfüllen die E-Rechnungspflicht. ZUGFeRD ist die bessere Wahl, wenn Ihr Kunde die Rechnung auch ansehen will und kein E-Rechnungssystem hat; die XRechnung verlangen vor allem öffentliche Auftraggeber. Mit der API müssen Sie sich nicht festlegen: dieselben Daten ergeben beide Formate, und /convert wandelt eine XRechnung in ein ZUGFeRD-PDF um.

ZUGFeRD / Factur-XXRechnung
DateiPDF/A-3 mit eingebettetem XMLreines XML
Für Menschen lesbarja, als normales PDFnur mit Viewer
Typische EmpfängerUnternehmenBehörden, Peppol
SyntaxCIIUBL oder CII
API-Aufruf"format": "zugferd""format": "xrechnung"

ZUGFeRD API mit Python und PHP

Die offiziellen Pakete nehmen Ihnen Base64, Wiederholungen und Fehlerbehandlung ab. Jede andere Sprache spricht die REST-API direkt an.

Python · pip install invoapi
import invoapi

client = invoapi.Client()   # liest INVOAPI_API_KEY
pdf = client.generate(daten, format="zugferd", output="pdf", profile="en16931")

if pdf.is_valid:
    pdf.save()              # RE-2026-0042.pdf
PHP · composer require invoapi/invoapi-php
$invoapi = new Invoapi\Client(getenv('INVOAPI_API_KEY'));
$pdf = $invoapi->generate($daten, format: 'zugferd', output: 'pdf', profile: 'en16931');

$pdf->saveTo('RE-2026-0042.pdf');   // PDF/A-3 mit factur-x.xml

Ohne Code: WooCommerce-Plugin (ZUGFeRD zu jeder Bestellung) und n8n. Einzelne Dateien prüfen Sie im ZUGFeRD-Validator.

Häufige Fragen zur ZUGFeRD API

Was ist eine ZUGFeRD API?
Eine ZUGFeRD API erzeugt per Programmierschnittstelle ZUGFeRD-Rechnungen: ein PDF/A-3, das für Menschen lesbar ist und zugleich die strukturierten Rechnungsdaten als XML-Datei enthält. Bei invoapi schicken Sie die Rechnungsdaten als JSON und erhalten das fertige, geprüfte ZUGFeRD-PDF zurück.
Ist ZUGFeRD dasselbe wie Factur-X?
Ja, seit ZUGFeRD 2.1 sind beide technisch identisch: Factur-X ist der französische Name desselben deutsch-französischen Standards. Die API erzeugt ZUGFeRD 2.5.2; die eingebettete Datei heißt factur-x.xml. Die ZUGFeRD API ist damit zugleich eine Factur-X API.
Welches ZUGFeRD-Profil soll ich verwenden?
Für Rechnungen an Unternehmen in Deutschland ist das Profil EN 16931 (früher COMFORT) die sichere Wahl und deshalb voreingestellt. EXTENDED brauchen Sie nur für Angaben, die die Norm nicht kennt, XRECHNUNG für Empfänger, die eine XRechnung im PDF erwarten. MINIMUM und BASIC WL erfüllen die Anforderungen an eine E-Rechnung nicht und werden nicht erzeugt.
Ist ein ZUGFeRD-PDF eine gültige E-Rechnung nach der E-Rechnungspflicht?
Ja, wenn das Profil mindestens BASIC ist und die XML-Daten der Norm EN 16931 entsprechen. Maßgeblich sind die XML-Daten, nicht das sichtbare PDF. Die API prüft genau diese Daten mit dem KoSIT-Validator und zusätzlich die PDF/A-3-Konformität mit veraPDF.
Kann ich mein eigenes Rechnungsdesign verwenden?
Ja, innerhalb fester Layouts: Logo, Akzentfarbe, Schrift, Logo-Position, Einleitungs-, Schluss- und Fußzeilentext sowie vier Layouts (standard, bold, split, boxed). Das sichtbare PDF erzeugt die API selbst, damit Bild und XML immer dieselben Zahlen zeigen.
Kann die API eingehende ZUGFeRD-Rechnungen prüfen und auslesen?
Ja. /validate prüft ein ZUGFeRD-PDF vollständig — XML-Regeln, Profil und PDF/A-3 — und /parse liest die eingebetteten Daten als JSON aus, etwa für die automatische Buchung in Ihrem System.
Was kostet die ZUGFeRD API?
Die ersten 100 Rechnungen sind kostenlos, ohne Kreditkarte. Danach ab 24 € im Monat für 500 Rechnungen (zzgl. USt.), monatlich kündbar. PDF und XML kosten gleich viel; jede Rechnung zählt einmal.

Weiterlesen

Ihr erstes ZUGFeRD-PDF per API

Kostenloses Konto anlegen, API-Schlüssel kopieren, Beispiel ausführen — mit Ihrem Logo in wenigen Minuten.

ZUGFeRD API: ZUGFeRD-PDF und Factur-X per REST-API erstellen · Invoapi