In B2B wholesale, a large customer's order rarely originates in the shop itself, but in the purchasing department's procurement system: in SAP or an e-procurement suite where requirements are raised, approved and booked. For your shop to become visible in that environment, it has to plug directly into this purchasing process. That is exactly what Punchout achieves through the OCI and cXML standards: the buyer jumps from their system into your shop via a session handoff, sees their customer-specific catalogue and contract prices there, assembles a cart and returns it in structured form to the procurement system. The upside is significant: according to the BME, 80 percent of purchasing leaders see the biggest digitalization need in supplier management (BME), and for digitalizing the ordering process, 95 percent of companies report a noticeable simplification (Bitkom). This article explains how OCI and cXML Punchout work technically, why digital procurement replaces the classic fax or e-mail order, and what matters for implementing, maintaining and servicing the wholesale integration.
What OCI and cXML Punchout Mean in the B2B Shop
Punchout describes a simple but powerful mechanism: instead of loading articles and prices into the customer's procurement system as a static catalogue file, that system connects directly to your shop at runtime. The buyer works in their familiar procurement environment, clicks your supplier catalogue and is redirected into your shop via a session handoff. There they browse a current assortment with their conditions and send the finished cart back into their approval and ordering process in structured form. The term Punchout refers precisely to this passing from one system into the other and back again.
Two standards have established themselves for this handoff. The Open Catalog Interface, OCI for short, was developed by SAP and transfers cart data over HTTP using URL parameters and HTML form fields (SAP Open Catalog Interface). It is lean and widespread in SAP-centric purchasing systems. cXML, the Commerce eXtensible Markup Language, was published by Ariba in 1999 and exchanges the Punchout messages as validatable XML documents (cXML Reference Guide). Both achieve the same goal but differ in data format and scope. Which standard is required is dictated by your customer's procurement system, which is why a robust SAP integration should ideally master both routes.
The economic backdrop makes clear why the effort pays off. German B2B online trade via shops and marketplaces recently reached around EUR 476 billion and grew by 11.7 percent, considerably faster than consumer retail (Statista). Any wholesaler or manufacturer wanting to grow in this segment with large purchasing organizations can hardly avoid Punchout, because these customers' purchasing departments simply order from their own system and not through a separate shop login.
Punchout Is Not a Catalogue Upload
Why Digital Procurement Beats Fax and E-Mail Ordering
In many wholesale relationships, orders still arrive by fax, PDF attachment or an informal e-mail. Each of these orders has to be entered by hand on the receiving side: typing article numbers, checking quantities, reconciling prices, creating the order. This is slow, ties up staff and is error-prone. The BME reports that around 60 percent of companies name a lack of personnel and time resources as the biggest obstacle to digitalization (BME) - precisely the resources that manual order entry consumes. Digital procurement addresses this because ordering, approval and order creation mesh without media breaks.
The effect is measurable in the research. Almost all companies can simplify the ordering process through digitalization (95 percent), and 92 percent report easier communication with their business partners (Bitkom). At the same time, 53 percent admit they still have difficulties implementing digitalization (Bitkom) - the need is recognized, but the technical bridge is often missing. Punchout is one of these bridges: it turns your shop into the digital ordering channel for exactly those customers who still fax today. For topics such as creditworthiness and credit limits in the ordering process, see our article on the credit limit check in B2B checkout.
From Days to Minutes
A Punchout cart lands as a purchase requisition in the customer's system within seconds. Manual re-keying of faxes and PDF attachments disappears, and the order sits in your shop without an intermediate step.
Fewer Entry Errors
Because article numbers, quantities and prices are handed over in structured form, the typical typos of manual entry vanish. Wrong line items, swapped quantities and outdated prices become rarer.
Customers Stay Anchored
Whoever is embedded in the customer's purchasing system becomes the preferred supplier. The buyer orders from within their process with you, without opening a foreign shop login.
The Punchout Roundtrip: Session Handoff over HTTP
Technically, Punchout is a roundtrip in several steps that runs entirely over HTTP. It begins with the setup: the procurement system sends a request to your shop, authenticates and passes a so-called HOOK_URL to which the cart is later returned. Your shop then opens a session and answers with the start address of the catalogue. From there the buyer browses, assembles the cart and triggers checkout. On checkout, the cart is returned in structured form to the HOOK_URL, lands as a purchase requisition in the customer's approval workflow and, once released, becomes the actual order. This clean separation of catalogue session and actual order is a recurring pattern in API development for commerce.
- Setup request: The procurement system calls your shop, authenticates and passes user context plus the HOOK_URL for the return.
- Session login: Your shop validates the request, opens a catalogue session and returns the start address; from here the conditions of exactly this customer apply.
- Shopping in the shop: The buyer browses their customer-specific assortment with contract prices and tiers and assembles the cart.
- Cart return: On checkout, the shop hands over the cart in structured form - as NEW_ITEM fields in OCI, as a PunchOutOrderMessage in cXML.
- Order and approval: The cart becomes a purchase requisition, runs through the approval workflow and is issued as a purchase order (PO).
# 1) Procurement system opens the shop session (OCI call over HTTP)
GET /oci/start?USERNAME=buyer123&HOOK_URL=https://purchasing.customer.com/oci/inbound
# 2) After shopping, the shop returns the cart to the HOOK_URL
<form method="post" action="https://purchasing.customer.com/oci/inbound">
<input name="NEW_ITEM-DESCRIPTION[1]" value="Hex bolt M8x40 galvanized">
<input name="NEW_ITEM-MATNR[1]" value="HXB-M8-40-GV">
<input name="NEW_ITEM-QUANTITY[1]" value="500">
<input name="NEW_ITEM-UNIT[1]" value="C62">
<input name="NEW_ITEM-PRICE[1]" value="0.089">
<input name="NEW_ITEM-CURRENCY[1]" value="EUR">
</form>The excerpt shows OCI's basic principle: the setup call passes user context and HOOK_URL, and the return happens as an HTML form with NEW_ITEM fields that the browser sends to the HOOK_URL. cXML solves the same flow via XML documents: a PunchOutSetupRequest to start, a PunchOutSetupResponse with the start address and a PunchOutOrderMessage for the cart. Because the handoff runs over HTTP and the buyer's session, authentication and securing the endpoints are central. How to harden such interfaces against attacks is covered in the article on NIS2-compliant hardening of ERP interfaces. Whether the roundtrip runs robustly is decided in practice by the middleware in between, which handles session, mapping and error handling.
OCI or cXML: The Two Standards Compared
OCI and cXML pursue the same goal but were designed from different angles. OCI is deliberately lean: HTML form fields and URL parameters suffice to return a cart. This makes the integration straightforward but reaches limits with very complex or configurable products, because the data model provides fewer fields (SAP Open Catalog Interface). cXML is document-based and richer: it knows formal XML schemas, supports server-to-server messages and, besides the catalogue roundtrip, can also transport the actual order as an OrderRequest (cXML Reference Guide).
| Criterion | OCI (SAP) | cXML |
|---|---|---|
| Origin | by SAP for Punchout catalogues | published by Ariba in 1999 |
| Data format | HTML form fields / URL parameters | XML documents with schema |
| Cart return | NEW_ITEM fields via browser POST | PunchOutOrderMessage (XML) |
| Order (PO) | separate, often classic or via EDI | OrderRequest server-to-server |
| Adoption | SAP-centric purchasing systems | many e-procurement platforms |
| Character | lean, fewer fields | rich, more structure |
In practice, the OCI-or-cXML question is rarely an either-or decision but depends on the specific customer. A large customer with SAP purchasing often expects OCI, a big purchasing organization on an e-procurement platform usually cXML. A viable integration therefore maps both protocols onto a common internal data model, so that each new customer becomes a configuration rather than a new build. You know this principle of a protocol-independent middle from the EDI integration via EDIFACT, which in B2B trade often runs alongside Punchout. For the structured order and document flow afterwards, the same SAP integration applies as for classic orders.
The Rule of Thumb for Choosing the Standard
Customer-Specific Catalogues and Contract Prices
The real value of Punchout only emerges through customer-specific content. When the buyer jumps into your shop via handoff, they should not see the general web shop but exactly the assortment and prices their framework contract provides. This individualization decides whether Punchout is accepted as a serious procurement solution. The BME names real-time collaboration with suppliers as a decisive factor for more than 80 percent of purchasing leaders (BME), and it is precisely this closeness that an individual Punchout catalogue creates.
Customer-Specific Assortment
Each large customer sees only the articles their contract provides. Blocked line items, released alternatives and customer-owned article numbers are controlled through the session.
Contract Prices, Not List Prices
The catalogue shows the customer's net prices, tiers and framework conditions - not the public list price. The prices come live from the ERP.
GTIN and Classification
Clean master data is the foundation: the GTIN identifies articles uniquely, classifications such as GPC or eCl@ss categorize them (GS1 Germany). This helps the buyer find what they need.
Prices and Stock from the ERP
Availability and conditions come from your inventory system so the cart contains no outdated values. The inventory system integration provides the data basis.
Tiers and Quantity Logic
Quantity-dependent prices and packaging units must move correctly into the cart so the return to the procurement system is right and no discrepancies arise later.
Budget and Cost Centres
Punchout passes context such as cost centre and budget so the approval workflow in the procurement system takes effect. The assignment happens via fields in the session.
Price determination is the most demanding part. Customer-specific prices, tiers and time-limited conditions live in the ERP and must reach the catalogue with good performance. How to solve this with synchronization and caching is deepened in our article on customer-specific price synchronization in B2B. For the handed-over article numbers to match on both sides, you also need clean mapping between the customer key and the internal catalogue - a topic covered in detail by the article on data mapping between ERP and shop.
Implementation, Catalogue Maintenance and Interface Servicing
A Punchout integration is not a one-off project but an interface that wants ongoing maintenance. Each large customer brings its own requirements: a different protocol, deviating field mappings, own article numbers, specific cost-centre logic. That is why a robust solution places the entire Punchout logic in a middleware between procurement system and shop rather than in the shop itself. This layer receives setup requests, manages sessions, translates between OCI or cXML and the internal model and returns the cart correctly. The shop stays lean and the customer-specific complexity remains manageable in one place - an approach we pursue consistently in our integration services.
Servicing involves more than the initial build. Catalogues age, prices change, contracts expire and procurement systems update their Punchout profiles. A maintained interface monitors the sessions, logs failed returns and catches format deviations before they surface at the customer. Across more than 50 integration projects, ongoing maintenance - catalogue updates, price reconciliation, monitoring of handoffs - has proven to decide the success or frustration of a Punchout integration (project experience). Precisely this continuous care is the core of a wholesale integration that keeps customers in the purchasing system long term. Our references show the project approaches behind it.
Catalogue Maintenance Belongs to the Interface, Not Beside It
You do not win Punchout with the first successful cart, but with an interface that reliably maintains catalogues, prices and sessions over years - then the large customer stays with you from within their own purchasing system.