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>

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

Works with

PO acknowledgment
<150ms
protocols, cXML + OCI
2
cXML documents, full round trip
4
contract pricing from Shopify B2B catalogs
100%

How it works

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

New to punchout? Start with the guide: what punchout is, the round trip step by step, cXML versus OCI, and what Shopify gives you out of the box. How punchout works →

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.

No spam. We reply personally.