"Punchout" support using the Shopify API

New Member
1 0 1

Hi everyone, 

We’re interested to know whether it is possible to implement “punchout” using the Shopify API. We run a website (DonorsChoose.org) where teachers can order materials for their classrooms. The idea is that a teacher could punchout to a Shopify merchant to view a catalog without having to sign-in to Shopify, and the cart contents will be transmitted to DonorsChoose.org electronically when they are done shopping.

Specification -

In the punchout protocol, the teacher begins at DonorsChoose.org and "punches out" to a Shopify website where the product catalog is hosted. The following steps describe the teacher’s experience as they go through a punchout session:

  1. When a teacher wants to purchase items, they click a link on DonorsChoose.org which sends them to the merchant’s catalog site.
  2. The teacher lands on the merchant’s site, and they are already logged into the session as an existing account that all teachers from DonorsChoose.org share for the purpose of the punchout session with the merchant, or as a guest account that doesn’t require them to sign-in.
  3. The teacher proceeds to add items from the catalog into their cart.
  4. Upon clicking “check-out”, the teacher is routed back to DonorsChoose.org (instead of seeing the regular Shopify payment screen) where the items that they added to the cart appear.
  5. DonorsChoose.org stores this cart information until it is ready to be turned into a purchase order on behalf of the teacher.

Implementation -

Punchout is implemented by DonorsChoose.org’s and merchants' sites in the following manner:

  1. When the teacher clicks the link to the merchant, DonorsChoose.org sends an HTTP POST request to a predetermined endpoint URL on the merchant’s server. The POST contains authentication credentials that the merchant verifies, and a return URL that the merchant should send the teacher back to when they are finished shopping.
  2. If the credentials are deemed valid, the merchant includes the punchout URL in the response to DonorsChoose.org’s request.
  3. DonorsChoose.org redirects the teacher to the URL provided by the merchant in the response.
  4. The teacher lands on the merchant’s catalog site logged into a punchout session using the credentials provided by DonorsChoose.org in the initial request.
  5. The teacher adds items to the cart and clicks on the checkout confirm link. The merchant makes an HTTP POST request to DonorsChoose.org at the return URL provided in DonorsChoose.org’s initial request. This POST contains detailed information about the items in the cart that the teacher checked out with.
  6. The teacher lands back on DonorsChoose.org’s site where the cart’s contents are displayed. Note that the result of the punchout session is a merely a purchase requisition. The requisition will go through various workflow processes over several days before it is converted into a purchase order by DonorsChoose.org.

Some differences between punchout and the default Shopify experience:

  • The teacher does not see a log-in screen on the Shopify merchant’s site, since they are already logged in when they arrive.
  • The teacher also does not see any forms asking for payment information. There is just a link to confirm the requisition and return to DonorsChoose.org.

Any insight as to whether something like this is possible using the Shopify API/Webhooks/ScriptTags is greatly appreciated. If we were able to get it working, it would mean that the tens of thousands of teachers using DonorsChoose.org every day could also request classroom resources from Shopify merchants!

Thank you!

1 Like
Shopify Staff (Retired)
Shopify Staff (Retired)
9 0 2

Hi Ken,

Thanks for the post! My name is Dan, and I Manage the Partner Program, and Shopify Experts.

Many things are possible with Shopify, you just need to find the right 3rd party to tackle this for you. I would suggest reaching out to some of our Shopify Developer Experts http://experts.shopify.com/developers

If you need further advice on 'who' might be the best fit for your project, please contact me dan (dot) eveleigh @ shopify.com




Shopify Staff
Shopify Staff
132 2 4

Hi Ken,

It sounds like your app would need to be able to create orders via the API, which isn't yet an available feature, but will be in the future. Keep an eye on the tech blog (http://shopify.com/technology) for info on new API features.


New Member
1 0 0

Hello Ken,


have you been able to implement PunchOut to your Shopify Store?


As a PunchOut Technology provider on the cloud, we could help you sort this out, if ever you still require help with this issue.


We can help with cXML or OCI PunchOut Catalogs.


Kind Regards,

PunchOut specialist