Get started

Sandbox & test mode

Build the entire flow without touching real money. The sandbox is stateful — test users, balances and trades persist.

Sandbox uses live market prices but simulates settlement. Buys credit test balances, sells pay into a test INR wallet, and a per-partner float (₹1,00,000) backs it all. Reset any time from the Playground.

Magic values

Deterministic inputs let you exercise every branch instantly:

FieldTypeDescription
OTP1234optionalAny OTP prompt (login, embed, gifting) accepts 1234 in sandbox. There is no Aadhaar OTP any more — those endpoints answer 410 AADHAAR_OTP_RETIRED.
Email code123456optionalEmail verification code.
PAN ABCDE1234F→ verifiedoptionalKYC PAN that verifies successfully.
PAN ZZZZZ9999Z→ rejectedoptionalKYC PAN that fails verification (400 KYC_REJECTED).
Aadhaar by DigiLockersimulatoroptionalkyc/aadhaar/digilocker returns a url to a simulator page with Allow and Deny. Allow approves the KYC (kyc.approved); Deny leaves the session denied. Both then return to your returnUrl, as live does.
Aadhaar photos→ approved in ~30 soptionalkyc/aadhaar/photos (any 12-digit number starting 2–9, any base64 front and back) goes to under_review with kyc.under_review, then approves itself about 30 seconds later with kyc.approved.
Withdrawal …. 01→ failsoptionalAny withdrawal amount ending in .01 simulates a failure.

Reset the sandbox

curl -X POST https://api.oropocket.com/partner/sandbox/reset \
  -H "Authorization: Bearer oro_test_xxx"

This clears your sandbox users, balances and trades, and restores the float to ₹1,00,000.

Idempotency keys, webhooks and error shapes all behave in sandbox exactly as they do live — so what you test is what you ship. The KYC webhooks (kyc.approved, kyc.under_review) fire in sandbox too, with data.mode: "sandbox".

Daily request limit

Sandbox allows 1000 requests per day per partner, counted across every endpoint together and reset at 00:00 IST. It is generous for testing — a full integration run costs a few dozen calls — but a polling loop left running will spend it, which is exactly what it is there to stop.

Every sandbox response carries X-RateLimit-Remaining. Past the cap you get 429 SANDBOX_DAILY_LIMIT. Your live token is unaffected, and regenerating your sandbox token does not reset the count. If you genuinely need more, ask — it is configurable per partner. See Errors & rate limits.