Core API

Invoice Creator API

Erstelle E-Rechnungen in verschiedenen Formaten für 14 europäische Länder. Unterstützt XRechnung, ZUGFeRD, Factur-X, FatturaPA und viele mehr.

POST/api/v1/invoice/{countryCode}/{format}/generate

Beispiel: POST /api/v1/invoice/DE/XRECHNUNG/generate

Authentifizierung

Die API verwendet Bearer Token Authentifizierung. Füge deinen API Key im Authorization Header hinzu:

bash
1Authorization: Bearer sk_live_abc123...

sk_test_* - Test-Modus (keine echten Rechnungen, unbegrenzte Requests)

sk_live_* - Live-Modus (produktive Rechnungen, wird abgerechnet)

Beispiel

bash
1curl -X POST https://api.invoice.xhub.io/api/v1/invoice/DE/XRECHNUNG/generate \
2 -H "Authorization: Bearer sk_live_abc123..." \
3 -H "Content-Type: application/json" \
4 -d '{
5 "invoiceNumber": "RE-2025-001",
6 "type": "invoice",
7 "issueDate": "2025-01-15",
8 "dueDate": "2025-02-15",
9 "currency": "EUR",
10 "seller": {
11 "name": "Meine Firma GmbH",
12 "street": "Musterstraße 1",
13 "city": "Berlin",
14 "postalCode": "10115",
15 "country": "DE",
16 "taxId": "123/456/78901",
17 "vatId": "DE123456789",
18 "email": "rechnung@meinefirma.de",
19 "phone": "+49 30 1234567"
20 },
21 "buyer": {
22 "name": "Kunde AG",
23 "street": "Kundenweg 42",
24 "city": "München",
25 "postalCode": "80331",
26 "country": "DE",
27 "vatId": "DE987654321",
28 "email": "einkauf@kunde.de"
29 },
30 "items": [
31 {
32 "position": 1,
33 "description": "Beratungsleistung",
34 "articleNumber": "CONS-001",
35 "quantity": 10,
36 "unit": "HUR",
37 "unitPrice": 150.00,
38 "taxRate": 19,
39 "taxCategoryCode": "S",
40 "netAmount": 1500.00,
41 "taxAmount": 285.00,
42 "grossAmount": 1785.00
43 }
44 ],
45 "paymentTerms": {
46 "dueDate": "2025-02-15",
47 "paymentTermsText": "Zahlbar innerhalb von 30 Tagen ohne Abzug"
48 },
49 "notes": "Vielen Dank für Ihren Auftrag!"
50 }'

Response

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

json
1{
2 "success": true,
3 "format": "XRECHNUNG",
4 "filename": "RE-2025-001.xml",
5 "mimeType": "application/xml",
6 "hash": "a1b2c3d4e5f6789...sha256hash",
7 "data": "PD94bWwgdmVyc2lvbj0iMS4wIj8+...base64encoded...",
8 "errors": [],
9 "warnings": [
10 {
11 "code": "W001",
12 "message": "Optionales Feld 'buyerReference' nicht gesetzt",
13 "field": "buyer.reference"
14 }
15 ]
16}

Response-Felder

FeldTypBeschreibung
successbooleanGibt an, ob die Rechnung erfolgreich erstellt wurde
formatstringDas generierte Format (z.B. XRECHNUNG, ZUGFERD)
filenamestringVorgeschlagener Dateiname für die Rechnung
mimeTypestringMIME-Type der generierten Datei (z.B. application/xml, application/pdf)
hashstringSHA-256 Hash des generierten Dokuments
datastringBase64-kodierte Rechnungsdaten
errorsarrayListe von Fehlern (code, message, field)
warningsarrayListe von Warnungen (code, message, field)

Request Parameter

Path-Parameter

ParameterTypBeschreibung
countryCoderequiredstringISO 3166-1 alpha-2 Ländercode: DE, AT, CH, FR, IT, ES, NL, BE, PT, PL, CZ, HU, RO, BG
formatrequiredstringZielformat (abhängig vom Land): PDF, XRECHNUNG, ZUGFERD, FACTURX, FATTURAPA, FACTURAE, UBL, EBINTERFACE, QRBILL, ISDOC, NAV

XRechnung (Deutschland)

/api/v1/invoice/DE/XRECHNUNG/generate

ZUGFeRD (Deutschland)

/api/v1/invoice/DE/ZUGFERD/generate

Factur-X (Frankreich)

/api/v1/invoice/FR/FACTURX/generate

FatturaPA (Italien)

/api/v1/invoice/IT/FATTURAPA/generate

ebInterface (Österreich)

/api/v1/invoice/AT/EBINTERFACE/generate

PDF (alle Länder)

/api/v1/invoice/DE/PDF/generate

Body-Parameter

