Zum Inhalt springen
Invoapi
SAP ECC · S/4HANA · Business One

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 DRCPartner-Add-onE-Rechnung API
Was es istSAP Document and Reporting Compliance, SAPs eigene Lösungzertifizierte Erweiterung im SAP-Systemexterner REST-Dienst, aus SAP aufgerufen
Stärkeviele Länder und Meldepflichten aus einer Handtief integriert, oft mit Monitorschnell, schlank, releaseunabhängig
Voraussetzungpassendes Release und Lizenz, oft Cloud-KomponentenLizenz und Installation je SystemHTTPS-Zugang und etwas ABAP
Typischer AufwandProjekt über Wochen bis MonateEinführung mit dem PartnerTage, je nach Mapping
Gut fürKonzerne mit vielen LändernFirmen mit festem SAP-PartnerMittelstand, 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.

  1. Schritt 1

    Faktura anlegen (VF01)

    Die Rechnung entsteht in SD wie gewohnt. Preise, Steuern und Partner kommen aus Auftrag und Stammdaten.
  2. 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.
  3. 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.
  4. 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.

ABAP
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

  1. In SM59 eine HTTP-Destination vom Typ G anlegen: Zielhost api.invoapi.de, Port 443, SSL aktiv.
  2. 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.
  3. 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.

Anfrage mit SAP-Quellen
{
  "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-QuelleAPI-FeldHinweis
VBRK-VBELN, FKDAT, WAERKinvoice_number, issue_date, currencyFakturakopf
Buchungskreis (T001, Adresse)sellerinkl. USt-IdNr. und E-Mail für Rechnungen
KNA1 / ADRC (Regulierer)buyerE-Mail als elektronische Adresse
VBKD-BSTKDbuyer_reference / purchase_order_referenceLeitweg-ID bei Behörden
VBRP-ARKTX, FKIMG, NETWRitemsBezeichnung, Menge, Preis
VBRP-VRKME → T006-ISOCODEunitISO-/UN/ECE-Code, z. B. ST → C62, H → HUR
Steuerkondition (KONV / PRCD_ELEMENTS)vat_rate, vat_categorySteuerkennzeichen auf Kategorie abbilden
Hausbank, ZahlungsbedingungpaymentIBAN, means_code 58

SAP S/4HANA, ECC und Business One

SystemEmpfohlene Anbindung
SAP ECC 6.0ABAP 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 OneKleiner 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.

E-Rechnung in SAP: XRechnung & ZUGFeRD aus SAP per API · Invoapi