Accept shielded Zcash (ZEC) payments on your Shopify store. Non-custodial, private, instant detection.
Powered by CipherPay.
Customer checkout → selects "Pay with Zcash" →
→ Shopify creates order (pending) →
→ Checkout script creates CipherPay invoice →
→ Customer redirected to CipherPay hosted checkout →
→ Customer pays with shielded ZEC →
→ CipherPay confirms → webhook → Shopify order marked as paid
Funds go directly to the merchant's Zcash wallet. CipherPay never holds funds.
- A Shopify store
- A CipherPay merchant account (free)
- Your CipherPay API Key and Webhook Secret (from the dashboard)
Visit the install page and enter your Shopify store URL:
https://shopify.cipherpay.app
Authorize the app when prompted.
After installation, you'll be redirected to the settings page. Enter:
- CipherPay API Key — from your CipherPay dashboard → Settings → API Keys
- CipherPay Webhook Secret — from your CipherPay dashboard → Settings → Webhook Secret
- API URL — use
https://api.cipherpay.appfor production, orhttps://api.testnet.cipherpay.appfor testing
- In your Shopify admin, go to Settings → Payments
- Scroll to Manual payment methods
- Click Add manual payment method
- Name it:
Pay with Zcash (ZEC) - Optional: add instructions like "You'll be redirected to pay with shielded ZEC after placing your order."
- In your Shopify admin, go to Settings → Checkout
- Scroll to Additional scripts (Order status page)
- Paste the following script tag:
<script src="https://shopify.cipherpay.app/checkout.js" data-shop="YOUR-STORE.myshopify.com"></script>Replace YOUR-STORE.myshopify.com with your actual Shopify domain.
In your CipherPay dashboard → Settings → Webhook URL, set:
https://shopify.cipherpay.app/api/webhook/cipherpay
- Place a test order on your store
- Select "Pay with Zcash (ZEC)" at checkout
- Complete the order — you'll be redirected to CipherPay's checkout page
- Pay with ZEC (use testnet for testing)
- Once confirmed, the Shopify order is automatically marked as paid
# Clone
git clone git@github.com:atmospherelabs-dev/cipherpay-shopify.git
cd cipherpay-shopify
# Install
npm install
# Configure
cp .env.example .env
# Fill in your Shopify Partner app credentials
# Run
npm run devFor local development, use ngrok to expose your dev server:
ngrok http 3002Then set HOST in .env to your ngrok URL and update your Shopify app's redirect URLs accordingly.
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Shopify Store │────▶│ This App │────▶│ CipherPay API │
│ (merchant) │ │ (bridge) │ │ (payment) │
└──────────────────┘ └──────────────────┘ └──────────────────┘
│ │
┌─────┴─────┐ ┌─────┴─────┐
│ SQLite │ │ Scanner │
│ (sessions)│ │ (Zcash) │
└───────────┘ └───────────┘
- Shopify OAuth — secure app installation
- Payment sessions — tracks invoice ↔ order mapping
- HMAC verification — validates both Shopify and CipherPay webhooks
- SQLite — lightweight session storage (no external DB needed)
| Variable | Description |
|---|---|
SHOPIFY_API_KEY |
From your Shopify Partner dashboard |
SHOPIFY_API_SECRET |
From your Shopify Partner dashboard |
SHOPIFY_SCOPES |
API permissions (default: read_orders,write_orders) |
HOST |
Your app's public URL |
CIPHERPAY_API_URL |
Default CipherPay API URL |
- CipherPay — Zcash payment gateway
- CipherPay API — Rust backend
- CipherPay Web — Dashboard & checkout frontend
- CipherScan — Zcash blockchain explorer
MIT