Payouts
Pay your partners by mobile money, in one call.
Pay out from your balance to mobile money in 14 countries, from MTN MoMo to M-Pesa, and to Express Union. One call per beneficiary, tracked until it lands, and the recipient gets the full amount.
- Name check
- The recipient gets the full amount
Why Wajub Payouts
Sending money, with confidence.
A payout spends real money. So every transfer passes checks before it leaves, and you keep a record of each one.
- Saved beneficiaries
- Save a recipient once, then pay them by their ID.
- The right recipient, verified
- Check that a number matches the expected name before sending money.
- Checks before every debit
- Limits, fraud checks, account restrictions, sufficient funds: nothing is debited until everything passes.
- Fees known in advance
- On the Wajub rail, fees are reserved with the amount at creation: the recipient gets the full sum.
- No double payment
- Every transfer carries its idempotency key: a repeated call with the same key does not pay twice.
- Real-time tracking
- The transfer.processing, transfer.succeeded and transfer.failed webhooks keep you posted at every step.
Use cases
For everyone you need to pay.
One transfer per beneficiary, triggered from your code the moment the payment is due.
Couriers and drivers
Paid per trip or at end of day.
Marketplace sellers
Their share paid out after each sale.
Suppliers
Settled without a trip to the bank.
Refunds and rewards
Sent straight to mobile money.
- Funds leave your balance, fed by your collections.
- One balance per currency, with no overdraft possible.
- Your first production payouts are reviewed before they run, to protect your account.
For developers
A transfer fits in one call.
Beneficiary, amount, currency, idempotency key: Wajub handles checks, execution and notifications.
po_test_A full sandbox- In sandbox, every payment credits your test balance: collect then pay out, just like production.
+237670000000Test numbers- The test beneficiary's number decides the outcome, so you can validate every scenario.
wajub transfers createCLI and SDKs- The CLI and SDKs cover beneficiaries, transfers and balance.
import { Wajub } from '@wajub/node'
const wajub = new Wajub({ secretKey: process.env.WAJUB_SECRET_KEY! })
const transfer = await wajub.transfers.create({
beneficiary: 'ben_7Kq2mX9vL4tRb3nP8sZc',
amount: 85000,
currency: 'XAF',
description: 'Supplier payment #892',
}, { idempotencyKey: 'payout-892' })
console.log(transfer.status)Response201 Created
{"code": 201,"transfer": {"id": "po_4fT9kLm2Qx7R","amount": 85000,"status": "processing"}}
Signed webhookX-Wajub-Signature
{"id": "evt_9QmT2xKp7LcN","event": "transfer.succeeded","data": {"id": "po_4fT9kLm2Qx7R","status": "succeeded"}}
Frequently asked questions
Another question? Talk to the team
- Which payment methods can I pay out to?
- On the Wajub rail, to mobile money in the 14 countries it covers, except Wave, and to Express Union in Cameroon, on request as for collections. Payouts through other providers are enabled rail by rail: the team confirms which ones are available for your account.
- Can I pay several beneficiaries at once?
- Yes, by chaining one call per beneficiary, each with its own idempotency key. You keep precise tracking, transfer by transfer.
- Why is my first payout under review?
- To protect your account: a first payout, like some other transfers, is checked before it runs, with funds reserved meanwhile.
- Can I cancel a transfer?
- No: once created, a transfer runs to completion. That is why the beneficiary check and the controls happen before the call.
- Is the balance shown in real time?
- GET /balance returns a balance refreshed every few minutes. Check it before a series of transfers, then rely on each transfer's response.
Make your first payout in sandbox.
Collect a test payment, then pay it out: the full journey in minutes.




