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.

$0.50 – $10,000.00. Two decimal places max. Maps to trade_amount in the form-urlencoded body.
Embedded as JSON-string in the sku field per the OpenPay spec.
Maps to the body form field — shown to the customer on the hosted page.

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.

Sender-provided nonce. Typically 32-char hex but any string up to 64 chars works.
md5(appkey + random + appsecret), lowercase hex. We strip whitespace before comparing.
For the demo, the sample secret above is fine. In production this is the secret Balaji provisioned for your environment — never commit it to a repo.

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.

Pass an explicit value to reproduce a signature; leave blank and we'll mint one via randomBytes(16).toString("hex").

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.

$0.50 – $10,000.00. Two decimal places max.

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.

Whitespace matters. If your verifier reads JSON then re-stringifies, the bytes change.
Either with or without the hmac-sha256= prefix — we strip it before comparing.

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.