cXML und OCI im direkten Vergleich
| cXML | OCI | |
|---|---|---|
| Vollständiger Name | Commerce eXtensible Markup Language | Open Catalog Interface |
| Gepflegt von | cXML.org (ursprünglich Ariba) | SAP |
| Verwendet von | SAP Ariba, Coupa, Jaggaer, Ivalua, Oracle, Workday… | SAP S/4HANA, SAP SRM, SAP ECC, einige Marktplätze |
| Format | XML-Dokumente über HTTPS | HTML-Formularfelder (NEW_ITEM-*) |
| Session-Start | PunchOutSetupRequest → PunchOutSetupResponse | HTTP-Aufruf mit Login-Parametern und HOOK_URL |
| Warenkorb-Rückgabe | PunchOutOrderMessage | Formular-POST an die HOOK_URL |
| Bestellung | OrderRequest (gleiches Protokoll) | Ein separater, mit dem Kunden vereinbarter Kanal, zum Beispiel E-Mail oder sein Lieferantenportal |
| Klassifizierung | Classification domain="UNSPSC" | NEW_ITEM-MATGROUP |
| Authentifizierung | Identitäten + Shared Secret | Benutzer und Passwort oder Token im Aufruf |
cXML-PunchOut: So funktioniert eine Session
Bei cXML ist jeder Schritt ein XML-Dokument, das über HTTPS gesendet wird. Das System des Kunden und Ihre Seite identifizieren sich gegenseitig mit Zugangsdaten im Header (bei SAP Ariba den Network IDs) und einem Shared Secret.
Setup-Anfrage
Der Kunde klickt auf Ihren Katalog; sein System sendet einen PunchOutSetupRequest mit Zugangsdaten, einem BuyerCookie und einer Rücksprung-URL.
Setup-Antwort
Ihre Seite antwortet mit einer StartPage-URL; der Browser des Kunden öffnet Ihren Shop.
Einkauf
Der Kunde sieht Vertragspreise und füllt den Warenkorb.
Warenkorb-Rückgabe
Eine PunchOutOrderMessage sendet den Warenkorb zur Freigabe an die Rücksprung-URL.
Bestellung
Nach der Freigabe kommt die Bestellung als OrderRequest an.
Beispiel · PunchOutSetupRequest (gekürzt)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.069/cXML.dtd">
<cXML payloadID="1729332000.4711@buyer.example.com" timestamp="2026-10-19T10:00:00+02:00">
<Header>
<From><Credential domain="NetworkID"><Identity>AN01000000001</Identity></Credential></From>
<To><Credential domain="NetworkID"><Identity>AN01000000002</Identity></Credential></To>
<Sender>
<Credential domain="NetworkID">
<Identity>AN01000000001</Identity>
<SharedSecret>••••••••</SharedSecret>
</Credential>
<UserAgent>Buyer procurement system</UserAgent>
</Sender>
</Header>
<Request>
<PunchOutSetupRequest operation="create">
<BuyerCookie>8f2c41d0a9</BuyerCookie>
<BrowserFormPost><URL>https://buyer.example.com/punchout/return</URL></BrowserFormPost>
<SupplierSetup><URL>https://gateway.example.com/setup</URL></SupplierSetup>
</PunchOutSetupRequest>
</Request>
</cXML>Beispiel · PunchOutSetupResponse
<cXML payloadID="1729332001.88@gateway.example.com" timestamp="2026-10-19T10:00:01+02:00">
<Response>
<Status code="200" text="OK"/>
<PunchOutSetupResponse>
<StartPage><URL>https://gateway.example.com/session/7f3a…</URL></StartPage>
</PunchOutSetupResponse>
</Response>
</cXML>Beispiel · PunchOutOrderMessage
<cXML payloadID="1729332555.12@gateway.example.com" timestamp="2026-10-19T10:09:15+02:00">
<Header>…</Header>
<Message>
<PunchOutOrderMessage>
<BuyerCookie>8f2c41d0a9</BuyerCookie>
<PunchOutOrderMessageHeader operationAllowed="edit">
<Total><Money currency="EUR">96.00</Money></Total>
</PunchOutOrderMessageHeader>
<ItemIn quantity="20">
<ItemID><SupplierPartID>GLV-09</SupplierPartID></ItemID>
<ItemDetail>
<UnitPrice><Money currency="EUR">4.80</Money></UnitPrice>
<Description xml:lang="en">Safety gloves, size 9</Description>
<UnitOfMeasure>PR</UnitOfMeasure>
<Classification domain="UNSPSC">46181504</Classification>
</ItemDetail>
</ItemIn>
</PunchOutOrderMessage>
</Message>
</cXML>OCI-PunchOut: So funktioniert eine Session
OCI ist einfacher und älter im Stil: Es gibt kein XML. SAP öffnet Ihre Katalog-URL mit Login-Parametern und einer HOOK_URL; am Ende sendet Ihr Shop den Warenkorb als HTML-Formularfelder an diese Adresse.
Aufruf
SAP öffnet Ihre Katalog-URL mit Login-Parametern und der HOOK_URL.
Einkauf
Der Kunde kauft mit seinen Vertragspreisen ein.
Warenkorb-Rückgabe
Ihr Shop sendet den Warenkorb als NEW_ITEM-*-Felder an die HOOK_URL.
Bestellung
OCI überträgt keine Bestellung: Sie erhalten sie über einen mit dem Kunden vereinbarten Kanal, zum Beispiel per E-Mail oder über sein Lieferantenportal.
Beispiel · OCI-Aufruf mit HOOK_URL
https://shop.example.com/oci?USERNAME=acme&PASSWORD=••••
&HOOK_URL=https%3A%2F%2Fsap.buyer.example.com%2Fsap%2Fbc%2Fsrm%2Foci_return
&OCI_VERSION=4.0&returntarget=_topBeispiel · OCI-Warenkorb-Rückgabe an die HOOK_URL
<form method="post" action="{HOOK_URL}">
<input type="hidden" name="NEW_ITEM-DESCRIPTION[1]" value="Safety gloves, size 9">
<input type="hidden" name="NEW_ITEM-QUANTITY[1]" value="20">
<input type="hidden" name="NEW_ITEM-UNIT[1]" value="PR">
<input type="hidden" name="NEW_ITEM-PRICE[1]" value="4.80">
<input type="hidden" name="NEW_ITEM-CURRENCY[1]" value="EUR">
<input type="hidden" name="NEW_ITEM-MATGROUP[1]" value="46181504">
<input type="hidden" name="NEW_ITEM-VENDORMAT[1]" value="GLV-09">
</form>Die Feldnamen sind nach Zeile indiziert ([1], [2]…). Die Dokumentation des Kunden sagt Ihnen, welche Felder Pflicht sind, zum Beispiel eine Lieferanten-Materialnummer, eine Lieferzeit oder ein Langtext.
Welches nutzt Ihr Kunde?
| Einkaufssystem | Protokoll | Ratgeber |
|---|---|---|
| SAP Ariba | cXML | SAP Ariba PunchOut |
| Coupa | cXML | Coupa PunchOut |
| SAP S/4HANA, SRM, ECC | OCI | SAP OCI PunchOut |
| Jaggaer | cXML | Jaggaer PunchOut |
| Ivalua, Oracle, Workday | cXML | Alle Systeme |
| Meplato, Simeno | OCI (und cXML) | Alle Systeme |
Wenn Sie unsicher sind: Die Lieferantendokumentation des Kunden sagt es auf den ersten Seiten. Manche SAP-Kunden nutzen SAP Ariba für indirekte Ausgaben und OCI-Kataloge in S/4HANA für direktes Material: Dann brauchen Sie beides.
cXML-PunchOut-Katalog-Integration: Was sich in Ihrem Shop ändert
Unabhängig vom Protokoll braucht ein Shop dieselben fünf Dinge, um als PunchOut-Katalog zu funktionieren:
- Ein kundenspezifischer Katalog und Preise pro Kunde
- Ein Klassifizierungscode für jedes Produkt (UNSPSC oder ECLASS)
- Öffnen im Frame des Kunden: Frame-Header, Cookies und Sicherheitseinstellungen
- Mengeneinheiten, die den Codes des Kunden zugeordnet sind
- Bestellimport mit cXML OrderRequest (Premium-Tarif)
Beide auf einem Shop unterstützen
Viele Lieferanten haben am Ende Kunden mit beiden Protokollen. Zwei Integrationen zu bauen verdoppelt die Arbeit; ein Gateway, das beide spricht, lässt einen Shop jeden Kunden bedienen. Mit PunchOut Rocket konfigurieren Sie jeden Kunden einmal im Dashboard, wählen cXML oder OCI, und das Plugin in Ihrem Shop bleibt dasselbe.
PunchOut auf dem Shop, den Sie schon haben
PunchOut Rocket verbindet WooCommerce, Magento, PrestaShop und nopCommerce über cXML oder OCI mit SAP Ariba, Coupa und SAP. Ab 163 €/Monat pro Shop, 30 Tage kostenlos testen.