Payment Gateway
Shopify bridge setup
Manual offsite payment flow for Shopify stores that need attribution tracking without a full Shopify Payments app approval.What this bridge does
- Merchant creates a manual Shopify payment method named Secure Card Payment.
- Customer places the Shopify order using that manual method.
- Shopify sends an orders/create webhook to the gateway.
- The gateway validates the order, restricted-item rules, merchant token, and connected account.
- The gateway creates a hosted payment checkout and stores a Shopify payment session.
- The gateway suppresses duplicate Shopify webhook retries so one order maps to one payment session.
- The gateway can email the hosted payment link to the customer when email sending is configured.
- Processor webhooks reconcile paid, failed, expired, and cancelled states back to the bridge ledger.
- When Shopify writeback is enabled, paid processor events mark the manual Shopify order as paid.
Merchant setup
- Get the merchant's Payment Gateway API Base URL and Merchant Token.
- In Shopify, create a custom/manual payment method named Secure Card Payment.
- Set payment instructions to tell customers they will receive or open a secure payment link after placing the order.
- Create a Shopify custom app with Admin API access to read_orders, write_orders, and webhooks.
- Register the shop with the gateway using the endpoint below.
- Create an orders/create webhook pointing at the webhook URL returned by registration.
Register shop endpoint
POST https://api.noramp.dev/shopify/register-shop
Authorization: Bearer <merchant_token>
Content-Type: application/json
{
"shop_domain": "merchant-store.myshopify.com",
"admin_access_token": "shpat_...",
"scopes": "custom_app_admin_token"
}
The response includes the Shopify orders/create webhook URL and the required manual payment method name.
Webhook URL
https://api.noramp.dev/webhooks/shopify/orders-create
Shopify signs this webhook with the Shopify app secret. The gateway rejects unsigned or incorrectly signed requests.
Operational notes
- This is a bridge, not a native Shopify payment app. It cannot insert card fields into Shopify checkout without Shopify Payments App approval.
- Set
SHOPIFY_WRITEBACK_ENABLED=1to mark paid manual orders in Shopify after the processor confirms payment. The Shopify custom app user must have permission to mark orders as paid. - Set
RESEND_API_KEYandEMAIL_FROMto email payment links automatically. SetSHOPIFY_PAYMENT_LINK_EMAIL_ENABLED=0to disable those emails. - Use Shopify API version
2026-04by default, or override it withSHOPIFY_ADMIN_API_VERSION.