Core API

Invoice Creator API

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

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: 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
typestringArt des Dokuments: "invoice" | "credit_note" | "proforma" | "correction". Standard: "invoice"
issueDatestringRechnungsdatum im Format YYYY-MM-DD
dueDatestringFä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)
currencystringWährungscode (ISO 4217). Standard: EUR
subtotalnumberNettosumme (wird automatisch berechnet falls nicht angegeben)
totalnumberBruttosumme (wird automatisch berechnet falls nicht angegeben)
taxSummaryarraySteuerübersicht nach Steuersätzen (wird automatisch berechnet)
orderNumberstring-Bestellnummer (Purchase Order Reference)
customerNumberstring-Kundennummer beim Verkäufer
contractNumberstring-Vertragsnummer
servicePeriodobject-Leistungszeitraum (start, end als ISO 8601 Datum)
paymentTermsobjectZahlungsbedingungen (dueDate, paymentTermsText)
paymentMethodsarray-Zahlungsmethoden (type: bank_transfer|direct_debit|credit_card, details)
countrySpecificobject-Länderspezifische Felder (DE: buyerReference, paymentMeansCode, leitwegId, isKleinunternehmer)
notesstring-Freitext-Bemerkung auf der Rechnung
templateIdstring-Referenz auf gespeichertes PDF-Template per UUID
formatOptions.templatestring-Inline BlockTemplate JSON für PDF-Layout
formatOptions.zugferdProfilestring-ZUGFeRD-Profil (MINIMUM, BASIC, EN16931, EXTENDED)

seller (Verkäufer)

ParameterTypPflichtBeschreibung
namestringFirmenname
tradingNamestring-Handelsname (wenn abweichend vom juristischen Namen)
streetstringStraße und Hausnummer
additionalStreetstring-Zusätzliche Adresszeile
citystringStadt
postalCodestringPostleitzahl
statestring-Bundesland/Region (ISO 3166-2)
countryCodestringLändercode (ISO 3166-1 alpha-2)
taxIdstring-Steuernummer
vatIdstring-USt-IdNr. (z.B. DE123456789)
emailstring-E-Mail-Adresse
phonestring-Telefonnummer
websitestring-Website-URL
bankAccountobject-Bankverbindung (iban, bic, bankName, accountHolder)

buyer (Käufer)

ParameterTypPflichtBeschreibung
namestringFirmenname
tradingNamestring-Handelsname (wenn abweichend vom juristischen Namen)
streetstringStraße und Hausnummer
additionalStreetstring-Zusätzliche Adresszeile
citystringStadt
postalCodestringPostleitzahl
statestring-Bundesland/Region (ISO 3166-2)
countryCodestringLändercode (ISO 3166-1 alpha-2)
taxIdstring-Steuernummer des Käufers
vatIdstring-USt-IdNr. des Käufers
emailstring-E-Mail-Adresse
phonestring-Telefonnummer
websitestring-Website-URL
bankAccountobject-Bankverbindung (iban, bic, bankName, accountHolder)

items[] (Positionen)

ParameterTypPflichtBeschreibung
positionnumberPositionsnummer (wird automatisch vergeben falls nicht angegeben)
descriptionstringBeschreibung der Position
articleNumberstring-Artikelnummer
quantitynumberMenge
unitstringEinheit (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)
netAmountnumberNettobetrag (wird berechnet falls nicht angegeben)
taxAmountnumberSteuerbetrag (wird berechnet falls nicht angegeben)
grossAmountnumberBruttobetrag (wird berechnet falls nicht angegeben)

paymentTerms (Zahlungsbedingungen)

ParameterTypPflichtBeschreibung
dueDaysnumber-Zahlungsziel in Tagen (Pflicht)
descriptionstring-Freitext-Beschreibung der Zahlungsbedingungen
earlyPaymentDiscountobject-Skonto: { days, discountPercent }

Unterstützte Länder und Formate

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

DEDeutschland
PDFZUGFERD 2.4XRECHNUNG 3.0.2 *
ATÖsterreich
PDFEBINTERFACE *ZUGFERD 2.4
CHSchweiz
PDFQR-BILL *
FRFrankreich
PDFFACTUR-X 1.08 *
ITItalien
PDFFATTURAPA *
ESSpanien
PDFFACTURAE *VERIFACTU QR
NLNiederlande
PDFUBL *
BEBelgien
PDFUBL *
PTPortugal
PDFSAF-TPEPPOL-UBL *
PLPolen
PDFKSEFPEPPOL-UBL *
CZTschechien
PDFISDOC *
HUUngarn
PDFNAV *
RORumänien
PDFEFACTURA *PEPPOL-UBL
BGBulgarien
PDFUBL *
SESchweden
PDFPEPPOL-UBL *
NONorwegen
PDFPEPPOL-UBL *
DKDänemark
PDFPEPPOL-UBL *
FIFinnland
PDFPEPPOL-UBL *
IEIrland
PDFPEPPOL-UBL *
GBGroßbritannien
PDFPEPPOL-UBL *
LULuxemburg
PDFPEPPOL-UBL *
MTMalta
PDFPEPPOL-UBL *
CYZypern
PDFPEPPOL-UBL *
SISlowenien
PDFPEPPOL-UBL *
EEEstland
PDFPEPPOL-UBL *
LVLettland
PDFPEPPOL-UBL *
LTLitauen
PDFPEPPOL-UBL *
GRGriechenland
PDFPEPPOL-UBL *MYDATA

* Empfohlenes Format für das Land | = Verfügbar

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_*)
403FORBIDDENMissing required entitlementPrüfe den Authorization Header (sk_test_* oder sk_live_*)
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
429QUOTA_EXCEEDEDKontingent aufgebrauchtUpgrade deinen Plan oder warte bis zum nächsten Monat
500INTERNAL_ERRORInternal Server ErrorRetry the request or contact support

Vollständige Fehlerliste: Error Handling Dokumentation