01 / 03
Contract pricing per company location
Prices come straight from Shopify B2B catalogs, per company location. What the buyer sees in the punchout session is what lands on the purchase order.
01 / 07
SHOPIFY × COUPA
Coupa buyers configure punchout themselves, and Coupa charges suppliers nothing. We give your Shopify store the endpoint, the contract pricing, and the cart return that just works.
02 / 07
THE GAP
Coupa is the enablement you hope for after reading about Ariba. No supplier network fee, no transaction fee, no central catalog validation queue. Your buyer's Coupa admin configures the punchout connection in their own instance, usually in a single session.
What they need from you is a short list: a punchout URL, From and To identities, a shared secret, and test credentials. PunchRelay generates all of it for your Shopify store, serves the punchout session at your B2B contract prices, and returns the cart exactly the way Coupa expects. Integrators quote 4,000 to 12,000 USD per connection for plumbing this app already has.
↳ SOUNDS FAMILIAR?
03 / 07
THE ARTIFACT
<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>Round trip
A punchout request opens the catalog. The cart returns to the buyer's system as a document. The purchase order that follows is checked against that cart and waits for your review. The XML is the product.
04 / 07
THE ROUND TRIP
Your buyer clicks your catalog in Coupa. Coupa sends a cXML PunchOutSetupRequest to the endpoint PunchRelay provisions. We validate the shared secret and identities and map the buyer to their Shopify B2B company location.
The buyer browses the PunchRelay catalog, with products and contract prices from the Shopify B2B catalog assigned to their company location.
On transfer, the cart posts back into Coupa as a cXML PunchOutOrderMessage with SKUs, quantities, UNSPSC codes and unit prices. Quantity rules are enforced before the transfer, not after the rejection.
The cart becomes a requisition and moves through the buyer's approval flow in Coupa. Your side is done and logged. When the buyer's admin has questions, the credential-redacted XML answers them.
cXML purchase orders are accepted durably, checked against the transferred cart and placed in the Purchase orders inbox in the PunchRelay app. Nothing is created in Shopify until someone on your team reviews the PO and clicks Create Shopify order. The order is then created unpaid, with payment pending, ready to fulfill. OCI returns a cart only; the purchase-order leg is agreed and tested separately for each buyer.
05 / 07
THE CHECKLIST
01 / 03
Prices come straight from Shopify B2B catalogs, per company location. What the buyer sees in the punchout session is what lands on the purchase order.
02 / 03
Minimums, maximums and case increments run in the cart, before the PunchOutOrderMessage leaves. Requisitions arrive in Coupa already matching what you will fulfill.
03 / 03
Every document in and out is logged with credentials redacted. Coupa admins configure punchout themselves, and when they hit a snag, you hand them the exact request and response instead of a support ticket.
Works with
06 / 07
07 / 07
READY
We are onboarding a small group of Shopify B2B merchants and building their first buyer connections with them. Tell us where to reach you.
THE ON-RAMP
A complete punchout readiness roadmap for your exact catalog, ERP, and buyer procurement systems before you commit to live deployment.
↳ NO SLIDE DECK