Resources
Sandbox scenarios
The sandbox runs the same code as production against the same catalogue. Only issuing and money are simulated.
What is identical to live
- The catalogue, plan IDs, filters and pricing logic.
- Validation, idempotency, rate limiting and the error envelope.
- Order and eSIM objects, field for field.
- Wallet debits, refunds and the transaction history.
- Webhook delivery, signing and retries.
What is simulated
- Nothing is provisioned on the live network. eSIMs are generated locally with a valid-looking ICCID and LPA activation code.
- The QR image is real and scannable but the profile behind it is not a working eSIM — installing it gives no connectivity.
- Usage never changes on its own: a sandbox eSIM stays ALLOCATED with zero bytes used.
- Your balance is play money, topped up by Journey Stack. Debits and refunds behave exactly as in live.
Reproducing each failure
| Scenario | How to trigger it |
|---|---|
| unauthorized | Send a malformed key, or revoke a key in the portal and reuse it. |
| invalid_request | POST /orders with plan_id set to "not-a-uuid", or quantity 0. |
| days rejected on a fixed plan | Order a plan where validity.billed_per_day is false and send days: 5. |
| not_found | Order a well-formed UUID that is not in the catalogue. |
| insufficient_funds | Order quantity 50 of an expensive plan until the sandbox balance runs out, or ask support to zero it. |
| rate_limited | Fire more than 120 requests in a minute from a loop. |
| idempotent replay | Send the same order twice with one Idempotency-Key and compare the response headers. |
| order.completed webhook | Place any sandbox order with a sandbox webhook URL registered. |
bash
# idempotent replay: the second call returns 200 with Idempotent-Replay: true
curl -si -X POST $BASE/orders -H "Authorization: Bearer $JS_KEY" \
-H "Content-Type: application/json" -H "Idempotency-Key: demo-1" \
-d '{"plan_id":"'"$PLAN_ID"'","quantity":1,"days":3}' | head -n 12Always run one live order before launch
Sandbox cannot prove that a real profile installs. Buy a single cheap live eSIM, install it on a real device and confirm your delivery email end to end.
Prefer clicking to curl? Use the sandbox console.