AsolPay Sandbox

The same three calls as the docs create, verify, and a sandbox-only way to make the payment actually confirm — so you can prove your integration works before a customer depends on it.

Everything created here belongs to one shared sandbox merchant. This page only ever shows the invoice you just made in this browser, so your test customers’ details are not on anyone else’s screen — but do not paste real customer data into a shared sandbox.

Your test key

Shared and publishable. Send it as the api-key header against api.asolpay.com — exactly as the docs show. Every payment it creates is marked sandbox and moves no money.

sk_test_asolpay_demo

1. Create a payment

POST /v1/payment/create

Try over ৳500 to meet the anti-fraud hold live applies to SMS-only evidence.

Echoed back to you on verify and in the webhook.

Really gets POSTed when the payment confirms. No public URL yet? webhook.site gives you one in a click. Must be publicly reachable — a localhost address is refused.

2. Open the checkout

Create a payment on the left and the checkout link and payment controls appear here.

Doing it from your own code

The buttons above are only a wrapper. Two calls are the whole sandbox, so this works in a script or in CI:

# 1. create a payment — returns payment_url
curl -X POST https://api.asolpay.com/v1/payment/create \
  -H "api-key: sk_test_asolpay_demo" \
  -H "Content-Type: application/json" \
  -d '{"amount":"250.00","tran_id":"ORD-1001",
       "cus_name":"Omor","cus_email":"omor@example.com",
       "success_url":"https://yoursite.com/thanks",
       "webhook_url":"https://yoursite.com/api/asolpay/webhook"}'

# 2. confirm it (SANDBOX keys only — a live key is refused)
curl -X POST https://api.asolpay.com/api/v1/sandbox/simulate-payment/ \
  -H "api-key: sk_test_asolpay_demo" \
  -H "Content-Type: application/json" \
  -d '{"invoice_id":"inv_…"}'

# 3. verify before you ship anything
curl -X POST https://api.asolpay.com/v1/payment/verify \
  -H "api-key: sk_test_asolpay_demo" \
  -H "Content-Type: application/json" \
  -d '{"invoice_id":"inv_…"}'

Add "amount" to simulate a wrong figure, reuse a "trx_id" to see a duplicate refused, or send "verification_level":"balance_confirmed" to confirm above the SMS-only ceiling. The response explains which happened.

How sandbox differs from live

Full API reference: asolpay.com/docs · Ready for live keys? Merchant dashboard