Last updated:

PunchOut Catalog Integration for Shopify B2B

A PunchOut catalog lets your largest customers buy from inside their own procurement system — Ariba, Coupa, Jaggaer, SAP — without ever leaving it. They punch out to an authenticated session on your storefront, build a cart at their contract prices, and send it back as a requisition. Shopify Plus has no native cXML or OCI endpoint, so this is middleware work — and it is the work that decides whether enterprise buyers can order from you at all.

Shopify Plus
Partner
SINCE 2014
Patchworks
Integration Partner
iPaaS
Sonepar
Lumen
OPERATOR EXPERIENCE
18+
Years
B2B OPERATOR EXPERIENCE
01The commercial case
Why it matters

Why does a PunchOut catalog win business?

Because for a large buyer, purchasing outside the procurement system is not allowed. Industrial, institutional and public-sector buyers run spend through Ariba, Coupa, Jaggaer or SAP because that is where approval chains, budget codes and audit trails live. A supplier who cannot be reached from inside that system is not a difficult supplier to buy from — they are an out-of-policy one. The order goes to whoever is in the catalog.

This is why PunchOut shows up on RFPs as a requirement rather than a feature. It is also why it is one of the few integrations with a directly attributable revenue line: the accounts it unlocks are usually the largest ones on the list, and they are frequently unreachable without it. If you sell into MRO, electrical, industrial supply, lab, facilities or public procurement, some share of your addressable market is currently invisible to you for protocol reasons alone.

02Architecture
cXML and OCI

How does a PunchOut integration work?

Four steps, and the same four regardless of protocol. The procurement system opens a session against your endpoint with credentials identifying the buying organisation. Your endpoint authenticates, resolves that organisation to the right company, catalog and price list, and returns a start URL. The buyer shops in that authenticated session. When they are done, the cart is serialized and posted back to the procurement system as a requisition line set.

The protocol decides the wire format, not the shape. cXML — Ariba’s standard, and what Coupa and Jaggaer also speak — uses a PunchOutSetupRequest, a PunchOutSetupResponse, and a PunchOutOrderMessage. OCI, SAP’s standard, uses URL parameters on the way in and an HTML form POST of named fields on the way back. Supporting both is normal for a supplier with a mixed customer base, and the second endpoint costs far less than the first. Where your ERP holds the contract prices, this connects to the same integration layer as our SAP and NetSuite work.

03On Shopify
Native B2B plus middleware

Can Shopify Plus serve a PunchOut buyer?

Yes, with middleware — and Shopify Plus is a better host for this than it first appears. There is no native cXML or OCI endpoint and no setting that creates one, so the protocol layer has to be built. But the hard part of PunchOut is not the protocol; it is exposing the right catalog at the right price to the right buying organisation, in an authenticated session. Shopify Plus already models exactly that, natively, as companies, catalogs and price lists.

So the middleware does less than people expect. It terminates the handshake, maps the buyer’s procurement credentials onto a Shopify company and location, opens the session, and serializes the returned cart. The commerce — pricing, entitlement, stock, checkout rules — stays in Shopify Plus where it belongs. That is the same division of labour behind B2B Protocol, our production accelerator for B2B flows Shopify does not cover natively.

04Where it goes wrong
The failure modes

What makes PunchOut projects overrun?

Rarely the code. Three things account for most overruns. Certification calendars: every buyer tests in their own sandbox on their own schedule, and supplier enablement queues at Ariba and Coupa are not yours to compress. Data readiness: UNSPSC classification and a unit-of-measure model that survives the round trip are usually missing, and they are discovered late because nothing on your own storefront needs them.

And scope: teams ship PunchOut, then learn the buyer will not go live until the purchase order can come back electronically too — cXML OrderRequest or EDI 850, usually followed by 855, 856 and 810. PunchOut gets the cart out; the PO channel gets the order in. Scope both at the start even if you build them in sequence, and the project stays honest. We plan integrations as peer workstreams to the storefront, which is the same discipline described across our platform and integration practice.

06FAQ

Frequently asked questions

What is a PunchOut catalog?

