Providers & channels
Which channels a payout can use, and what decides whether one is available.
A channel names an operator in a country: cm.mtn is MTN Cameroon, sn.wave is Wave Senegal. It is
set on the beneficiary, so it is fixed the day the destination is created; the list below is what
the API accepts, and what actually executes depends on your account.
What has to line up
A channel from the list below is accepted when you name it, but a payout only executes on a channel your account can pay out on, in that currency.
| Case | Refused with |
|---|---|
| The slug is not a payout channel | 422 The selected beneficiary.channel is invalid. |
| Your account has no payout route for that channel and currency | 422 No payout provider is available for this channel and currency. |
The channels the API accepts
Fifty Mobile Money channels across twenty-two countries. Any of them is a valid
beneficiary.channel.
| Country | Channels |
|---|---|
bj.mtn bj.moov | |
bf.orange bf.moov | |
cm.mtn cm.orange cm.eu | |
cg.mtn cg.airtel | |
ci.mtn ci.orange ci.moov ci.wave | |
cd.vodacom cd.airtel cd.orange cd.africell | |
eg.vodafone | |
ga.airtel ga.moov | |
gh.mtn gh.vodafone gh.airteltigo | |
gn.mtn gn.orange | |
ke.mpesa ke.airtel | |
lr.mtn | |
mw.airtel mw.tnm | |
ml.orange ml.moov | |
mz.mpesa | |
rw.mtn rw.airtel | |
sn.orange sn.free sn.wave | |
sl.orange | |
tz.mpesa tz.airtel tz.tigo tz.halopesa | |
tg.tmoney tg.moov | |
ug.mtn ug.airtel | |
zm.mtn zm.airtel zm.zamtel |
cd.vodacom and mz.mpesa are both M-Pesa, and cm.eu is Express Union.
Three more channels are valid for a beneficiary without being Mobile Money: ci.djamo and
sn.djamo, Djamo wallets paid by phone number, and wajub, another Wajub account paid by its
account number, which never leaves Wajub and carries no fee.
Any other channel, a bank among them, answers 422 The selected beneficiary.channel is invalid. A
bank destination is a payout account you create in the
Dashboard on the wire channel.
The generic channel
A payout names its channel: the operator's own slug from that table, such as ke.mpesa or
eg.vodafone. There is one exception, Cameroon: cm.mobile works out from the number whether it
is cm.mtn or cm.orange. Beneficiaries covers how that resolution
behaves and how it fails.
No other country has a generic channel. ke.mobile, eg.mobile or any other {country}.mobile is
refused like an unknown channel, with 422 and The selected channel is invalid.. Even in
Cameroon, name the operator whenever you know it: a resolution that fails costs you a 422 where
an explicit slug would have gone straight through.
Coverage belongs to your account
Every channel other than cm.mtn, cm.orange and cm.eu needs a payout provider connected to your
account and approved by Wajub for live payouts; GET /providers lists
what your account has. A provider connected for collections does not turn its payout side on.
Out of the box, three channels pay out
Until a payout provider is approved on your account, live payouts go out on cm.mtn, cm.orange
and cm.eu only. Ask before you build a corridor into your product, rather than discovering it
at the first live transfer.
What the currency does, and does not, decide
Send the currency the operator settles in: XAF on cm.*, XOF on ci.*. A currency your account
cannot pay out in on that channel is refused with the same
No payout provider is available for this channel and currency. as any other gap in coverage.
Which provider handles it
There is no provider field on a transfer and no per-call override: you name a channel. When
several payout providers connected to your account can carry it, the priority you set on each decides
the order, and a failure moves down the list. Orchestration covers how to set that
priority.
The transfer tells you afterwards which one ran it, in provider, and the operator's own identifier
lands in provider_reference once the payout reaches it.