eInvoice Service fuer XRechnung und ZUGFeRD
Der Dienst ist fuer mehrere Mandanten und Nutzer ausgelegt. API-Zugriffe erfolgen ueber eine MySQL-gestuetzte Anmeldung mit Bearer-Token, werden mandantenbezogen autorisiert und revisionsnah protokolliert.
Der aktuelle Stand ist als validated markiert: XML-Erzeugung, serverseitige PDF-Normalisierung, Hybrid-PDF-Zusammenbau, Authentifizierung, Nutzungslogging und automatische Aufraeumung laufen zusammen.
Login
{
"tenant_key": "demo-tenant",
"username": "api-user",
"password": "..."
}
POST ?route=login liefert ein Bearer-Token. Dieses Token muss anschliessend im Header Authorization: Bearer ... fuer geschuetzte Routen mitgegeben werden. Als Fallback fuer Webserver, die diesen Header nicht an PHP durchreichen, wird auch X-Authorization: Bearer ... akzeptiert.
Geschuetzte Routen sind insbesondere generate, download, logout, whoami, preflight und cleanup.
Generate
{
"format": "zugferd",
"invoice": {
"document": {
"invoice_number": "RE-2026-0001",
"invoice_date": "2026-06-11",
"currency": "EUR",
"type_code": "380",
"buyer_reference": "04011000-12345-01",
"order_reference": "PO-7781",
"delivery_date": "2026-06-10",
"notes": [
{
"subject_code": "REG",
"content": "Danke fuer Ihren Auftrag."
}
]
},
"seller": {
"name": "Beispiel Lieferant GmbH",
"endpoint_id": "seller@example.de",
"endpoint_scheme": "EM",
"vat_id": "DE123456789",
"tax_number": "12/345/67890",
"legal_registration_id": "HRB 12345",
"postal_address": {
"street": "Musterstrasse 1",
"postal_code": "50667",
"city": "Koeln",
"country_code": "DE"
},
"contact": {
"person_name": "Erika Einkauf",
"email": "billing@example.de",
"phone": "+49 221 1234567"
}
},
"buyer": {
"name": "Beispiel Kunde AG",
"endpoint_id": "buyer@example.de",
"endpoint_scheme": "EM",
"vat_id": "DE987654321",
"legal_registration_id": "HRB 99887",
"postal_address": {
"street": "Hauptweg 5",
"postal_code": "10115",
"city": "Berlin",
"country_code": "DE"
},
"contact": {
"person_name": "Max Muster",
"email": "ap@example.de",
"phone": "+49 30 9876543"
}
},
"payment": {
"means_code": "58",
"due_date": "2026-06-25",
"terms": "14 Tage netto",
"iban": "DE12500105170648489890",
"bic": "INGDDEFFXXX",
"account_name": "Beispiel Lieferant GmbH"
},
"line_items": [
{
"position_id": "1",
"name": "Beratungsleistung",
"description": "Implementierung und Anpassung des Systems",
"quantity": 8,
"unit_code": "HUR",
"net_unit_price": 125.00,
"tax_rate": 19,
"tax_category_code": "S"
},
{
"position_id": "2",
"name": "Wartungspauschale",
"quantity": 1,
"unit_code": "C62",
"net_unit_price": 250.00,
"tax_rate": 19,
"tax_category_code": "S"
}
]
}
,
"validation": {
"xrechnung_version": "3.0.2",
"zugferd_version": "2.3.3",
"zugferd_profile": "EN16931"
}
}
POST ?route=generate akzeptiert application/json oder multipart/form-data. Die Antwort enthaelt immer den authentifizierten Mandanten- und Nutzerbezug sowie die Validator-Ergebnisse.