Skip to content

Test Mobile Money Numbers

In Sandbox, use these predefined phone numbers to simulate different Mobile Money payment scenarios with no real charge. No USSD push is sent — confirmation is simulated automatically based on the number used.

Airtel Money — Test numbers

NumberSimulated behaviorError code
+24177000001✅ Payment succeeds immediately
+24177000002❌ Insufficient fundsINSUFFICIENT_FUNDS
+24177000003⏱ Timeout (buyer does not confirm)MOBILE_MONEY_TIMEOUT
+24177000004❌ Number not registeredMOBILE_MONEY_NUMBER_INVALID
+24177000005⏳ Slow processing (30 seconds)
+24177000006⏳ Slow processing (60 seconds)

Moov Money — Test numbers

NumberSimulated behaviorError code
+24166000001✅ Payment succeeds immediately
+24166000002❌ Insufficient fundsINSUFFICIENT_FUNDS
+24166000003❌ Moov Money number not registeredMOBILE_MONEY_NUMBER_INVALID
+24166000004⏱ TimeoutMOBILE_MONEY_TIMEOUT

These codes are documented in detail on the Error Codes page.

Webhooks are active in Sandbox

Webhooks are indeed triggered in Sandbox. A successful payment with +24177000001 will emit a payment_intent.succeeded event to your test endpoint, exactly as in production.

Example — Successful Airtel Payment

meth_xxxx below is the ID of the Mobile Money PaymentMethod created for the customer during checkout (hosted checkout) — it is the payment page that collects the number and creates this PaymentMethod. In Sandbox, enter one of the test numbers above on that page to trigger the corresponding scenario.

bash
# 1. Create the PaymentIntent
curl -X POST https://api.sangho.ga/v1/payment-intents/ \
  -H "Authorization: Bearer sk_test_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 5000,
    "currency": "XAF",
    "payment_method_types": ["mobile_money"]
  }'


# 2. Confirm the payment once the PaymentMethod has been created by checkout
#    (entering +24177000001 on the payment page triggers an immediate success)
curl -X POST https://api.sangho.ga/v1/payment-intents/pi_xxxx/confirm/ \
  -H "Authorization: Bearer sk_test_xxxx" \
  -H "Content-Type: application/json" \
  -d '{ "payment_method": "meth_xxxx" }'

Reset the Sandbox

The reset endpoint deletes all test data associated with your sandbox key — PaymentIntents, transactions, customers, test webhooks, etc. Useful for starting from a clean state before a demo or a testing cycle.

Irreversible operation

Resetting the Sandbox permanently deletes all test data. This operation is irreversible — no restoration is possible.

Reset the Sandbox

bash
curl -X POST https://api.sangho.ga/v1/reset/ \
  -H "Authorization: Bearer sk_test_xxxx"
Response200 OK — Sandbox reset
All test data has been deleted. Your Sandbox environment is now empty.
json
{
  "object": "sandbox_reset",
  "reset_at": "2026-03-01T10:00:00Z",
  "livemode": false
}