# E-Rechnung API: XRechnung, ZUGFeRD und Peppol BIS per REST erzeugen, prüfen, lesen

Source: https://veriport.io/guides/e-rechnung-api (published 2026-10-28)

Eine E-Rechnung-API nimmt Rechnungsdaten als JSON an und liefert die Datei zurück, die der Empfänger maschinell verarbeiten kann und die § 14 UStG als E-Rechnung anerkennt: eine XRechnung (UBL oder CII), eine ZUGFeRD-/Factur-X-PDF oder eine Peppol-BIS-Rechnung. Veriport tut drei Dinge über HTTPS: `POST /einvoice/create` schreibt die Datei aus einem JSON-Modell und prüft sie vor der Auslieferung gegen Schema und die veröffentlichten Regeln; `POST /einvoice/validate` prüft jede empfangene E-Rechnung; `POST /einvoice/parse` liest sie in dasselbe JSON oder in eine lesbare PDF zurück. Versendet wird nichts, gespeichert wird nichts.

- Fristen (§ 14 UStG, Wachstumschancengesetz): Empfang von E-Rechnungen für jedes inländische Unternehmen seit dem 1. Januar 2025; Ausstellung ab 1. Januar 2027 für Unternehmen mit mehr als 800.000 € Vorjahresumsatz, ab 1. Januar 2028 für alle. Eine PDF per E-Mail ist ab dann keine E-Rechnung mehr.
- Kosten: eine erzeugte Rechnung wiegt 20 Aufrufe, eine Prüfung oder ein Einlesen 5; 4 Prüfungen am Tag ohne Schlüssel, 100 Aufrufe im Monat mit einem kostenlosen Schlüssel, danach Pakete ab $9. Abgelehnte Anfragen kosten nichts.
- Belegt: Jede Beispieldatei der Prüfreihe hat der KoSIT-Validator (XRechnung und Peppol), veraPDF (PDF/A-3) und Mustang (ZUGFeRD) angenommen; der eingebaute Validator nennt auf allen Dateien dieselben Regel-IDs wie die KoSIT (Tabelle auf der Produktseite).
- Nichts wird stillschweigend weggelassen: Ein Feld, das v1 nicht schreibt, wird mit 422 `einvoice_unsupported` abgelehnt und beim Namen genannt; eine verletzte Regel mit 422 `einvoice_invalid` und Regel-ID.

## Was muss eine E-Rechnung-API können?

Vier Dinge, die eine PDF-Vorlage nicht kann. Erstens die Formate: XRechnung für deutsche Behörden und viele Unternehmen, ZUGFeRD / Factur-X für den Rechnungsempfänger, der weiter ein PDF sehen will, Peppol BIS für das Peppol-Netz (in Belgien seit 2026 Pflicht zwischen Unternehmen). Zweitens die Prüfung vor dem Versand: Eine Datei, die BR-DE-15 oder PEPPOL-EN16931-R010 verletzt, wird vom Portal oder vom Zugangspunkt abgewiesen. Drittens den Empfang: eine erhaltene E-Rechnung lesen, prüfen und in die eigene Buchhaltung übernehmen. Viertens die Ehrlichkeit über Grenzen: welche Felder geschrieben werden, welche nicht, und was die API nicht tut (versenden, archivieren).

## Die drei Aufrufe

| Aufruf | Sie senden | Sie erhalten | Kosten |
|---|---|---|---|
| `POST /einvoice/create` | Rechnung als JSON (`InvoiceInput`, Format `xrechnung-ubl`, `xrechnung-cii`, `zugferd` oder `peppol-bis`) | Die Datei (XML oder PDF/A-3) mit ihrem Prüfbericht im Header `Veriport-Validation`; mit `?envelope=json` Datei, Bericht und ergänzte Werte als JSON | 20 Aufrufe |
| `POST /einvoice/validate` | Eine XML-Datei oder eine ZUGFeRD-/Factur-X-PDF | Gültig oder nicht, Profil, jede Meldung mit Regel-ID, Schweregrad, XPath, Text | 5 Aufrufe; ohne Schlüssel 4 am Tag |
| `POST /einvoice/parse` | Eine empfangene E-Rechnung | Dasselbe JSON wie bei `create`, plus `notInJson`; mit `?as=pdf` eine lesbare PDF | 5 Aufrufe |

## Ein Beispiel: XRechnung erzeugen

Die Rechnungsdaten folgen den Geschäftsbegriffen der EN 16931; Summen und Steueraufschlüsselung rechnet die API aus den Positionen. Mit `Idempotency-Key` liefert eine Wiederholung dieselbe Datei, ohne zweite Berechnung.

```json
{
  "format": "xrechnung-ubl",
  "number": "2026-017",
  "issueDate": "2026-10-20",
  "paymentTermsDays": 14,
  "buyerReference": "EK-2026-0345",
  "deliveryDate": "2026-10-15",
  "seller": {
    "name": "Lena Hartmann — Webdesign",
    "address": {
      "street": "Lindenstraße 14",
      "postalCode": "10969",
      "city": "Berlin",
      "countryCode": "DE"
    },
    "vatId": "DE136695976",
    "contact": {
      "name": "Lena Hartmann",
      "phone": "+49 30 1234567",
      "email": "rechnung@hartmann-webdesign.example"
    }
  },
  "buyer": {
    "name": "Mustermann Maschinenbau GmbH",
    "address": {
      "street": "Industrieweg 7",
      "postalCode": "70565",
      "city": "Stuttgart",
      "countryCode": "DE"
    },
    "contact": {
      "email": "buchhaltung@mustermann.example"
    }
  },
  "payment": {
    "iban": "DE02120300000000202051"
  },
  "lines": [
    {
      "name": "Relaunch Website, Konzeption und Umsetzung",
      "quantity": 24,
      "unitCode": "HUR",
      "unitPrice": 95,
      "vat": {
        "category": "S",
        "rate": 19
      }
    },
    {
      "name": "Lizenz Bildmaterial",
      "quantity": 1,
      "unitCode": "C62",
      "unitPrice": 128.4,
      "vat": {
        "category": "S",
        "rate": 19
      }
    }
  ]
}
```

