Was die API kann
Mit der eRechnify-API erzeugen Sie gültige E-Rechnungen direkt aus Ihrer eigenen Software, Ihrem Shop oder einem Skript, ohne selbst Formate wie CII, UBL oder PDF/A-3 umsetzen zu müssen. Sie schicken die Rechnungsdaten als JSON und bekommen eine fertige Datei zurück:
- ZUGFeRD-PDF mit XRechnung 3.0 (PDF/A-3 mit eingebettetem XML, lesbar für Menschen und Maschinen)
- Reines XRechnung-XML (CII-Syntax, z. B. für Behörden)
- ZUGFeRD EN 16931 als PDF
Jede Rechnung wird vor der Rückgabe mit Mustang gegen EN 16931 und die XRechnung-Regeln der KoSIT geprüft. Ist etwas ungültig, erhalten Sie statt einer Datei eine Liste verständlicher Fehlermeldungen auf Deutsch. Die API ist kostenlos, braucht keinen Schlüssel und speichert keine Rechnungsdaten.
Rechnung erzeugen: POST /api/create
Senden Sie eine POST-Anfrage mit Content-Type: application/json an https://erechnify.de/api/create. Antwort bei Erfolg: die Datei (application/pdf oder application/xml, HTTP 200). Bei Fehlern: HTTP 400 oder 422 mit {"errors": ["…"]}.
curl -X POST https://erechnify.de/api/create \
-H "Content-Type: application/json" \
-o rechnung.pdf \
-d '{
"profile": "XRECHNUNG", "format": "pdf",
"number": "RE-2026-042", "issueDate": "2026-10-19", "dueDate": "2026-11-02",
"paymentTerms": "Zahlbar innerhalb von 14 Tagen ohne Abzug.",
"seller": { "name": "Muster GmbH", "contactName": "Max Muster", "street": "Hauptstr. 1",
"zip": "10115", "city": "Berlin", "country": "DE",
"email": "rechnung@muster.de", "phone": "+49 30 123456", "vatId": "DE123456789" },
"buyer": { "name": "Kunde AG", "street": "Marktplatz 5", "zip": "80331", "city": "München",
"country": "DE", "email": "buchhaltung@kunde.de" },
"iban": "DE02120300000000202051",
"lines": [
{ "name": "Beratung", "quantity": 8, "unit": "HUR", "unitPrice": 85, "vatRate": 19 },
{ "name": "Fachbuch", "quantity": 1, "unit": "C62", "unitPrice": 29.9, "vatRate": 7 }
]
}'
Alle Felder
| Feld | Pflicht | Bedeutung |
|---|---|---|
profile | XRECHNUNG (Standard) oder EN16931 | |
format | pdf (Standard, ZUGFeRD) oder xml | |
number, issueDate | ja | Rechnungsnummer, Rechnungsdatum (JJJJ-MM-TT) |
deliveryDate, dueDate | Leistungsdatum, Fälligkeit | |
buyerReference | bei Behörden | Leitweg-ID bzw. Käuferreferenz |
orderReference, paymentTerms, note | Bestellnummer, Zahlungsbedingungen, Hinweistext | |
seller | ja | name, street, zip, city, country, email, phone, vatId oder taxNumber, optional contactName |
buyer | ja | name, street, zip, city, country, email (bei XRechnung Pflicht), optional vatId, contactName |
iban, bic | Bankverbindung für die Überweisung | |
lines[] | ja | name, quantity (darf negativ sein, nicht 0), unitPrice (netto, nicht negativ), vatRate (19, 7 oder 0), unit (UN/ECE-Code, z. B. C62 Stück, HUR Stunde, DAY, MON, LS Pauschale), optional description |
exemptionReason, zeroCategory | bei 0 % | Begründung und Kategorie für 0 %: E steuerbefreit (auch Kleinunternehmer § 19), AE Reverse Charge, K EU-Lieferung, G Ausfuhr |
discountPercent, discountReason | Rabatt in % auf die ganze Rechnung | |
prepaid | bereits bezahlter Betrag (brutto), z. B. Abschläge | |
accent, logo | Farbe der PDF (#RRGGBB), Logo als data:image/png;base64,… (max. ca. 400 KB) |
E-Rechnungen prüfen und anzeigen
Prüfen: POST https://erechnify.de/api/validate?name=datei.pdf mit der Datei als Rohdaten im Body. Antwort: {"valid": true|false, "errors": [...], "profile": "…"}. Die Fehler sind auf Deutsch erklärt, die Regel-ID steht in Klammern.
Anzeigen: POST https://erechnify.de/api/view mit XML oder ZUGFeRD-PDF im Body liefert eine lesbare HTML-Ansicht der Rechnung.
curl -X POST --data-binary @rechnung.pdf "https://erechnify.de/api/validate?name=rechnung.pdf"
Beispiele in PHP, JavaScript und Python
// PHP (WordPress: wp_remote_post funktioniert genauso)
$res = file_get_contents('https://erechnify.de/api/create', false, stream_context_create(['http' => [
'method' => 'POST', 'header' => "Content-Type: application/json\r\n",
'content' => json_encode($rechnung), 'ignore_errors' => true, 'timeout' => 60,
]]));
file_put_contents('rechnung.pdf', $res);
// JavaScript (Node 18+)
const res = await fetch('https://erechnify.de/api/create', {
method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(rechnung),
});
if (!res.ok) console.error((await res.json()).errors);
else require('fs').writeFileSync('rechnung.pdf', Buffer.from(await res.arrayBuffer()));
# Python
import requests
r = requests.post('https://erechnify.de/api/create', json=rechnung, timeout=60)
open('rechnung.pdf', 'wb').write(r.content) if r.ok else print(r.json()['errors'])
Fair Use, Datenschutz und Grenzen
- Kostenlos und ohne Schlüssel. Bitte maßvoll nutzen: etwa 20 Anfragen pro Minute und IP-Adresse. Für größere Mengen schreiben Sie uns an kontakt@erechnify.de.
- Keine Speicherung. Rechnungsdaten werden nur im Arbeitsspeicher verarbeitet und nach der Antwort verworfen. Es gibt keine Protokollierung der Inhalte.
- Keine Garantie. Die API ist ein kostenloser Dienst ohne zugesicherte Verfügbarkeit. Prüfen Sie Steuersätze und Angaben selbst; die API ersetzt keine Steuerberatung.
- Nur Rechnungen (Typ 380). Gutschriften und Korrekturrechnungen mit eigenen Dokumentcodes sind derzeit nicht vorgesehen.