Start
Zippy Pay overview
Integrate checkout with payment sessions, the Checkout SDK, and signed webhooks.
Zippy Pay lets merchants accept payments through amount-locked checkout sessions, an embeddable Checkout SDK, and signed webhooks. Your backend creates sessions with an API key; customers pay in the browser or Zippy mobile app; you confirm outcomes asynchronously.
Start building
Quickstart
Create an API key, register a webhook, and open your first payment session.
Authentication
Separate credentials for your server, checkout SDK, and webhook verification.
Session lifecycle
Handle session statuses, phases, and checkout method locking correctly.
Checkout SDK
Embed the Zippy Pay checkout experience in your application.
Webhooks
Receive payment events and verify every delivery signature.
Models
Integration models
Server-side session + Checkout SDK
Your backend creates a payment session with X-Api-Key, stores the returned sessionId and clientToken, and passes both to @zippypay/checkout in the browser.
Webhook-first confirmation
Treat payment_session.completed and related events as the source of truth for fulfillment. Poll merchant GET endpoints from your backend as a reconciliation fallback. Use redirect URLs for customer UX, not as your only reconciliation path.
Architecture
How Zippy Pay works
Merchant backend
Creates payment session
Zippy API
Returns sessionId + clientToken
Checkout SDK
Customer pays in browser
Zippy mobile app
Customer confirms payment
Async confirmation
payment_session.completed
payment_session.expired
payment_session.declined
Sessions move through statuses such as Created, Awaiting Payment, and Completed. Terminal outcomes include Expired, Cancelled, and Failed.
Quickstart
10-minute integration path
- Complete KYB, confirm business status is ACTIVE, and create your receive payment ID.
- Register allowed browser origins for every production checkout domain.
- Create an API key (
zp_live_..., shown once). - Register an HTTPS webhook endpoint and store
whsec_.... - Create a payment session with
POST /api/v1/payment-sessions. - Embed @zippypay/checkout with the returned
sessionIdandclientToken. - Verify webhook signatures and fulfill on
payment_session.completed, or poll GET /payment-sessions from your backend as a fallback.