CostaTech – Express Checkout for Shop Pay

Description

This plugin brings Shopify’s Shop Pay Wallet to your store. Shoppers get a fast, familiar “Buy with Shop Pay” button – both as an express button above the cart/checkout form, and as a normal entry in your payment method list – that opens Shop Pay’s own hosted payment sheet and completes the purchase without leaving your store’s checkout flow.

How it works

The plugin builds a live payment request from the WooCommerce cart (line items, discounts, shipping options, tax) and keeps it in sync with Shop Pay’s payment sheet in real time as the shopper changes their shipping address, delivery method, or discount code. As soon as the shopper submits payment, the plugin creates the matching WooCommerce order immediately – correctly reflecting the price, discount, shipping method, and customer account, exactly as shown in the payment sheet – the same way a normal WooCommerce checkout creates an order before payment is confirmed.

Reliability

Shop Pay’s own payment confirmation is asynchronous: submitting a payment successfully does not, by itself, guarantee the charge will actually be approved. Because of this, the plugin never marks an order as paid purely from that initial response – the order stays at Pending payment immediately after submission, and only Shopify’s own order-creation webhook – which reports the charge’s real, final status – moves it to Processing. If that webhook is delayed or misconfigured, the plugin also emails the store admin so nothing is missed silently. Setting up the webhook (see Installation) is strongly recommended – without it, successful orders will not automatically progress past “Pending payment”.

Note: because the order remains in WooCommerce’s standard “Pending payment” status rather than “On hold”, it is subject to your store’s own “Hold stock (minutes)” setting (WooCommerce > Settings > Products > Inventory), which can automatically cancel pending orders – and release their reserved stock – after that time period. If your webhook is ever significantly delayed, a genuinely-paid order could be auto-cancelled before confirmation arrives; consider setting a generous hold-stock window if this matters for your store.

Requirements

Shop Pay Wallet requires a Shop Pay/Shopify account with Shopify Payments active, separate from your WooCommerce store – this plugin connects to it via Shopify’s Storefront API. You’ll need:

  • A dedicated Shop Pay account with Shopify Payments approved for your business
  • Your Shop ID, Client ID, myshopify.com handle, and a Storefront API access token (all obtained from your Shop Pay admin – see Shopify’s Shop configuration guide)
  • A webhook signing secret from Shopify admin – required for orders to automatically progress from “Pending payment” to “Processing” once payment is confirmed
  • (Optional) a prefix for Shopify order names (e.g. “NZ”), so a WooCommerce order number and its corresponding Shopify order are easy to tell apart at a glance

Third-party service disclosure

This plugin loads Shop Pay’s JavaScript SDK directly from Shopify’s CDN (cdn.shopify.com) on the cart and checkout pages, so the “Buy with Shop Pay” button can render – this happens as soon as either page loads, not only after a click. No cart, checkout, or customer data is sent to Shopify until a shopper actively opens the Shop Pay checkout; from that point on, the plugin sends cart and checkout data (product details, pricing, shipping selection, and – once payment is confirmed – the buyer’s billing/shipping details) to Shopify’s Storefront API in order to process the payment. See Shopify’s Privacy Policy and Terms of Service for how Shopify handles this data. “Shop Pay” is a trademark of Shopify Inc.; this plugin is an independent, unofficial integration and is not produced, endorsed, or supported by Shopify.

Known limitations (v1)

  • Supports a single shipping package per order (most WooCommerce stores). Orders that split into multiple shipping packages are not yet supported.
  • Refunds and order capture are handled through your existing WooCommerce/Shop Pay admin workflows – this plugin does not yet automate refund sync between the two.

Screenshots

Installation

  1. Install and activate WooCommerce if you haven’t already.
  2. Upload and activate this plugin.
  3. Set up a Shop Pay account and enable Shopify Payments for it, if you haven’t already (see Shopify’s Shop Pay documentation).
  4. Go to WooCommerce > Settings > Payments > Shop Pay Wallet and enter your Shop ID, Client ID, myshopify.com handle, and Storefront API access token – see Shopify’s Shop configuration guide for where to find each of these in your Shop Pay admin.
  5. In your Shop Pay admin, allowlist your store’s domain as an allowed origin for the Shop channel.
  6. In Shopify admin, go to Settings > Notifications, scroll to Webhooks, and create webhooks for “Order creation” and “Order payment” (format: JSON), pointed at the URL shown in this plugin’s settings screen. Paste the shared secret shown there into the plugin’s “Webhook signing secret” field. This step is strongly recommended – without it, orders will not automatically progress past “Pending payment” once paid.
  7. Enable the gateway and test a full purchase using Shopify Payments’ test mode before going live.

FAQ

Do I need a Shopify store to use this?

You need a Shop Pay account with Shopify Payments active – this is a separate, dedicated account for accepting Shop Pay payments, not a full Shopify store replacing WooCommerce. WooCommerce remains your store and the source of truth for orders, products, and inventory.

Does this replace my other payment gateways?

No – it adds Shop Pay as an additional option alongside your existing gateways. Shoppers who don’t use Shop Pay check out exactly as before.

Why does a new order stay at “Pending payment” instead of “Processing”?

This is expected. Shop Pay’s own payment confirmation happens asynchronously, so the plugin cannot know at the moment of checkout whether a charge will ultimately be approved – the order stays pending immediately after submission, then relies on Shopify’s order-creation webhook to confirm the real outcome and move it to Processing. This is usually near-instant, but depends on the webhook being set up correctly (see Installation) and Shopify’s own delivery of it.

What happens if a payment succeeds but the order doesn’t get marked paid?

Since the WooCommerce order is created before the charge is even submitted, there’s no separate order-rebuilding step to fail – the order already exists, pending. If the webhook that would normally move it to Processing is ever delayed, missing, or misconfigured, the plugin emails the store admin so it can be checked and resolved manually.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“CostaTech – Express Checkout for Shop Pay” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.0

  • Initial release.