ParameterTypPflichtBeschreibung
invoiceNumberstringEindeutige Rechnungsnummer des Ausstellers
typestring-Art des Dokuments: "invoice" | "credit_note" | "proforma" | "correction". Standard: "invoice"
issueDatestringRechnungsdatum im Format YYYY-MM-DD
dueDatestring-Fälligkeitsdatum im Format YYYY-MM-DD
deliveryDatestring-Lieferdatum bzw. Leistungsdatum im Format YYYY-MM-DD
sellerobjectVerkäufer/Rechnungsaussteller (Details siehe unten)
buyerobjectKäufer/Rechnungsempfänger (Details siehe unten)
itemsarrayRechnungspositionen (mindestens 1)
currencystring-Währungscode (ISO 4217). Standard: EUR
subtotalnumber-Nettosumme (wird automatisch berechnet falls nicht angegeben)
totalnumber-Bruttosumme (wird automatisch berechnet falls nicht angegeben)
taxSummaryarray-Steuerübersicht nach Steuersätzen (wird automatisch berechnet)
paymentTermsobject-Zahlungsbedingungen (dueDate, paymentTermsText)
notesstring-Freitext-Bemerkung auf der Rechnung

seller (Verkäufer)

ParameterTypPflichtBeschreibung
namestringFirmenname
streetstringStraße und Hausnummer
citystringStadt
postalCodestringPostleitzahl
countrystringLändercode (ISO 3166-1 alpha-2)
taxIdstring-Steuernummer
vatIdstring-USt-IdNr. (z.B. DE123456789)
emailstring-E-Mail-Adresse
phonestring-Telefonnummer

buyer (Käufer)

ParameterTypPflichtBeschreibung
namestringFirmenname
streetstringStraße und Hausnummer
citystringStadt
postalCodestringPostleitzahl
countrystringLändercode (ISO 3166-1 alpha-2)
taxIdstring-Steuernummer des Käufers
vatIdstring-USt-IdNr. des Käufers
emailstring-E-Mail-Adresse
phonestring-Telefonnummer

items[] (Positionen)

ParameterTypPflichtBeschreibung
positionnumber-Positionsnummer (wird automatisch vergeben falls nicht angegeben)
descriptionstringBeschreibung der Position
articleNumberstring-Artikelnummer
quantitynumberMenge
unitstring-Einheit (UN/ECE Rec 20). Standard: C62 (Stück)
unitPricenumberEinzelpreis netto
taxRatenumberMehrwertsteuersatz in Prozent (z.B. 19, 7, 0)
taxCategoryCodestring-Steuerkategorie-Code (z.B. "S" für Standard, "Z" für 0%, "E" für befreit)
netAmountnumber-Nettobetrag (wird berechnet falls nicht angegeben)
taxAmountnumber-Steuerbetrag (wird berechnet falls nicht angegeben)
grossAmountnumber-Bruttobetrag (wird berechnet falls nicht angegeben)

paymentTerms (Zahlungsbedingungen)

ParameterTypPflichtBeschreibung
dueDatestring-Fälligkeitsdatum im Format YYYY-MM-DD
paymentTermsTextstring-Freitext für Zahlungsbedingungen

Unterstützte Länder und Formate

Verwende diese Kombinationen aus countryCode und format im Endpoint-Pfad.

DEDeutschland
PDFZUGFERD 2.3XRECHNUNG 3.0 *
ATÖsterreich
PDFEBINTERFACE *
CHSchweiz
PDFQR-BILL *
FRFrankreich
PDFFACTUR-X *
ITItalien
PDFFATTURAPA *
ESSpanien
PDFFACTURAE *
NLNiederlande
PDFUBL *
BEBelgien
PDFUBL *
PTPortugalQ2.2026
PDF *
PLPolenQ2.2026
PDF *
CZTschechienQ2.2026
PDFISDOC *
HUUngarnQ2.2026
PDFNAV *
RORumänienQ2.2026
PDF *
BGBulgarienQ2.2026
PDF *

* Empfohlenes Format für das Land | = Verfügbar | Q2.2026 = Geplant

Leitweg-ID für öffentliche Auftraggeber (Deutschland)

Bei XRechnung 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_FAILEDE-Rechnung entspricht nicht dem SchemaPrüfe die Fehlermeldungen im errors-Array
400UNSUPPORTED_FORMATFormat für dieses Land nicht unterstütztPrüfe die unterstützten Formate für das gewählte Land
401UNAUTHORIZEDFehlender oder ungültiger API KeyPrüfe den Authorization Header (sk_test_* oder sk_live_*)
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_COUNTRYUngültiger LändercodeVerwende einen unterstützten ISO 3166-1 alpha-2 Code
429RATE_LIMITEDZu viele AnfragenWarte und versuche es später erneut

Vollständige Fehlerliste: Error Handling Dokumentation