Payout providers
The provider field picks the payout rail. IntaSend then routes the payment to the best
available processor for that provider, currency and country.
provider | Pays to | Countries | Currency | Key fields |
|---|---|---|---|---|
MPESA-B2C | M-Pesa phone number | KE | KES | account = phone. Minimum KES 10. |
MPESA-B2B | M-Pesa till or paybill | KE | KES | account, account_type, plus account_reference for paybills |
PESALINK | Bank account (instant) | KE | KES | account, bank_code. Min KES 100, max KES 999,999. |
RTGS | Bank account (high value) | KE | KES | account, bank_code, name. Min KES 100. |
EFT | Bank account | KE | KES | account, bank_code, name. Min KES 100. |
INTASEND | Another IntaSend account | Any | Any wallet currency | account = recipient's IntaSend account |
AIRTIME | Airtime top-up | KE | KES | account = phone. Live only. |
KPLC | Kenya Power prepaid token | KE | KES | account = meter number, notify_phone |
INTASEND-XB | Cross-border mobile money (bank in NG) | UG, TZ, RW, GH, NG, CD, SN, CI, BF, CM, and more | Local currency | country, account in international format |
INTASEND-XB-BANK | Bank account in Uganda | UG | UGX | account, bank_code, name |
For request examples per country, see Countries.
Phone number format
- Kenya (M-Pesa, airtime):
2547XXXXXXXX,07XXXXXXXXand7XXXXXXXXare all accepted. - Cross-border (
INTASEND-XB): use the full international format without+, for example256772123456(UG),255754123456(TZ),250788123456(RW),233241234567(GH).
The account field accepts digits only.
M-Pesa B2B (till and paybill)
{
"currency": "KES",
"provider": "MPESA-B2B",
"transactions": [
{"name": "KPLC", "account": "888880", "account_type": "PayBill", "account_reference": "12345678", "amount": "500", "narrative": "Bill"},
{"account": "174379", "account_type": "TillNumber", "amount": "200"}
]
}
B2B amounts are rounded to whole shillings.
Bank transfers (Kenya)
Use PESALINK for instant transfers up to KES 999,999, and RTGS for higher values. Get the
bank_code from GET /send-money/bank-codes/ke/.
{
"currency": "KES",
"provider": "PESALINK",
"transactions": [
{"name": "John Doe", "account": "0123456789012", "bank_code": "68", "amount": "1000", "narrative": "Invoice 22"}
]
}
PesaLink amounts are rounded to whole shillings, and narratives are shortened to 20 characters. Some bank routes need an OTP confirmation per transaction.
IntaSend wallet transfers
INTASEND moves funds instantly to another IntaSend account's settlement wallet in the same
currency. It works for every wallet currency, including USD, EUR and GBP.
KPLC tokens
{
"currency": "KES",
"provider": "KPLC",
"transactions": [{"account": "37123456789", "amount": "500", "notify_phone": "254712345678"}]
}
IntaSend validates the meter before paying. The token is sent to notify_phone.
Limits
All payouts are also subject to your account tier limits (per transaction and per day) and to your wallet balance, including charges. Requests that exceed them fail with a clear error message. See Errors.