```bash
curl -X POST "https://veriport.io/api/v1/einvoice/create" \
  -H "Authorization: Bearer vp_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 2026-017" \
  -D headers.txt -o xrechnung.xml \
  -d @invoice.json
```

## Was die API nicht tut

- Kein Versand: die API erzeugt und prüft Dateien, sie übermittelt nichts (kein Peppol-Zugangspunkt, keine E-Mail an den Empfänger).
- Keine Speicherung: Eingabe und Datei existieren nur während der Anfrage; die GoBD-konforme Archivierung bleibt beim Rechnungssteller.
- Keine Steuerberatung: die Datei enthält die Angaben, die Sie senden; welche Steuerkategorie gilt, entscheidet der Rechnungssteller.
- Version 1 schreibt: Euro, Verkäufer in Deutschland, Käufer in einem EU-Mitgliedstaat, Kategorien S, Z, E, AE und K, Rechnung 380, Gutschrift 381, Rechnungskorrektur 384, Überweisung, bis 500 Positionen, Nachlässe und Zuschläge auf Belegebene. Anhänge, Anzahlungen, Positionszeiträume, Artikelnummern und Lastschrift werden mit `einvoice_unsupported` abgelehnt, nie stillschweigend weggelassen.

## Was kostet eine E-Rechnung per API?

20 Aufrufe je erzeugter Rechnung: mit dem 10.000er-Paket ($29) sind das 500 Rechnungen, also knapp 6 Cent je Rechnung; mit dem 2.000er-Paket ($9) 100 Rechnungen zu 9 Cent. Anbieter, die auch versenden (Peppol-Zugangspunkte), nehmen 18 bis 30 Cent je Dokument inklusive Übermittlung; der Vergleich steht datiert auf der [Produktseite](/einvoice-api). 100 kostenlose Aufrufe im Monat sind fünf Rechnungen oder zwanzig Prüfungen.

## Questions

### Versendet die API die E-Rechnung an den Empfänger?

Nein. Sie erzeugt und prüft die Datei; den Versand übernehmen Sie (E-Mail, Portal-Upload bei Behörden: ZRE, OZG-RE oder Landesportal) oder ein Peppol-Zugangspunkt. Veriport ist kein Zugangspunkt.

### Genügt eine ZUGFeRD-PDF als E-Rechnung nach § 14 UStG?

Ja, ab dem Profil EN 16931 (bei ZUGFeRD « COMFORT »); die Profile MINIMUM und BASIC WL genügen nicht. Die API schreibt das Profil EN 16931.

### Kann ich erhaltene E-Rechnungen damit verarbeiten?

Ja: `validate` sagt, ob die Datei gültig ist, `parse` liefert die Rechnungsdaten als JSON für die Buchhaltung und, mit `?as=pdf`, eine lesbare Kopie. Der kostenlose [E-Rechnungs-Viewer](/tools/einvoice-viewer) tut dasselbe im Browser.

### Gibt es ein SDK?

Die TypeScript- und Python-Clients mit `createEInvoice`, `validateEInvoice` und `parseEInvoice` liegen im öffentlichen SDK-Repository; die Veröffentlichung auf npm und PyPI ist ein Schritt des Betreibers und wird im Changelog angekündigt.

## Read next

- [Die E-Rechnungs-API: Formate, Belege, Preise (Englisch)](https://veriport.io/einvoice-api)
- [XRechnung erstellen per API](https://veriport.io/guides/xrechnung-erstellen-api)
- [ZUGFeRD erstellen per API](https://veriport.io/guides/factur-x-zugferd-generieren-api)
- [XRechnung prüfen und validieren](https://veriport.io/guides/xrechnung-pruefen-validieren)
- [Kleinunternehmer und E-Rechnung](https://veriport.io/guides/kleinunternehmer-e-rechnung)

## Sources

- § 14 UStG (Ausstellung von Rechnungen): the e-invoice for domestic B2B supplies, receipt since 1 January 2025, issue from 1 January 2027 (turnover above €800,000) and 1 January 2028 — https://www.gesetze-im-internet.de/ustg_1980/__14.html (2026-10-28)
- XRechnung — the German CIUS of EN 16931 (standard, versions and bundles; version 3.0.2 in force) — https://xeinkauf.de/xrechnung/ (2026-10-28)
- ZUGFeRD 2.x (identical to Factur-X 1.0; the EN 16931 profile is « COMFORT ») — https://www.ferd-net.de/standards/zugferd (2026-10-28)
- Peppol BIS Billing 3.0 — specification, identifiers, code lists and rules — https://docs.peppol.eu/poacc/billing/3.0/ (2026-10-28)
- KoSIT validator (the reference validator for XRechnung), release 1.6.3 — https://github.com/itplr-kosit/validator (2026-10-28)
- Recommand — pricing (certified Peppol access point with an API): 25 documents free then €0.30; €29 a month for 200 (€0.20 each above); €99 for 1,000 — https://recommand.eu/en/pricing (2026-10-28)
- e-invoice.be — Peppol invoice generator and pricing: Pro from €0.25 per invoice, Enterprise from €0.18 — https://e-invoice.be/peppol-invoice-generator (2026-10-28)
