E-Rechnung in SAPXRechnung und ZUGFeRD aus SAP per API
Die E-Rechnung aus SAP braucht kein großes Projekt: Beim Ausgeben der Faktura sendet SAP die Rechnungsdaten per HTTPS an die API und erhält eine XRechnung oder ZUGFeRD-Rechnung zurück — geprüft mit dem offiziellen KoSIT-Validator. Ohne Add-on-Lizenz, für ECC, S/4HANA und Business One.
100 Rechnungen kostenlos · ohne Kreditkarte · Server in Deutschland
Drei Wege zur E-Rechnung in SAP
SAP-Kunden haben für XRechnung und ZUGFeRD grundsätzlich drei Möglichkeiten. Welche passt, hängt vom Release, von der Zahl der Länder und vom Budget ab — nicht jede Firma braucht die größte Lösung.
| SAP DRC | Partner-Add-on | E-Rechnung API | |
|---|---|---|---|
| Was es ist | SAP Document and Reporting Compliance, SAPs eigene Lösung | zertifizierte Erweiterung im SAP-System | externer REST-Dienst, aus SAP aufgerufen |
| Stärke | viele Länder und Meldepflichten aus einer Hand | tief integriert, oft mit Monitor | schnell, schlank, releaseunabhängig |
| Voraussetzung | passendes Release und Lizenz, oft Cloud-Komponenten | Lizenz und Installation je System | HTTPS-Zugang und etwas ABAP |
| Typischer Aufwand | Projekt über Wochen bis Monate | Einführung mit dem Partner | Tage, je nach Mapping |
| Gut für | Konzerne mit vielen Ländern | Firmen mit festem SAP-Partner | Mittelstand, ECC-Systeme, Business One |
So läuft die E-Rechnung aus SAP SD
Der API-Aufruf hängt sich an die Stelle, an der SAP heute das Rechnungs-PDF ausgibt. Am Fakturaprozess selbst ändert sich nichts.
- Schritt 1
Faktura anlegen (VF01)
Die Rechnung entsteht in SD wie gewohnt. Preise, Steuern und Partner kommen aus Auftrag und Stammdaten. - Schritt 2
Ausgabe löst den API-Aufruf aus
Eine Nachrichtenart (NAST) oder das Output Management in S/4HANA ruft Ihr ABAP-Programm auf, statt nur ein PDF zu drucken. - Schritt 3
Geprüfte E-Rechnung zurück
Die API erzeugt XRechnung oder ZUGFeRD und prüft sie mit dem KoSIT-Validator. Fehler kommen mit Feldname zurück und lassen sich im Nachrichtenprotokoll anzeigen. - Schritt 4
Ablegen und versenden aus SAP
SAP legt die Datei am Beleg ab (GOS oder ArchiveLink) und versendet sie, etwa per E-Mail über BCS oder an einen Peppol-Dienstleister.
ABAP-Beispiel: XRechnung aus SAP erzeugen
Der Kern ist ein HTTP-Aufruf mit Bordmitteln: /UI2/CL_JSON baut das JSON, CL_HTTP_CLIENT sendet es. Das Beispiel ist bewusst kurz gehalten; Fehlerbehandlung und das Ablegen am Beleg ergänzen Sie in Ihrem Ausgabeprogramm.
DATA: lo_client TYPE REF TO if_http_client,
lv_json TYPE string,
lv_answer TYPE string,
lv_status TYPE i.
" Rechnungsdaten aus der Faktura (VBRK/VBRP, KNA1, ADRC) in ls_request füllen,
" Feldnamen wie in der API: invoice_number, issue_date, seller, buyer, items …
lv_json = /ui2/cl_json=>serialize( data = ls_request
pretty_name = /ui2/cl_json=>pretty_mode-low_case ).
" HTTP-Destination INVOAPI (SM59, Typ G): Host api.invoapi.de, Port 443, SSL aktiv
cl_http_client=>create_by_destination( EXPORTING destination = 'INVOAPI'
IMPORTING client = lo_client ).
cl_http_utility=>set_request_uri( request = lo_client->request
uri = '/api/v1/generate' ).
lo_client->request->set_method( if_http_request=>co_request_method_post ).
lo_client->request->set_header_field( name = 'Authorization'
value = |Bearer { lv_api_key }| ).
lo_client->request->set_content_type( 'application/json' ).
lo_client->request->set_cdata( lv_json ).
lo_client->send( ).
lo_client->receive( ).
lo_client->response->get_status( IMPORTING code = lv_status ).
lv_answer = lo_client->response->get_cdata( ).
lo_client->close( ).
" lv_status = 200: document-content enthält die XRechnung (XML).
" Bei output = 'pdf' steht das PDF Base64-kodiert in document-content_base64,
" cl_http_utility=>decode_x_base64( ) macht daraus einen XSTRING.Einmalige Einrichtung im SAP-System
- In SM59 eine HTTP-Destination vom Typ G anlegen: Zielhost api.invoapi.de, Port 443, SSL aktiv.
- In STRUST die Wurzelzertifikate von Let's Encrypt (ISRG Root X1 und ISRG Root X2) in die SSL-Client-PSE importieren. Wurzelzertifikate, nicht das Serverzertifikat: das wechselt alle drei Monate.
- Den API-Schlüssel nicht im Quelltext ablegen, sondern geschützt, etwa in einer Tabelle mit Berechtigungsprüfung oder im Secure Store.
Feld-Mapping: von der SAP-Faktura zur XRechnung
Die Daten liegen in SAP in bekannten Tabellen. Die Kommentare im Beispiel zeigen, woher die Felder typischerweise kommen; in S/4HANA stehen die Konditionen in PRCD_ELEMENTS statt KONV.
{
"format": "xrechnung",
"invoice": {
"invoice_number": "90001234", // VBRK-VBELN
"issue_date": "2026-11-02", // VBRK-FKDAT
"due_date": "2026-12-02", // aus Zahlungsbedingung (VBRK-ZTERM)
"currency": "EUR", // VBRK-WAERK
"buyer_reference": "04011000-12345-34",// Leitweg-ID, z. B. aus VBKD-BSTKD
"seller": { "name": "Muster GmbH", "vat_id": "DE123456789", … }, // Buchungskreis
"buyer": { "name": "Stadt Beispielhausen", … }, // KNA1 / ADRC
"items": [
{ "name": "Wartung", "quantity": 1, "unit": "C62", // VBRP-ARKTX, FKIMG, VRKME→ISO
"unit_price": 1800, "vat_rate": 19 } // Nettopreis, Steuerkondition
],
"payment": { "means_code": "58", "iban": "DE02120300000000202051" }
}
}| SAP-Quelle | API-Feld | Hinweis |
|---|---|---|
| VBRK-VBELN, FKDAT, WAERK | invoice_number, issue_date, currency | Fakturakopf |
| Buchungskreis (T001, Adresse) | seller | inkl. USt-IdNr. und E-Mail für Rechnungen |
| KNA1 / ADRC (Regulierer) | buyer | E-Mail als elektronische Adresse |
| VBKD-BSTKD | buyer_reference / purchase_order_reference | Leitweg-ID bei Behörden |
| VBRP-ARKTX, FKIMG, NETWR | items | Bezeichnung, Menge, Preis |
| VBRP-VRKME → T006-ISOCODE | unit | ISO-/UN/ECE-Code, z. B. ST → C62, H → HUR |
| Steuerkondition (KONV / PRCD_ELEMENTS) | vat_rate, vat_category | Steuerkennzeichen auf Kategorie abbilden |
| Hausbank, Zahlungsbedingung | payment | IBAN, means_code 58 |
SAP S/4HANA, ECC und Business One
| System | Empfohlene Anbindung |
|---|---|
| SAP ECC 6.0 | ABAP im Ausgabeprogramm (NAST), wie im Beispiel. Kein Upgrade nötig — sinnvoll bis zum S/4HANA-Wechsel. |
| SAP S/4HANA (on-premise, private cloud) | ABAP im Output Management (BRF+) oder ein iFlow in der SAP Integration Suite mit HTTP-Empfänger. |
| SAP Business One | Kleiner Dienst über den Service Layer, mit dem Python-SDK oder ohne Code mit n8n. |
Eingangsrechnungen in SAP: prüfen und buchen
Seit 2025 muss auch Ihr SAP-System E-Rechnungen empfangen können. Eine eingehende XRechnung prüft die API mit /validate und liest sie mit /parse als JSON aus. Daraus entsteht in SAP der Beleg:
- Bestellbezogen: Logistik-Rechnungsprüfung mit
BAPI_INCOMINGINVOICE_CREATE - Ohne Bestellung: FI-Beleg mit
BAPI_ACC_DOCUMENT_POST - Lieferant über USt-IdNr. oder IBAN aus dem JSON finden
- Ungültige Rechnungen mit Regel und Feld an den Lieferanten zurückmelden
Häufige Fragen zur E-Rechnung in SAP
- Wie erstelle ich eine E-Rechnung in SAP?
- Es gibt drei Wege: die SAP-eigene Lösung Document and Reporting Compliance (DRC), ein zertifiziertes Add-on eines SAP-Partners oder eine externe E-Rechnung API, die SAP beim Ausgeben der Faktura aufruft. Mit invoapi sendet SAP die Rechnungsdaten als JSON per HTTPS und erhält eine geprüfte XRechnung oder ZUGFeRD-Rechnung zurück.
- Brauche ich SAP Document and Reporting Compliance für die E-Rechnung?
- Nein, DRC ist ein Weg, aber keine Voraussetzung. Die E-Rechnungspflicht verlangt ein normgerechtes Format, kein bestimmtes Produkt. DRC lohnt sich vor allem, wenn Sie ohnehin auf S/4HANA sind und mehrere Länder mit unterschiedlichen Meldepflichten abdecken. Für XRechnung und ZUGFeRD in Deutschland genügt ein API-Aufruf aus SAP.
- Funktioniert die API mit SAP ECC 6.0?
- Ja. Den ABAP-HTTP-Client CL_HTTP_CLIENT gibt es in jedem ECC-6.0-System; die Klasse /UI2/CL_JSON für das JSON ist in aktuellen Releases enthalten, in älteren bauen Sie das JSON mit String-Templates selbst. Damit ist die API auch eine Lösung für Systeme, die bis zum Wechsel auf S/4HANA keine größeren Investitionen mehr bekommen sollen.
- Wie bekomme ich eine XRechnung aus SAP Business One?
- Business One hat kein ABAP. Üblich ist ein kleiner Dienst, der die Rechnungen über den Service Layer von Business One liest, an die API sendet und die XRechnung als Anlage zurückschreibt — selbst programmiert oder mit n8n ohne Code. Das Python- und das PHP-SDK verkürzen den eigenen Dienst auf wenige Zeilen.
- Wo pflege ich die Leitweg-ID in SAP?
- SAP hat dafür kein eigenes Standardfeld. Häufig steht die Leitweg-ID in der Bestellnummer des Kunden (VBKD-BSTKD) oder in einem Zusatzfeld im Kundenstamm. Wichtig ist nur, dass sie im API-Aufruf als buyer_reference ankommt; fehlt sie bei einer Behörde, meldet die Prüfung den Fehler BR-DE-15.
- Kann SAP über die API auch eingehende E-Rechnungen verarbeiten?
- Ja. Die API prüft eingehende XRechnungen und ZUGFeRD-PDFs und liefert die Daten als JSON. Daraus erzeugen Sie in SAP zum Beispiel mit BAPI_INCOMINGINVOICE_CREATE eine Eingangsrechnung in der Logistik-Rechnungsprüfung oder mit BAPI_ACC_DOCUMENT_POST einen FI-Beleg.
- Werden Rechnungsdaten aus SAP außerhalb gespeichert?
- Nein. Die API verarbeitet die Rechnungsinhalte nur für die Dauer des Aufrufs und speichert sie nicht. Die Server stehen in Deutschland, einen Vertrag zur Auftragsverarbeitung stellen wir bereit. Archivierung und Versand bleiben in SAP.
Weiterlesen
E-Rechnung aus SAP — ohne Add-on-Projekt
Testen Sie die API mit 100 kostenlosen Rechnungen aus Ihrem Testsystem, oder sprechen Sie mit uns über Ihr SAP-Release.

