Zum Inhalt springen
E-Rechnungs-Bridge

API: E-Rechnung in Ihre Software integrieren

Die REST-API nimmt Rechnungen als PDF, XML oder JSON entgegen, prüft sie mit deterministischen Regeln und den offiziellen Validatoren und liefert XRechnung (UBL/CII) oder ZUGFeRD zurück. Authentifizierung per API-Key mit Scopes, Fehler nach RFC 9457, Beträge als Dezimal-Strings, asynchrone Verarbeitung mit Job-Status und Webhooks.

Endpunkte (Auszug)

MethodePfadZweck
POST/api/v1/invoicesRechnungsdatei hochladen (multipart), Richtung und Zielprofil; 202 mit Job-ID
GET/api/v1/invoices/{id}Rechnung mit Erkennung, Daten, Findings, Pflichtfeldern, Konvertierungen, Dateien
PATCH/api/v1/invoices/{id}/dataDaten korrigieren (neue Revision, If-Match/ETag)
POST/api/v1/invoices/{id}/validationsValidierung starten (intern + KoSIT/Mustang)
POST/api/v1/invoices/{id}/conversionsXRechnung UBL/CII oder ZUGFeRD erzeugen
GET/api/v1/files/{id}/downloadDatei herunterladen, SHA-256 im Header
POST/api/v1/validateZustandslose Prüfung ohne Speicherung
GET/api/v1/jobs/{id}Auftragsstatus
POST/api/v1/organization/webhooksWebhook anlegen (HMAC-Signatur, Retry mit Backoff)
GET/api/v1/organization/usageVerbrauch und Kontingent
POST/api/v1/public/validateÖffentlicher Validator (ohne Key, Rate-Limit je IP)

Vollständige Referenz: interaktive Dokumentation und OpenAPI 3.

Beispiel: Rechnung hochladen und konvertieren

curl -X POST https://api.159-195-246-21.sslip.io/api/v1/invoices \
  -H "Authorization: Bearer erb_live_..." \
  -H "Idempotency-Key: rechnung-2026-0815" \
  -F "file=@Rechnung-2026-0815.pdf" \
  -F "direction=outbound" -F "target_profile=xrechnung_ubl"

# → 202 {"id":"inv_...","processing_state":"received","job_id":"job_..."}

curl -X POST https://api.159-195-246-21.sslip.io/api/v1/invoices/inv_.../conversions \
  -H "Authorization: Bearer erb_live_..." \
  -H "Content-Type: application/json" \
  -d '{"format":"xrechnung_ubl"}'

Grundsätze

  • Beträge und Mengen sind Strings mit Dezimalpunkt, nie Fließkommazahlen.
  • Uploads sind idempotent (Header Idempotency-Key); Korrekturen nutzen If-Match mit ETag.
  • Fehler kommen als application/problem+json mit Code, Feld und deutschem Klartext; die Codes sind unter Fehlercodes dokumentiert.
  • Zugriff auf fremde Mandantendaten liefert 404, nie 403.
  • Rate Limits werden über RateLimit-Limit, RateLimit-Remaining und Retry-After kommuniziert.
  • Webhook-Ereignisse: invoice.received, invoice.needs_review, invoice.ready, invoice.failed, validation.completed, conversion.completed, delivery.*; Payloads sind HMAC-signiert.

Häufige Fragen

Gibt es Test-Keys?
Ja. Keys mit Präfix erb_test_ laufen gegen dieselbe API ohne Abrechnung. API-Zugang ist ab Tarif Business enthalten.
Kann ich das Rechnungsmodell als JSON senden?
Ja, das interne Modell nach EN 16931 wird als JSON akzeptiert; dann entfällt die PDF-Extraktion.
Wie lange werden Dateien vorgehalten?
Tarifabhängig 30 bis 365 Tage, danach endgültige Löschung. Die API ist kein Archiv.

Für Softwarehersteller

Volumenpreise, White-Label, technischer Ansprechpartner.

Kein Zahlungsmittel nötig. 5 Rechnungen im Monat kostenlos.