Skip to main content
Pointing sandbox at a real payment provider only ever tells you what that provider happens to know about. You can’t reliably reproduce a frozen account, an unresolvable one, or a provider timeout — which are exactly the cases your integration needs to handle. The values below return a fixed result in sandbox, without contacting a provider. Use them to build and test your error handling.
These are sandbox only. In production every request goes to the real provider, and these values carry no special meaning.

Mobile money

Use with Validate Mobile Money. Any format works — +254700000001, 254700000001 and 0700000001 all resolve to the same result.

Bank accounts

Use with Validate Bank Account.

Paybill and till

Use with Validate Mobile Money and accountType set to paybill or till.

Checking a name before you pay

Send accountName with the name you expect on the account and the response adds a nameMatch block scoring it against the real one. Names are compared token by token, so middle names, initials, ordering and small typos still match — Jane M Doe matches JANE MARY DOE.
Pair 1000000002 with "accountName": "Jane Doe" to see a failed match.
When masked is true the provider only returned part of the name, so the match is based on the visible portion alone. Treat it as “not contradicted” rather than confirmed.

Name resolution requires an entitlement

accountName, accountStatus and nameMatch are only returned if your account is enabled for name lookup. Without it you still get the format and corridor validation, and nameLookupStatus comes back as NOT_ENABLED. Talk to your account manager to have it turned on.