CXML + OCI PUNCHOUT FOR SHOPIFY
Punchout for Shopify. Both directions.
PunchRelay connects your Shopify store to your buyers' procurement systems. They punch out to your catalog at contract prices. Their purchase orders come back as Shopify orders.
<cXML payloadID="20260806.1@buyer.example.com">
<Request deploymentMode="production">
<PunchOutSetupRequest operation="create">
<BuyerCookie>7f2c-buyer-session</BuyerCookie>
<Extrinsic name="UserEmail">jane@buyer.example.com</Extrinsic>
<BrowserFormPost>
<URL>https://buyer.example.com/punchout/return</URL>
</BrowserFormPost>
</PunchOutSetupRequest>
</Request>
</cXML><PunchOutOrderMessage>
<BuyerCookie>7f2c-buyer-session</BuyerCookie>
<PunchOutOrderMessageHeader operationAllowed="edit">
<Total><Money currency="USD">1250.00</Money></Total>
</PunchOutOrderMessageHeader>
<ItemIn quantity="50">
<ItemID><SupplierPartID>SKU-4711</SupplierPartID></ItemID>
<ItemDetail>
<UnitPrice><Money currency="USD">25.00</Money></UnitPrice>
<Description xml:lang="en">Nitrile gloves, box of 100</Description>
</ItemDetail>
</ItemIn>
</PunchOutOrderMessage><Request>
<OrderRequest>
<OrderRequestHeader orderID="PO-10023" orderDate="2026-08-06" type="new">
<Total><Money currency="USD">1250.00</Money></Total>
<ShipTo><Address addressID="BER-01"/></ShipTo>
</OrderRequestHeader>
<ItemOut quantity="50" lineNumber="1">
<ItemID><SupplierPartID>SKU-4711</SupplierPartID></ItemID>
</ItemOut>
</OrderRequest>
</Request>Your biggest customers stopped clicking checkout buttons years ago. They order through procurement systems: SAP Ariba, Coupa, Jaggaer, or an SAP ERP speaking OCI. If your Shopify store cannot answer a PunchOutSetupRequest, you are an email attachment and a retyped purchase order.
PunchRelay is the connector in between. It answers punchout requests, opens your Shopify catalog at each buyer's contract prices, returns the cart in the format their system expects, and turns the purchase order that follows into a Shopify order. Two protocols, cXML and OCI, one app.
Start from your buyer's system
SAP Ariba
cXML punchout with the full document round trip, from PunchOutSetupRequest to OrderRequest. Includes the network-fee reality check every supplier should read before enablement.
Ariba punchout for Shopify →Coupa
The fastest enablement in procurement: buyers configure punchout themselves and Coupa charges suppliers nothing. The right first connection for most merchants.
Coupa punchout for Shopify →SAP ERP · OCI
HOOK_URL round trips for SAP SRM, S/4HANA and other OCI buyers, with the custom NEW_ITEM fields their ERP demands. Built for DACH procurement.
OCI punchout for Shopify →Works with
- SAP Ariba
- Coupa
- Jaggaer
- Oracle Procurement
- Workday
- SAP SRM
- Unimarket
- PO acknowledgment
- <150ms
- protocols, cXML + OCI
- 2
- cXML documents, full round trip
- 4
- contract pricing from Shopify B2B catalogs
- 100%
How it works
- 01
Buyer punches out
A buyer clicks your catalog inside their procurement system. The system calls your PunchRelay endpoint: a cXML PunchOutSetupRequest, or an OCI call carrying HOOK_URL. PunchRelay validates the credentials and maps the buyer to their company location in Shopify B2B.
- 02
They shop your real catalog
The buyer lands in your Shopify storefront, scoped to the right company location. Prices come from your Shopify B2B catalogs, so every line shows their contract price, not list price.
- 03
The cart goes back, not through checkout
There is no checkout. When the buyer is done, PunchRelay returns the cart to their system as a cXML PunchOutOrderMessage or an OCI NEW_ITEM form post, with quantity rules enforced before transfer.
- 04
Approval runs on their side
The cart becomes a requisition in the buyer's system and works through their approval chain. Days can pass. Nothing on your side blocks, and the whole session sits in the XML logs.
- 05
The purchase order becomes a Shopify order
The approved PO returns as a cXML OrderRequest. PunchRelay acknowledges it in under 150ms and creates the order in Shopify at the punchout prices. No retyping, no PDF attachments.
Built for the buyer's IT checklist
Contract pricing per company location
Prices come straight from Shopify B2B catalogs. Each buyer sees the prices you negotiated, per company location, in the punchout session and again on the returned purchase order.
Quantity rules enforced before transfer
Minimums, maximums and case increments from your B2B settings are enforced in the cart, before it reaches the procurement system. Fewer rejected requisitions, fewer support emails.
Full XML session logs, both directions
Every request and response is logged raw, from PunchOutSetupRequest to OrderRequest. When your buyer's IT team asks what happened, you send them the actual XML, not a screenshot.
Get early access
We are onboarding a small group of Shopify B2B merchants and building their first buyer connections with them. Tell us where to reach you.