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)
| Methode | Pfad | Zweck |
|---|---|---|
POST | /api/v1/invoices | Rechnungsdatei 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}/data | Daten korrigieren (neue Revision, If-Match/ETag) |
POST | /api/v1/invoices/{id}/validations | Validierung starten (intern + KoSIT/Mustang) |
POST | /api/v1/invoices/{id}/conversions | XRechnung UBL/CII oder ZUGFeRD erzeugen |
GET | /api/v1/files/{id}/download | Datei herunterladen, SHA-256 im Header |
POST | /api/v1/validate | Zustandslose Prüfung ohne Speicherung |
GET | /api/v1/jobs/{id} | Auftragsstatus |
POST | /api/v1/organization/webhooks | Webhook anlegen (HMAC-Signatur, Retry mit Backoff) |
GET | /api/v1/organization/usage | Verbrauch 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 nutzenIf-Matchmit ETag. - Fehler kommen als
application/problem+jsonmit 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-RemainingundRetry-Afterkommuniziert. - Webhook-Ereignisse: invoice.received, invoice.needs_review, invoice.ready, invoice.failed, validation.completed, conversion.completed, delivery.*; Payloads sind HMAC-signiert.
Häufige Fragen
- Ja. Keys mit Präfix erb_test_ laufen gegen dieselbe API ohne Abrechnung. API-Zugang ist ab Tarif Business enthalten.
- Ja, das interne Modell nach EN 16931 wird als JSON akzeptiert; dann entfällt die PDF-Extraktion.
- Tarifabhängig 30 bis 365 Tage, danach endgültige Löschung. Die API ist kein Archiv.
Gibt es Test-Keys?
Kann ich das Rechnungsmodell als JSON senden?
Wie lange werden Dateien vorgehalten?
Für Softwarehersteller
Volumenpreise, White-Label, technischer Ansprechpartner.
Kein Zahlungsmittel nötig. 5 Rechnungen im Monat kostenlos.