Punchout und E-Procurement-Anbindung im B2B-Shop
Kurz gesagt
Punchout verbindet das Beschaffungssystem des Kunden mit Ihrem Shop: Der Einkäufer füllt den Warenkorb in Ihrer Shop-Oberfläche, der als Bestellanforderung zurückgeht; die Bestellung erreicht Sie erst nach der Freigabe. Nötig ist die Anbindung, wenn der Kunde Ihren Shop aus seinem Beschaffungssystem heraus aufrufen soll; will er nur Produktdaten laden, genügt eine Katalogdatei. Der Aufruf folgt dem Format des Kundensystems: das SAP-Beschaffungssystem SRM unterstützt die Schnittstelle OCI, cXML-fähige Beschaffungssysteme und Netzwerke sprechen cXML; für Daten der bestellenden Personen gilt in Deutschland und Österreich die DSGVO, in der Schweiz das DSG.
Das Wichtigste
- Punchout: Der Warenkorb entsteht in Ihrem Shop und geht als Bestellanforderung an das Beschaffungssystem zurück.
- Ein Auftrag ist das noch nicht; die Bestellung sendet das Kundensystem erst nach seiner Freigabe.
- cXML-Spezifikation 1.2.071 (Stand 14. August 2026): PunchOutSetupRequest, PunchOutOrderMessage, OrderRequest.
- OCI 5.0 (Stand 4. Oktober 2012): Warenkorbdaten gehen als HTML-Formularfelder NEW_ITEM-… an das SAP-Beschaffungssystem SRM zurück.
- BMEcat (aktuelle Version 2005.2, BME e.V.) überträgt Katalogdaten als Datei und kann darin auf einen externen Katalog verweisen; OpenTRANS ergänzt ihn um Belegtransaktionen.
- Für Daten der bestellenden Personen gilt in Deutschland und Österreich die DSGVO, in der Schweiz das DSG.
Ein Einkäufer, dessen System einen Punchout-Aufruf kennt, bestellt nicht per E-Mail, sondern arbeitet in Ihrer Shop-Oberfläche und schickt den Warenkorb dorthin zurück. Ob Sie das brauchen, entscheidet das Beschaffungssystem des Kunden, nicht Ihre Shop-Version.
Wie eine Punchout-Sitzung abläuft
Der Einkäufer wählt in seinem Beschaffungssystem einen Lieferanten. In cXML schickt das System eine PunchOutSetupRequest an die Adresse des Lieferanten oder an einen Netzwerk-Hub, der sie weiterleitet, und öffnet ein Browserfenster mit der Startseite des Lieferanten, angemeldet auf ein Konto; die Operation heißt create für eine neue Sitzung, edit für eine erneute Bearbeitung, inspect für eine reine Ansicht und source für eine Ausschreibung. OCI kommt ohne diese Anforderung aus: Das System ruft die im SAP SRM hinterlegte Katalogadresse direkt mit seinen Parametern auf.
Danach läuft die Sitzung wie ein gewöhnlicher Einkauf, aber mit den Preisen und Beständen des Kundenkontos. Beim Abschluss entsteht kein Auftrag, sondern ein HTML-Formular mit dem Warenkorb, das der Browser an das Beschaffungssystem zurückschickt: in cXML ein verstecktes Feld mit einem PunchOutOrderMessage-Dokument, in OCI Felder mit dem Präfix NEW_ITEM-. Die Bestellung erreicht Sie erst, wenn die Bestellanforderung die Freigabe des Kunden passiert hat (in cXML ein OrderRequest).
Will der Kunde eine bereits übergebene Bestellanforderung ändern, kann er sie erneut in Ihrem Shop öffnen, sofern Sie die Bearbeitung zulassen; in cXML schickt sein System den Warenkorb dann mit der Operation edit zurück. Mengenänderungen können Steuer und Fracht verändern und werden deshalb im Shop nachgerechnet.
Wann Sie eine Anbindung brauchen
Nötig ist sie, wenn der Kunde über sein eigenes Beschaffungssystem bestellt und dabei Ihren Shop aufrufen soll: weil seine Einkaufsregeln nur Systembestellungen zulassen, weil er die Auswahl im laufenden Bestellvorgang in Ihrer Oberfläche treffen will oder weil Preise und Verfügbarkeit beim Aufruf aus Ihrem System kommen sollen.
Wer im Shop oder im Kundenportal bestellt, braucht keine Anbindung (B2B-Kundenportal); wer nur Produktdaten importieren will, kommt mit einer Katalogdatei aus. Ist der Kunde ein öffentlicher Auftraggeber, klären Sie Vergabe und Rechnung getrennt (Verkauf an Behörden).
Die vier Standards im Vergleich
Die vier Standards decken zwei Aufgaben ab: eine Sitzung übergeben oder Datenbestände austauschen.
| Standard | Was übertragen wird | Technische Form | Erwartet von |
|---|---|---|---|
| cXML | Anforderung, Sitzung, Warenkorb und später die Bestellung | XML über HTTP/HTTPS; Warenkorb als verstecktes HTML-Formularfeld (cxml-urlencoded oder cxml-base64) | Beschaffungssystemen und Netzwerken mit cXML-Profil; Spezifikation 1.2.071, veröffentlicht über cxml.org |
| OCI 5.0 | Aufrufparameter zum Start und Warenkorbdaten zurück | HTML-Formular mit Feldern des Schemas NEW_ITEM-Feld[index]; Rücksprungadresse im Action-Attribut, der Parametername ist frei wählbar (HOOK_URL) | SAP-Beschaffungssystemen; die Dokumentation beschreibt die Pflege im Customizing des SAP SRM |
| BMEcat 2005.2 | vollständiger Produktkatalog als Datei, mit Preisen, Konfigurationsregeln und Klassifikation | XML mit Beschreibung und XSD-Schemadatei, beides beim BME | Einkaufssystemen, die Katalogdaten importieren; Version 1.2 stellte der BME 2001 vor, aktuelle Version ist 2005.2 |
| OpenTRANS | Belegtransaktionen wie Anfrage, Angebot, Auftrag, Auftragsbestätigung, Lieferavis und Rechnung | XML mit DTD und XSD | Systemen, die Belege als Datei austauschen; der BME verweist auf opentrans.de und verwaltet den Standard nicht mehr |
BMEcat und OpenTRANS übertragen Dateien zu einem bestimmten Stand, cXML und OCI übergeben eine Sitzung. Der BME nennt für BMEcat 2005 zusätzlich die Unterstützung externer Kataloge und führt dabei unter anderem OCI, PunchOut und RoundTrip an; damit kann ein Katalog aus dem Beschaffungssystem heraus auf ein System des Lieferanten verweisen. Beispiel: Ein Kunde importiert seinen Grundkatalog als BMEcat-Datei und ruft für konfigurierbare Positionen Ihren Shop auf.
Was der Shop liefern muss
Bei OCI braucht der Kunde die Adresse Ihres Katalogs und die Parameter des Aufrufs; zurück gibt der Shop ein HTML-Formular, dessen Action-Attribut die Rücksprungadresse trägt und dessen Zeilen in Feldern wie NEW_ITEM-DESCRIPTION, NEW_ITEM-QUANTITY, NEW_ITEM-PRICE und NEW_ITEM-CURRENCY stehen. Bei cXML kommt die Antwort mit der Startseiten-Adresse, der Rücksprung (BrowserFormPost) und die Identität in den Elementen From, To und Sender hinzu; deren Credential enthält eine Identity und optional ein SharedSecret oder einen CredentialMac. Beides setzt voraus, dass Ihr Shop die Sitzung dem anfragenden Kunden zuordnet; braucht der Kunde abweichende Preise oder eine bestimmte Sprache, richten Sie am Kundenkonto eine passende Preisliste und Sprache ein (Kundenspezifische Preise und Staffeln).
Personenbezogene Daten in der Sitzung
Die cXML-Anforderung kann Extrinsic-Felder wie UserEmail, UniqueName und CostCenter mitgeben, und das Konto auf der Shop-Seite kann auf eine Region, ein Unternehmen, eine Abteilung oder eine Person zugeschnitten sein. Damit gelangen Name, E-Mail-Adresse und Kostenstelle der bestellenden Person in Ihren Shop; übertragen Sie nur die Felder, die die Bestellung braucht.
In Deutschland und Österreich gilt die Verordnung (EU) 2016/679 (Datenschutz-Grundverordnung, DSGVO) unmittelbar und ab dem 25. Mai 2018 (Art. 99 Abs. 2 DSGVO): Personendaten müssen auf das notwendige Maß beschränkt bleiben (Art. 5 Abs. 1 Buchst. c DSGVO), und die Verarbeitung braucht eine Erlaubnis. Die Vertragserfüllung nach Art. 6 Abs. 1 Buchst. b DSGVO trägt sie nur, wenn die betroffene Person selbst Vertragspartei ist, etwa ein Einzelunternehmer; bei Daten angestellter Einkäufer ist die Rechtsgrundlage gesondert zu bestimmen und zu benennen. Verarbeitet ein Dienstleister die Daten im Auftrag, braucht es einen Vertrag nach Art. 28 Abs. 3 DSGVO.
In der Schweiz gilt das Datenschutzgesetz (DSG, SR 235.1, Fassung Stand 7. Juli 2025, in Kraft seit 1. September 2023). Es erfasst Personendaten natürlicher Personen, nicht Daten der Firma als solcher. Ein Auftragsbearbeiter darf sie nach Art. 9 Abs. 1 DSG bearbeiten, wenn er es so tut, wie Sie selbst es dürften, und keine Geheimhaltungspflicht entgegensteht; nach Abs. 2 müssen Sie sich vergewissern, dass er die Datensicherheit gewährleisten kann. Einen Schweizer Shop kann die DSGVO nach Art. 3 Abs. 2 erfassen, wenn er Personen in der Union Waren oder Dienstleistungen anbietet.
Ein Rechenbeispiel
Die Zahlen sind erfundene Annahmen einer Beispielrechnung: 40 Stunden für Einrichtung und Test, 85,00 Euro je Stunde, 2 Stunden Pflege im Monat, 9 Minuten Erfassung von Hand gegen 1,5 Minuten in der Sitzung, 38,00 Euro je Arbeitsstunde.
| Position | Rechnung | Wert |
|---|---|---|
| Einmaliger Aufwand | 40 × 85,00 Euro | 3.400,00 Euro |
| Laufender Aufwand im Jahr | 2 × 85,00 Euro × 12 | 2.040,00 Euro |
| Zeitgewinn je Bestellung | 7,5 Minuten = 0,125 Stunden × 38,00 Euro | 4,75 Euro |
| Deckungsbedarf im ersten Jahr | 3.400,00 + 2.040,00 Euro | 5.440,00 Euro |
| Nötige Bestellungen im ersten Jahr | 5.440,00 ÷ 4,75 Euro | rund 1.145 Bestellungen |
Rund 1.145 Bestellungen im ersten Jahr sind etwa 22 in der Woche. Gehen weniger Bestellungen dieses Kunden über den Shop, trägt der Zeitgewinn die Anbindung nicht. Datenpflege, Schulung und Änderungen am Shopsystem sind nicht gerechnet.
Typische Fehler
- Den Warenkorb als Bestellung verbuchen: Die Bestellung kommt erst nach der Freigabe im Kundensystem; vorher gebucht, stehen Aufträge im System, die nie eingehen.
- Den BuyerCookie als Sitzungsschlüssel speichern: Abschnitt 5.3.4 des cXML Reference Guide rät davon ab, weil der BuyerCookie für jede Sitzung neu vergeben wird, von create über inspect bis edit; der Shop muss ihn unverändert zurückgeben, damit das Beschaffungssystem die Bestellanforderung der ursprünglichen Anforderung zuordnen kann (Abschnitt 5.6.4.1).
- Preise doppelt pflegen: Der Shop ist laut Spezifikation die Informationsquelle aller Positionen; ein abweichender Katalogpreis erzeugt Nacharbeit.
- Den Rücksprung falsch adressieren: Ohne BrowserFormPost in cXML und ohne Rücksprungadresse im Action-Attribut der OCI-Formularseite bleibt der Warenkorb im Browser.
- Keinen Prüfturnus festlegen: Ohne Zählung der Sitzungen und der unzuordenbaren Bestellungen merken Sie einen Abbruch erst beim Anruf des Kunden.
So gehen Sie vor
- Klären Sie das System des Kunden: SAP-Beschaffungssystem, cXML-fähiges Netzwerk oder reiner Katalogimport. Daraus folgt der Standard, nicht aus Ihrem Wunsch.
- Holen Sie die Feldliste ein: Kundenkonto, Preisgruppe, Währung, Mengeneinheit, Sprache und die Felder, die sein System mitschickt.
- Richten Sie eine Adresse je Kunde ein, gebunden an ein Konto mit der richtigen Preisliste (Shopsystem für B2B auswählen).
- Legen Sie den Rückweg fest: Rücksprung des Warenkorbs und getrennt davon den Weg für Bestellung und Rechnung (E-Rechnung im B2B-Webshop).
- Schreiben Sie die Buchungsregel: Die Sitzung reserviert keinen Bestand und erzeugt keinen Auftrag (Angebote und Freigabeprozesse).
- Regeln Sie die Auftragsverarbeitung, wenn ein Dienstleister die Anbindung betreibt: in Deutschland und Österreich nach Art. 28 Abs. 3 DSGVO, in der Schweiz nach Art. 9 DSG.
- Testen Sie vier Fälle im Testmandanten des Kunden: erste Sitzung, Bearbeitung einer bereits übergebenen Bestellanforderung, Rücksprung mit zwei Positionen, doppeltes Absenden. Danach schalten Sie produktiv (Geschäftskunden freischalten).