XRechnung APIXRechnung per REST-API erstellen und prüfen
Die XRechnung API von invoapi macht aus einfachem JSON eine gültige XRechnung — in UBL oder CII, geprüft mit dem offiziellen KoSIT-Validator. Ein HTTPS-Aufruf ersetzt XML-Mapping, Schematron-Setup und Regelwerks-Updates in Ihrem eigenen Code.
100 Rechnungen kostenlos · ohne Kreditkarte · Server in Deutschland
Was die XRechnung API für Sie erledigt
Eine XRechnung ist eine XML-Datei mit über 150 möglichen Geschäftsbegriffen, zwei Syntaxen und mehreren hundert Prüfregeln. Die API nimmt Ihnen genau diesen Teil ab, damit Ihr System nur noch die Rechnungsdaten liefern muss, die es ohnehin hat.
- XRechnung 3.0.2 aus JSON erzeugen, wahlweise UBL 2.1 oder UN/CEFACT CII
- Summen, Rabatte und Umsatzsteuer serverseitig mit exakter Dezimalrechnung
- Prüfung mit dem KoSIT-Validator: XML-Schema, EN-16931- und XRechnung-Schematron
- Fehler mit Regel-ID, betroffenem Feld und konkretem Lösungsvorschlag
- Eingehende XRechnungen prüfen und als JSON auslesen
- Keine Speicherung der Rechnungsinhalte, Server in Deutschland
XRechnung per API erstellen: das erste Beispiel
Ein einziger POST-Aufruf an /api/v1/generate genügt. Die Felder heißen wie im Alltag — Rechnungsnummer, Käufer, Positionen —, nicht wie die XML-Elemente der Norm. Den API-Schlüssel legen Sie nach der kostenlosen Registrierung im Dashboard an.
curl -X POST https://api.invoapi.de/api/v1/generate \
-H "Authorization: Bearer $INVOAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"format": "xrechnung",
"syntax": "ubl",
"invoice": {
"invoice_number": "RE-2026-0042",
"issue_date": "2026-11-02",
"due_date": "2026-12-02",
"currency": "EUR",
"buyer_reference": "04011000-12345-34",
"seller": {
"name": "Muster GmbH", "vat_id": "DE123456789",
"email": "rechnung@muster.de", "phone": "+49 30 1234567",
"street": "Musterstraße 1", "postal_code": "10115",
"city": "Berlin", "country_code": "DE"
},
"buyer": {
"name": "Stadt Beispielhausen", "email": "e-rechnung@beispielhausen.de",
"street": "Rathausplatz 1", "postal_code": "20095",
"city": "Hamburg", "country_code": "DE"
},
"items": [
{ "name": "IT-Beratung", "quantity": 8, "unit": "HUR",
"unit_price": 120, "vat_rate": 19 }
],
"payment": { "means_code": "58", "iban": "DE02120300000000202051" }
}
}'Die Antwort enthält die fertige XRechnung, die berechneten Summen und das Prüfergebnis. Diese Antwort stammt aus einem echten Aufruf (gekürzt):
{
"success": true,
"format": "xrechnung",
"syntax": "ubl",
"version": "3.0.2",
"valid": true,
"totals": { "net": "960.00", "tax": "182.40", "gross": "1142.40",
"payable": "1142.40", "currency": "EUR" },
"validation": {
"status": "valid",
"engine": "KoSIT Validator 1.6.3",
"scenario": "EN16931 XRechnung (UBL Invoice)",
"summary": { "errors": 0, "warnings": 0 }
},
"document": {
"filename": "RE-2026-0042.xml",
"mime_type": "application/xml",
"content": "<?xml version='1.0' encoding='UTF-8'?><Invoice …"
}
}Alle Felder beschreibt die API-Dokumentation. Ohne Code ausprobieren können Sie dasselbe im XRechnung-Generator und im Playground.
Geprüft mit dem offiziellen KoSIT-Validator
Jede XRechnung, die die API erzeugt, läuft durch denselben Validator, den auch Behörden und Rechnungsportale verwenden: den KoSIT-Validator mit dem XRechnung-Prüfszenario. Er prüft nacheinander das XML-Schema, die Regeln der europäischen Norm EN 16931 und die deutschen Zusatzregeln der XRechnung (BR-DE-…).
„Gültig“ meldet die API nur, wenn diese Regelwerke tatsächlich gelaufen sind. Findet die Prüfung einen Fehler, bekommen Sie nicht nur die Regel-ID, sondern auch das Feld in Ihrem JSON und einen Vorschlag zur Behebung — hier das häufigste Beispiel, die fehlende Leitweg-ID:
{
"severity": "error",
"rule": "BR-DE-15",
"message": "Das Element \"Buyer reference\" (BT-10) muss übermittelt werden.",
"field": "buyer_reference",
"business_term": "BT-10",
"suggestion": "Set `buyer_reference` to the Leitweg-ID your customer gave you …"
}UBL oder CII? Beide Syntaxen über eine API
Die XRechnung gibt es in zwei technischen Ausprägungen. Inhaltlich sind beide gleichwertig; welche Sie brauchen, entscheidet meist der Empfänger. Mit dem Parameter syntax wählen Sie pro Aufruf, die Daten bleiben dieselben.
| UBL 2.1 | UN/CEFACT CII | |
|---|---|---|
| Parameter | "syntax": "ubl" | "syntax": "cii" |
| Typischer Einsatz | Behörden, Peppol-Netzwerk | Unternehmen, Nähe zu ZUGFeRD |
| Wurzelelement | Invoice / CreditNote | CrossIndustryInvoice |
| Umwandeln | per /convert in CII | per /convert in UBL |
Pflichtangaben der XRechnung und ihre API-Felder
Die Norm spricht in Geschäftsbegriffen (BT) und Gruppen (BG). Die Tabelle zeigt, welches JSON-Feld welchen Begriff füllt. Was sich berechnen lässt, rechnet die API selbst.
| Angabe | Geschäftsbegriff | API-Feld |
|---|---|---|
| Rechnungsnummer | BT-1 | invoice_number |
| Rechnungsdatum | BT-2 | issue_date |
| Fälligkeitsdatum | BT-9 | due_date |
| Käuferreferenz / Leitweg-ID | BT-10 | buyer_reference |
| Verkäufer: Name, USt-IdNr. | BT-27, BT-31 | seller.name, seller.vat_id |
| Elektronische Adresse Verkäufer / Käufer | BT-34, BT-49 | seller.email, buyer.email |
| Kontakt des Verkäufers | BG-6 | aus Name, Telefon und E-Mail ergänzt |
| Zahlungsart, IBAN | BT-81, BT-84 | payment.means_code, payment.iban |
| Position: Menge, Einheit, Preis, Steuersatz | BT-129, BT-130, BT-146, BT-152 | quantity, unit, unit_price, vat_rate |
| Summen und Umsatzsteuer | BG-22, BG-23 | berechnet die API |
In Ihrer Sprache: SDKs und Integrationen
Die XRechnung API ist eine normale REST-Schnittstelle — jede Sprache mit HTTP-Client kann sie nutzen. Für Python und PHP gibt es fertige Pakete, die Wiederholungen bei Tempolimits und die Fehlerklassen schon mitbringen.
import invoapi
client = invoapi.Client() # liest INVOAPI_API_KEY
rechnung = client.generate(daten, format="xrechnung", syntax="ubl")
if rechnung.is_valid:
rechnung.save() # RE-2026-0042.xml$invoapi = new Invoapi\Client(getenv('INVOAPI_API_KEY'));
$rechnung = $invoapi->generate($daten, format: 'xrechnung', syntax: 'ubl');
if ($rechnung->isValid()) {
$rechnung->saveTo($rechnung->filename());
}const res = await fetch("https://api.invoapi.de/api/v1/generate", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INVOAPI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ format: "xrechnung", syntax: "ubl", invoice: daten }),
});
const { valid, document } = await res.json();Ohne Programmierung: n8n, WooCommerce und der MCP-Server für KI-Assistenten. Details zu den Paketen: Python-SDK, PHP-SDK.
XRechnung API oder selbst bauen?
Mit Open-Source-Bausteinen wie dem KoSIT-Validator (Java) lässt sich eine XRechnung auch selbst erzeugen und prüfen. Der Aufwand steckt weniger im ersten Dokument als im Betrieb danach:
| Selbst bauen | XRechnung API | |
|---|---|---|
| Mapping auf UBL/CII | eigener Code je Syntax | ein JSON-Format für beide |
| Prüfung | Java-Validator und Konfiguration selbst betreiben | in jedem Aufruf enthalten |
| Neue XRechnung-Versionen | Regelwerke und Code selbst nachziehen | serverseitig, ohne Codeänderung |
| Fehlermeldungen | Schematron-Texte auf Englisch und Deutsch gemischt | Feld, Regel und Lösungsvorschlag |
| Weitere Formate | ZUGFeRD, Peppol: jeweils neu | ZUGFeRD, Peppol, EN 16931 inklusive |
Häufige Fragen zur XRechnung API
- Was ist eine XRechnung API?
- Eine XRechnung API ist eine Programmierschnittstelle, die aus Rechnungsdaten eine XRechnung erzeugt, also die XML-Rechnung nach dem deutschen Standard der KoSIT. Bei invoapi senden Sie die Daten als JSON an einen REST-Endpunkt und erhalten die fertige XRechnung zurück, bereits geprüft mit dem offiziellen KoSIT-Validator.
- Welche XRechnung-Version erzeugt die API?
- Die API erzeugt XRechnung 3.0.2, wahlweise in der Syntax UBL 2.1 oder UN/CEFACT CII. Die Prüfung läuft gegen das passende Regelwerk der KoSIT und die Regeln der EN 16931. Neue Versionen spielen wir serverseitig ein; Ihr Code bleibt gleich.
- Ist die XRechnung API kostenlos?
- Zum Ausprobieren ja: Mit dem kostenlosen Konto erzeugen und prüfen Sie 100 Rechnungen, ohne Kreditkarte. Danach kostet der Starter-Tarif 24 € im Monat für 500 Rechnungen, Business 49 € für 2.000 und Scale 99 € für 8.000 Rechnungen, jeweils zzgl. USt. und monatlich kündbar.
- Brauche ich für eine XRechnung immer eine Leitweg-ID?
- Für Rechnungen an öffentliche Auftraggeber in Deutschland ja: Die Leitweg-ID gehört in die Käuferreferenz (BT-10) und leitet die Rechnung an die richtige Behörde. Fehlt sie, meldet die Prüfung den Fehler BR-DE-15. Bei Rechnungen an Unternehmen tragen Sie stattdessen eine andere Referenz ein, zum Beispiel die Bestellnummer des Kunden.
- Kann ich mit der API auch eingehende XRechnungen prüfen und auslesen?
- Ja. Der Endpunkt /validate prüft jede eingehende XRechnung gegen die offiziellen Regeln und nennt zu jedem Fehler Regel, Feld und Lösungsvorschlag. Der Endpunkt /parse liest die XRechnung in strukturiertes JSON aus, das Sie direkt in Ihre Buchhaltung übernehmen können.
- Versendet die API die XRechnung an Behörden?
- Nein. Die API erzeugt und prüft die Datei; den Versand übernimmt Ihr System, zum Beispiel per E-Mail, über das Rechnungsportal des Bundes oder der Länder oder über einen Peppol-Zugangspunkt. So bleiben Versandweg und Nachweise in Ihrer Hand.
- Werden meine Rechnungsdaten gespeichert?
- Nein. Die Rechnungsinhalte werden nur für die Dauer der Anfrage verarbeitet und nicht gespeichert. Die Server stehen in Deutschland, einen Vertrag zur Auftragsverarbeitung (AVV) stellen wir bereit.
Weiterlesen
Die erste XRechnung per API — in fünf Minuten
Konto anlegen, API-Schlüssel kopieren, das Beispiel oben ausführen. 100 Rechnungen sind kostenlos.

