Mobile Wallet
Use the Payouts API to send funds to mobile money wallets (MoMo). Set paymentMethodId to "mobilemoney" and provide a recipient object with type: "mobile_money".
Request Shape
Set paymentMethodId to "mobilemoney" and provide recipient with the following structure:
Top-level required fields for every payout:
- Required:
merchantId,merchantReference,destinationValue(withminorAmountandcurrency),paymentMethodId("mobilemoney"),paymentLocation,recipient,sender(withfullName,identity,identityNumber) - Optional:
attributes
Example Request
Note: minorAmount: 500000 = 5,000.00 KES (KES has 2 decimal places).
Required vs Optional Summary
- Required for
recipient(mobile_money):type("mobile_money"),phoneNumber,country,operator - Optional for
recipient:name - Required at request level:
merchantId,merchantReference,destinationValue,paymentMethodId,paymentLocation,recipient,sender(withfullName,identity,identityNumber) - Optional at request level:
attributes
Operator and Currency
Operator choice depends on the destination currency and country:
Use the operator enum value that matches the recipient’s wallet (e.g. M-Pesa in Kenya → mpesa). Valid operator values: airtel, airteltigo, cbebirr, celtiis, fawry, free, halotel, moov, mpesa, mtn, opay, orange, telebirr, telecel, tigo, togocell, vodacom, wave, yaya, zamtel.
Amount Format: Amounts are specified in minor units (integer), per the currency’s ISO 4217 exponent — for example, minorAmount: 500000 = 5,000.00 KES, while zero-decimal currencies like XOF and XAF need no conversion. See Single Payouts for details.
Phone Number Format
Submit the beneficiary number in canonical E.164 form with the destination country as an ISO 3166-1 alpha-3 code.
CrissCross normalises local formats using the supplied country, so 0723993187 with KEN also resolves to +254723993187. Normalise before submission regardless: the leading zero is a trunk prefix in most markets but forms part of the national number in Côte d’Ivoire, Benin, Gabon, and Burkina Faso, and an incorrectly normalised number fails at the operator rather than at the API.
See Mobile Number Format for the full contract — accepted input formats, the trunk-zero exception, per-country calling codes, and the format rules enforced for Kenya and Ghana.
Mobile Number Verification
Before initiating a payout, you can verify that a mobile number is valid and registered with the mobile money provider using the Mobile Number Verification API. This helps:
- Reduce payout failures due to invalid or unregistered numbers
- Display the account holder’s name for confirmation before disbursement
- Catch errors early in the disbursement process
The verification API is currently available for M-Pesa in Kenya. Contact CrissCross support for availability in other markets.
Where Mobile Wallet Is Supported
Not every currency supports mobile wallet payouts. See Supported Destinations for a table of currencies, countries, and supported rails.
Next Steps
- Mobile Number Verification — Validate mobile numbers before processing payouts
- Single Payouts — Create one-off mobile wallet payouts
- Bulk Payouts — Send multiple payouts in one request
- Supported Destinations — Currencies and rails by destination
- Payout Trigger Endings — Test scenarios using phone-number endings