A PunchOut catalog is a supplier webstore that a buyer reaches from inside their own procurement system rather than from their browser. The buyer is in Ariba, Coupa, Jaggaer or SAP, clicks your name in their supplier list, and lands in an authenticated session on your storefront — already identified, already priced at their contract rates. They build a cart, click a return button, and the cart is transferred back into their procurement system as a requisition. Approval happens there, and a purchase order comes back to you. The buyer never leaves their procurement workflow, and you never have to maintain a static price file inside their system. That last part is the reason PunchOut exists: hosted catalogs go stale the day you upload them, while a PunchOut session reads live pricing and live stock every time.

What is the difference between cXML and OCI PunchOut?

They are the two dominant PunchOut protocols and they solve the same problem differently. cXML — commerce eXtensible Markup Language, originated by Ariba — is XML-based: the procurement system sends a PunchOutSetupRequest containing credentials and a return URL, your endpoint answers with a PunchOutSetupResponse carrying a session start URL, and the finished cart goes back as a PunchOutOrderMessage. It is what Ariba, Coupa and Jaggaer speak natively. OCI — Open Catalog Interface, SAP’s standard — is simpler and older: the handshake is an HTTP call with URL parameters, and the cart returns as an HTML form POST of named fields rather than a structured document. Neither is harder to build than the other, but they are not interchangeable, and a supplier serving both a Coupa buyer and an SAP buyer needs both endpoints. Scope which of your customers use which before you build anything.

Does Shopify support PunchOut natively?

No, and it is worth being direct about that. Shopify Plus has excellent native B2B — company accounts, catalogs, price lists, payment terms, B2B checkout — but it does not ship a cXML or OCI endpoint, and there is no setting to turn one on. PunchOut on Shopify is a middleware pattern: a service that terminates the procurement system’s handshake, authenticates the session, maps the buyer to the right Shopify company and catalog, hands them into the storefront, and serializes the returned cart back into cXML or OCI. Shopify’s native B2B objects are what make this tractable rather than painful — the company, catalog and price list model maps almost directly onto what a PunchOut session needs to expose. The middleware supplies the protocol; Shopify supplies the commerce.

How long does a PunchOut integration take?

Plan 8 to 14 weeks for a first PunchOut endpoint, and expect the calendar rather than the code to set the pace. The build itself — handshake, session authentication, catalog scoping, cart serialization — is well-defined work. What extends the timeline is certification: each buyer’s procurement team has to test the connection in their own sandbox, and their availability, not yours, decides when that happens. Ariba and Coupa both run supplier enablement processes with their own queues. Additional buyers on the same protocol are much faster afterwards, usually two to four weeks, because the endpoint already exists and only the credentials, catalog scope and pricing mapping change. Budget the first one honestly and the rest get cheap.

What does a PunchOut catalog need to expose that a normal storefront does not?

Four things a DTC-grade storefront has no reason to carry. Contract pricing, resolved per buying organisation at session time rather than at page-cache time. Catalog scoping, so a buyer only sees the SKUs their agreement covers — procurement teams treat an out-of-contract item in the cart as a compliance failure, not a browsing convenience. Classification codes, usually UNSPSC, because the requisition and the spend analytics on the buyer’s side are built on them. And a unit-of-measure model that survives the round trip, since procurement systems reason in the buyer’s purchase units, not your selling units. Get any of those wrong and the cart returns, but the requisition fails validation — which is the failure mode that costs the most to debug because it happens on someone else’s system.

What happens after the cart returns to the buyer?

The cart becomes a requisition, goes through the buyer’s approval chain, and comes back to you as a purchase order — and that PO is a separate integration, not part of PunchOut. Most enterprise buyers send it as cXML OrderRequest or as EDI 850, and expect an acknowledgement in return. From there the same relationship usually wants EDI 855 for order confirmation, 856 for advance ship notice, and 810 for invoicing. Teams often scope PunchOut on its own, ship it, and then discover that the buyer will not go live until the PO channel exists too. Scope both from the start even if you build them in sequence.

Should we build PunchOut or use a hosted catalog?

Hosted catalogs — a price file uploaded into the buyer’s system — are cheaper to start and worse to live with. Every price change and every product addition becomes a file exchange, stock is never represented, and configurable or made-to-order items cannot be expressed at all. They make sense for a short, stable, low-SKU line. PunchOut earns its cost when your catalog moves, when pricing is negotiated per account, when stock matters to the buying decision, or when the buyer wants search and comparison rather than a spreadsheet. The honest test: if you would be embarrassed by how stale your hosted file is three months after upload, you need PunchOut.

Get in touch

Which of your buyers are asking for PunchOut? Let’s scope it.