Payment methods & channels
Every method Wajub collects with, its channel identifier, and where it works.
Every payment method is named by a channel: a family on its own, mobile, card, bank or
crypto, or a precise operator in the country.operator form. The hosted page offers every channel
your account can collect on; narrow it per payment with
accept, and name a channel only in a Direct API charge.
How to read a channel
cm.mtn is MTN Mobile Money in Cameroon, sn.wave is Wave in Senegal. The prefix is the ISO
3166-1 alpha-2 country code and the suffix the operator. A bare family name such as mobile lets
Wajub resolve the operator from the phone number instead.
Each family has its own page:
- Mobile Money, the operators and their channels, and the phone number formats each one accepts.
- Bank cards, Visa and Mastercard on the
cardchannel. - Bank transfers, on the
bankchannel. - Wallets & crypto, Apple Pay, Google Pay and the
crypto.{asset}channels.
Where each country stands
The currency decides which channels exist, and the account's providers decide which of them are switched on.
| Country | Currency | Mobile Money | Cards |
|---|---|---|---|
| XAF | MTN, Orange, Express Union | Yes | |
| XOF | MTN, Orange, Wave, Moov | Yes | |
| XOF | Orange, Wave, Free | Yes | |
| XOF | MTN, Moov | Yes | |
| XOF | Orange, Moov | Yes | |
| XOF | T-Money, Moov | Yes | |
| XOF | Orange, Moov | Yes | |
| GHS | MTN, Vodafone, AirtelTigo | Yes | |
| NGN | None. Bank transfer, USSD, OPay and PalmPay instead | Yes | |
| KES | M-Pesa, Airtel | Yes | |
| UGX | MTN, Airtel | Yes | |
| RWF | MTN, Airtel | Yes | |
| TZS | M-Pesa, Airtel, Tigo, Halopesa | Yes | |
| XAF | Airtel, Moov | Yes | |
| XAF | MTN, Airtel | Yes | |
| CDF | Orange, Airtel, Vodacom, Africell | Yes | |
| GNF | MTN, Orange | Yes | |
| LRD | MTN | Yes | |
| SLL | Orange | Yes | |
| ZMW | MTN, Airtel, Zamtel | Yes | |
| MWK | Airtel, TNM | Yes | |
| MZN | M-Pesa | Yes |
Choosing what a payment accepts
Nothing is hidden by default: the payer sees every method your account can collect on, and a payment
in a currency a wallet does not use is converted, as described in
Limits. To narrow it, send accept when you create the payment, the link or the
invoice. Every key is optional, and a key you leave out narrows nothing.
accept.countriesstring[]optionalaccept.channelsstring[]optionalcm.mtn. An aggregate like cm.mobile stands for every mobile operator of that country, and mobile for every mobile operator.accept.typesstring[]optionalmobile_money or card.accept.currenciesstringoptionalany (the default) offers every channel, converting the amount when the currencies differ. payment keeps only the channels that settle in the currency of the payment, so a XAF payment no longer shows Kenyan mobile money.The restriction is kept on the payment and applies twice: the page offers only what it allows, and a
charge that names another channel is refused with a 422 and the code channel_not_accepted. If
accept leaves nothing to pay with, the create call itself answers 422 on accept, rather than
producing a page with no method on it.
A charge sent on mobile or on cm.mobile is checked on the operator
the number resolves to, not on the aggregate. With the restriction above, cm.mobile and an MTN
Cameroon number is charged on cm.mtn, and an Ivorian number is refused. A payment restricted to
"channels": ["mobile"] takes any Mobile Money operator, whichever the number resolves to, and no
card, bank or crypto channel.
A link or an invoice carries its own accept, and every payment opened from it inherits it. On a
link or an invoice, accept: {} clears the restriction. In the Dashboard the same fields sit under
Payment methods, in the link composer and on the invoice form.
Previewing the methods before you create a payment
GET /payments/options lists the channels a payer could use for a currency and an amount, before
any payment exists: the ones your account offers on the payment page, narrowed to the payer's
country and to each channel's minimum and maximum. It takes the same accept restriction as
POST /payments. Use it to draw your own method picker; the payment, once created, is what the
payer is actually offered.
curl "https://api.wajub.com/payments/options?currency=XAF&amount=25000&country=CM&locale=fr" \
-H "Authorization: sk_test.xxxxxxxxxxxxxxxx…"The answer carries code, status, message and channels: each with its slug, name,
name.fr, type, logo and countries, and operators for cm.mobile. logo_png, on a channel
and on each operator, is the same logo as a PNG, for an app that draws no SVG, or null when there
is none.
List payment options
Amounts and caps
Two different limits apply to the same payment, and they are easy to confuse.
The first is the payment itself. In XAF and XOF it must fall between 25 and 2 000 000; outside
that range the create call is refused with a 422 naming the bound in errors.amount.
The second is what a single Mobile Money debit can carry, capped at 500 000 XAF, and the same in
XOF. A payment above that is refused with a 422 when you charge it.
Your own ceiling is lower until you are verified
The figures above are the platform's. What your account can actually collect is set by your verification level, and an unverified account has a live ceiling of zero. Check it in Settings → Compliance, covered in Account activation.
Related pages
- Phone number formatsWhat each operator accepts, before a payment can even start.
- Payment lifecycleEvery state a payment holds, and the webhook for each.
- Settlement currency & balanceWhich currency you are paid in, and when.
- Fees & pricingWhat each channel costs you.
- Send to these channelsMobile Money payouts with Transfers.