Core API

Invoice Creator API

Erstelle XRechnung und ZUGFeRD-Rechnungen aus strukturierten JSON-Daten. Validierung und PDF-Generierung inklusive.

POST/v1/invoices

Beispiel

bash
1curl -X POST https://api.xhub.io/v1/invoices \
2 -H "Authorization: Bearer xhub_live_abc123..." \
3 -H "Content-Type: application/json" \
4 -d '{
5 "format": "xrechnung-3.0",
6 "invoiceNumber": "RE-2025-001",
7 "issueDate": "2025-01-15",
8 "dueDate": "2025-02-15",
9 "seller": {
10 "name": "Meine Firma GmbH",
11 "vatId": "DE123456789",
12 "email": "rechnung@meinefirma.de",
13 "address": {
14 "street": "Musterstraße 1",
15 "city": "Berlin",
16 "zip": "10115",
17 "country": "DE"
18 }
19 },
20 "buyer": {
21 "name": "Kunde AG",
22 "vatId": "DE987654321",
23 "leitweg": "991-12345-67",
24 "email": "einkauf@kunde.de",
25 "address": {
26 "street": "Kundenweg 42",
27 "city": "München",
28 "zip": "80331",
29 "country": "DE"
30 }
31 },
32 "items": [
33 {
34 "description": "Beratungsleistung",
35 "quantity": 10,
36 "unit": "HUR",
37 "unitPrice": 150.00,
38 "vat": 19
39 }
40 ],
41 "paymentTerms": {
42 "iban": "DE89370400440532013000",
43 "bic": "COBADEFFXXX",
44 "reference": "RE-2025-001"
45 }
46 }'

Response

Bei Erfolg erhältst du 200 OK mit dem erstellten Invoice-Objekt:

json
1{
2 "id": "inv_abc123xyz",
3 "status": "valid",
4 "format": "XRechnung 3.0.2",
5 "created": "2025-01-15T10:30:00Z",
6 "invoiceNumber": "RE-2025-001",
7 "validation": {
8 "valid": true,
9 "errors": [],
10 "warnings": []
11 },
12 "totals": {
13 "net": 1500.00,
14 "vat": 285.00,
15 "gross": 1785.00,
16 "currency": "EUR"
17 },
18 "download": {
19 "xml": "https://api.xhub.io/v1/invoices/inv_abc123xyz/xml",
20 "pdf": "https://api.xhub.io/v1/invoices/inv_abc123xyz/pdf"
21 }
22}

Request Parameter

Haupt-Parameter

ParameterTypPflichtBeschreibung
formatstringZielformat der Rechnung. Unterstützte Werte: xrechnung-3.0, xrechnung-2.3, zugferd-2.1, zugferd-2.0, factur-x-1.0
invoiceNumberstringEindeutige Rechnungsnummer des Ausstellers
issueDatestringRechnungsdatum im Format YYYY-MM-DD
dueDatestring-Fälligkeitsdatum im Format YYYY-MM-DD
sellerobjectVerkäufer/Rechnungsaussteller (Details siehe unten)
buyerobjectKäufer/Rechnungsempfänger (Details siehe unten)
itemsarrayRechnungspositionen (mindestens 1)
paymentTermsobject-Zahlungsinformationen (IBAN, BIC, Referenz)
notestring-Freitext-Bemerkung auf der Rechnung
currencystring-Währungscode (ISO 4217). Standard: EUR

seller (Verkäufer)

ParameterTypPflichtBeschreibung
namestringFirmenname
vatIdstringUSt-IdNr. (z.B. DE123456789)
taxNumberstring-Steuernummer (alternativ zu vatId)
emailstring-E-Mail
phonestring-Telefon
addressobjectAdresse (street, city, zip, country)
bankAccountobject-Bankverbindung (iban, bic, bankName)

buyer (Käufer)

ParameterTypPflichtBeschreibung
namestringFirmenname
vatIdstring-USt-IdNr. des Käufers
leitwegstring-Leitweg-ID für öffentliche Auftraggeber (XRechnung)
emailstring-E-Mail
addressobjectAdresse (street, city, zip, country)
referencestring-Bestellnummer/Referenz des Käufers

items[] (Positionen)

ParameterTypPflichtBeschreibung
descriptionstringBeschreibung der Position
quantitynumberMenge
unitstring-Einheit (UN/ECE Rec 20). Standard: C62 (Stück)
unitPricenumberEinzelpreis netto
vatnumberMehrwertsteuersatz in Prozent (z.B. 19, 7, 0)
articleNumberstring-Artikelnummer
discountnumber-Rabatt in Prozent

Unterstützte Formate

xrechnung-3.0Empfohlen

XRechnung 3.0.2

Aktueller deutscher Standard für B2G

xrechnung-2.3

XRechnung 2.3

Ältere Version (bis Ende 2024 gültig)

zugferd-2.1Empfohlen

ZUGFeRD 2.1.1

Hybrid-Format mit eingebettetem PDF

zugferd-2.0

ZUGFeRD 2.0

Ältere ZUGFeRD-Version

factur-x-1.0

Factur-X 1.0

Französischer Standard (kompatibel mit ZUGFeRD)

Leitweg-ID für öffentliche Auftraggeber

Bei Rechnungen an öffentliche Auftraggeber (Behörden, Kommunen, etc.) ist die Leitweg-ID Pflicht. Das Format ist: XXX-XXXXX-XX

Die Leitweg-ID erhältst du vom Auftraggeber. Eine Liste aller Leitweg-IDs findest du im offiziellen Verzeichnis.

Fehler-Codes

HTTPCodeBeschreibungLösung
400INVALID_REQUESTUngültige Request-DatenÜberprüfe das JSON-Format und Pflichtfelder
400VALIDATION_FAILEDRechnung entspricht nicht dem SchemaPrüfe die Fehlermeldungen im validation-Objekt
401UNAUTHORIZEDFehlender oder ungültiger API KeyPrüfe den Authorization Header
402QUOTA_EXCEEDEDKontingent aufgebrauchtUpgrade deinen Plan oder warte bis zum nächsten Monat
422INVALID_VAT_IDUngültige USt-IdNr.Überprüfe das Format (z.B. DE + 9 Ziffern)
422INVALID_LEITWEGUngültige Leitweg-IDFormat: XXX-XXXXX-XX (z.B. 991-12345-67)
429RATE_LIMITEDZu viele AnfragenWarte und versuche es später erneut

Vollständige Fehlerliste: Error Handling Dokumentation