Sandbox success & failure
Local fiat sandbox outcomes are deterministic. Use the values below so you can forceorder.settled or order.failed without real money movement.
Sandbox forces outcomes with the test values in the tables below (1111111111 / 0000000000, and +{countryCode}1111111111 / +{countryCode}0000000000). Treat them as Element Pay sandbox identifiers only.
Two different “account numbers” (don’t mix them up)
Sandbox “success/failure” tables below apply to the customer identity fields on the quote, not to inventing deposit destinations.
Rules that apply on every quote
Force success vs failure
Mobile money (payment_method.phone_number)
UG smoke (success-oriented):
+256111111111 — confirm via catalog for your key.
Copy the same MSISDN onto customer.phone when the corridor expects both fields.
Bank (payment_method.account_number)
OffRamp crypto deposit (skip sending on-chain)
Retail (customer_type omitted or retail) — sandbox auto-credit uses customer.name:
Without
Successful in retail customer.name, OffRamp stays in pending_settlement (awaiting crypto on the accept deposit address) rather than auto-settling. Do not try to settle sandbox OffRamp by sending testnet crypto to that wallet — use the Successful name trigger. Real on-chain deposits are for production only.
Institution (customer_type: "institution" / customer.type: "institution") — sandbox auto-credit uses customer.business_name (institutions have no personal name):
Without
Successful in business_name, OffRamp stays in pending_settlement. Do not send testnet crypto to settle sandbox OffRamp.
QA profiles (suggested)
Field shape (not magic values)
Retail: always send valid-looking KYC even in sandbox:email, address, dob (mm/dd/yyyy), id_number, id_type. Missing required fields → 422 from order-requirements, not a settlement failure.
Institution: same quote body shape; required customer fields are uid, business_name, business_id, and email (no DOB / national ID / personal name). business_id is the legal registration or tax id of the paying business, not an Element Pay console id. Bank payee is payment_method.account_name + account_number + network_id (payee may be a different company). See Sandbox test payloads and Kenya.
After accept
- Prefer webhooks (
order.processing→order.settled/order.failed). - Backup poll:
GET /partner/orders/{order_id}. - Keep
quote_id,order_id, and webhook bodies for each scenario before asking for production.