Paying staff in Kenya: M-Pesa bulk payment vs bank file
Once payroll is approved, the money still has to move. In Kenya that means one of two rails: a bulk M-Pesa payout, or a payment file uploaded to your bank. They behave very differently on cost, speed, limits and what happens when something fails. Here is how to choose.
The short version
| M-Pesa bulk (B2C) | Bank file | |
|---|---|---|
| Speed | Near-instant, 24/7 | Same day to next day, banking hours |
| Per-person cap | KES 250,000 per transaction | Effectively none for salaries |
| Recipient needs | A phone number | Bank name, branch and account number |
| Confirmation | Per-transaction result immediately | Batch result, often the next day |
| Best for | Casuals, field staff, urgent or off-cycle pay | Salaried staff, large amounts |
Paying by M-Pesa
A bulk payment, technically a B2C transaction, pushes money from your paybill or business account to many recipients at once. It is the fastest option available and it works outside banking hours, which is why it dominates casual and field payrolls.
Two limits shape how you use it:
- KES 250,000 per transaction. Anyone earning above that in a single payment has to be split or paid another way.
- KES 500,000 wallet ceiling. A recipient whose balance would exceed the cap will fail, which is a common cause of payday errors for senior staff.
Batches can carry thousands of recipients, so scale is rarely the constraint. Cost is: transaction charges apply per payment, so a large salaried payroll is usually more expensive over M-Pesa than over a bank file.
Where M-Pesa wins
Casual and daily-rate workers who have no bank account. Off-cycle payments — an advance, a correction, a terminal payment — where waiting for a bank cycle is not acceptable. Anything where you need to know within seconds whether each individual payment landed.
Paying by bank file
A bank file is a formatted list of payees that you upload to your corporate banking portal in one action. Each bank has its own format, and the file must carry the exact bank code, branch code and account number for every employee. One wrong branch code is one bounced salary and one very unhappy conversation.
Bank files carry no practical ceiling, and per-payment cost is far lower on a large payroll. The trade-offs are timing and feedback: you are bound by the bank's cut-off time, and failures usually surface as a rejection report the following working day rather than instantly.
PesaLink for the gaps
PesaLink moves money between Kenyan banks in under a minute, around the clock, at up to KES 999,999 per transaction — though individual banks set lower limits of their own, so check yours. It is the right tool for a single late payment or a correction after the batch has gone, rather than for the whole payroll.
Most teams use both. Salaried staff go out on the bank file for cost, casuals and corrections go over M-Pesa for speed. The thing to avoid is maintaining two separate sets of payee data.
Know the net before you pay it
Work out take-home on any salary at 2026 rates, then pay it out of the same run.
Open the calculator →The part that actually breaks
In practice, payday failures are rarely about the rail. They are about data:
- A branch code entered from memory, or copied from a stale spreadsheet.
- A phone number that belongs to a relative, or was changed and never updated.
- A leaver who was terminated in HR but still sits in the payment file.
- Net pay recalculated after the file was exported, so the file and the payslips disagree.
All four have the same root cause: the payment file is produced somewhere other than where the payroll was calculated.
How Yolaworks handles it
Yolaworks HR generates the payment file from the approved payroll run itself, so the amounts cannot drift. All 38 Kenyan banks are supported with all 1,756 branch codes already loaded, so branch details are chosen from a list rather than typed. The same run can push an M-Pesa batch through Yolaworks Float, with maker-checker approval before anything moves. Free for 30 days.
Transaction limits and charges are set by Safaricom, the banks and IPSL and change from time to time. Figures here reflect published limits in August 2026; confirm current limits with your provider before relying on them.