How send money works
1
Create a request
Send a POST request to
/api/v1/send-money with the amount and the recipient’s phone number.2
Provider detected
The system automatically detects the mobile money provider for that market from the phone number.
3
Money transferred
Money is transferred directly to the recipient’s mobile money account.
4
Notification sent
The recipient receives an SMS notification of the incoming payment, and you receive a webhook with the result.
Pricing
Fees come from the public pricing page. Custom business rates may differ. Send money works in all 12 markets: UG, KE, RW, CD, ZM, CM, BJ, CI, GA, CG, SN, and SL. For DRC, also sendcurrency as CDF or USD.
API endpoints
Send money
To send money, send a POST request to the send money endpoint with the required parameters.Request parameters
Required fields
Optional fields
Reference requirements
API Send Money requires a valid UUID reference:- Must be in UUID v4 format:
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx - Must be unique across all API send money transactions
- Cannot be reused - each transaction needs a unique reference
- Maximum 50 characters
c97fae8b-9b7f-4192-9f72-6f0859d33e67123e4567-e89b-12d3-a456-426614174000
Example request (Uganda)
- Tab Title
- Tab Title
Example request (Kenya / M-Pesa)
Example response
Provider detection
The system automatically detects the mobile money provider based on the phone number pattern.MTN / Airtel (Uganda)
country:
Auto-detected from phone number
UG · +256Auto-detected from phone number
M-Pesa (Kenya)
country:
KE · +254MTN / Airtel (Rwanda)
country:
RW · +250Vodacom / Airtel / Orange (DRC)
country:
CD · CDF or USD · +243Zambia / Cameroon
ZM · ZMW · +260 · ZambiaCM · XAF · +237 · CameroonWest & Central Africa
BJ / CI / SN · XOFGA / CG · XAF · SL · SLESandbox mode
New accounts start in sandbox mode where you can test all send money features without processing real payments or creating actual transactions.- No actual mobile money API calls are made
- No real transactions are created in the database
- Immediate dummy success response
- Generated sandbox provider references
- Status set to
sandbox
Webhooks & callbacks
You can receive real-time notifications about send money status through webhooks or custom callback URLs.
Optional metadata: if you sent metadata on create, the same array is included at the top level of the callback payload (success and failure).
Example callback payload
Best practices
Phone number format
- Always include country code (
+256for Uganda) - Use the format:
+256xxxxxxxxx - Ensure the number is active and registered for mobile money
- Verify recipient details before sending large amounts
Withdrawal phone numbers (optional)
Withdrawal phone numbers are optional and provide an additional layer of security and convenience. If you have withdrawal phone numbers set up, you can only send money to those registered phone numbers. If you don’t have them configured, you can send money to any valid phone number (normal operation). Manage withdrawal phone numbers in your account settings.Amount limits
- Minimum amount:
500 UGX - Maximum amount:
10,000,000 UGX - Consider recipient’s mobile money limits
- Check your account balance before sending
Error handling
- Always check the response status
- Handle failed send money requests gracefully
- Implement retry logic for failed requests
- Monitor webhook delivery and implement fallbacks
- Keep transaction logs for audit purposes
Security considerations
Verified recipients
Never send money to unverified recipients.
Authentication
Implement proper authentication and authorization.
HTTPS
Use HTTPS for all API calls.
Monitoring
Monitor for suspicious transaction patterns.

