Sandbox · public · rate-limited per IP
SandboxTry it without writing a line of code
Three real-traffic widgets against the live sandbox environment. The kiosk binding is fixed for the demo (CCK020-SANDBOX) and a public bearer sits server-side so no credentials are needed to play. When you're ready for your own bearer, book a discovery call.
Mint a sandbox checkout
Fires a real call to /payment/createagainst the sandbox merchant. You'll get back a working cashier_url you can open in a new tab and complete with a sandbox card. Headers are signed server-side using the sandbox appkey / appsecretpair — you'll never see them.
Verify an appkey/random/signature triplet
Paste the three header values + the matching appsecret and we re-compute md5(appkey + random + appsecret) the same way the OpenPay receiver does. Tells you whether your verifier's math matches and surfaces a diagnostic hint when it doesn't.
Generate a sample MD5 triplet
Reverse of the verifier — paste an appkey + appsecret, get the canonical three header values OpenPay would emit. Useful for curl-testing your endpoint before live delivery is wired.
Phase-1 contract — legacy
Phase-1 (legacy) sandbox tools
The widgets below exercise the original /api/checkoutscontract (Bearer auth + HMAC-SHA256 callback). Only useful if your integration was wired before 2026-04-30 and hasn't migrated to the OpenPay spec yet. New integrations should use the OpenPay tools above.
Phase-1 · Mint a sandbox checkout
Fires the legacy /api/checkouts contract (Bearer auth + JSON body). Returns a pay_url + balaji_checkout_id.
Phase-1 · Verify a webhook signature
Paste the raw body, the Balaji-Timestamp + Balaji-Signature headers, and the webhook secret. We re-compute the HMAC the same way Balaji Pay does (over {timestamp}.{rawBody}) and tell you whether your verifier's math matches.
Phase-1 · Generate a sample signature
Reverse of the legacy verifier — paste a body + secret, get the canonical Balaji-Signature + Balaji-Timestamp headers Balaji Pay would emit on the Phase-1 callback.