Calculating the payroll is half the job. The other half is getting the right net pay to the right account on the right day, and being able to prove it later. Here is how pay day works in practice for Kenyan employers paying by bank or M-Pesa.
What the Employment Act says about paying wages
Section 17(1) lists the ways wages may be paid, in Kenyan currency: cash, into a bank or building society account the employee has designated, by cheque, postal order or money order, or, if the employee is absent, to someone they’ve authorised in writing. The list predates mobile money and doesn’t mention it. Paying by M-Pesa is now normal, but get each employee’s written instruction naming the phone number to be paid, the same as you would for a bank account.
Wages for monthly staff are due at the end of each month (s.18(2)(c)), and must be paid on a working day (s.17(2)). If month end falls on a weekend or public holiday, pay on the working day before rather than after.
Before you send anything
Payment problems are mostly data problems, so most of the work comes before the file:
- Approve the payroll first. Generate the payment file from the approved run, never from a draft.
- Treat bank detail changes as a fraud risk. An emailed request to change an account “from this month” is the classic salary fraud in Kenya. Confirm every change by calling the employee on the number you already hold, and keep a record of who confirmed it.
- Check the control totals. The file’s total and line count must equal the net pay total and headcount on the payroll register. If they don’t, stop.
- Separate duties. The person who prepares the file shouldn’t be the one who approves it on the bank or M-Pesa portal. Both channels support maker and checker roles; use them.
Bank transfers
Most banks accept a bulk payment file through internet banking, either in their own template or a generic CSV, with columns for the beneficiary name, account number, bank and branch code, amount and a reference. Payments to accounts at the same bank usually land the same day. Payments to other banks go through interbank clearing (EFT), RTGS or PesaLink, each with its own limits, charges and settlement times.
Cut-off times are where pay day goes wrong. Each bank sets its own cut-off for each channel, and an interbank file submitted after it settles the next working day. Ask your bank for the cut-offs that apply to your account, write them into your payroll calendar, and work backwards: if the file must reach the bank by mid-morning on the 28th, the payroll must be approved by the 27th. Leave a day of slack in December and around public holidays.
M-Pesa bulk payments
To pay salaries by M-Pesa you need a bulk payment (B2C) account from Safaricom, separate from a till or paybill used for collections. Applying involves company documents and takes time, so don’t leave it until the month you need it.
On the M-PESA business portal the process is:
- Fund the account that the bulk payments draw from, allowing for transaction charges.
- Download Safaricom’s bulk payment template from the portal and fill in each employee’s phone number in international format and the amount.
- Upload the file as a bulk payment task, with salary payment as the payment type.
- A second user approves and submits the task.
- Download the results once the batch has run.
Check the results line by line. The result shows whether each payment completed, and where it shows the recipient’s registered name, compare it with the employee’s name. A mismatch means a wrong number, and those payments are hard to recover.
Safaricom’s transaction charges are paid by the business. Wallet and transaction limits apply on the receiving side too, which matters for higher earners. Confirm the current limits with Safaricom.
Payslips and pay records
Section 20 requires a written itemised pay statement at or before the time of payment, showing gross pay, each variable and statutory deduction and its purpose, and how the net was paid if it was split between methods. Section 21 allows the payslip to show statutory deductions as a single total if you’ve given the employee a separate statement of statutory deductions, re-issued at least every 12 months. Most employers itemise PAYE, NSSF, SHIF and the Housing Levy on the payslip instead, which avoids the separate statement.
The Act exempts some short engagements, casuals among them, from s.20, but give everyone a payslip anyway. It’s your evidence if pay is ever disputed.
Section 74 lets an authorised officer inspect records covering the previous 36 months. Keep, for each pay day: the approved payroll register, the payment file as submitted, the bank’s or Safaricom’s confirmation, and the result report.
Reconciling net pay
In the books, the approved payroll credits a net pay payable (salary control) account. The bank or M-Pesa payment debits it. After every pay day that account should come back to zero, or to exactly the total of payments you know failed.
Match on the bank statement, not the file. If the bank posts the batch as one debit, that single line should equal the file total plus any charges. If it posts each payment separately, the number of lines should equal the headcount. Book the bank or M-Pesa charges to bank charges, not to salaries. For the journal entries in Zoho Books, see the payroll journal in Zoho Books.
When a payment fails
Payments fail for ordinary reasons: a closed or dormant account, a wrong digit, a name mismatch, a phone number not registered for M-Pesa, or a wallet limit. When one does:
- Leave the amount in net pay payable. Don’t reverse it out of the payroll: the employee still earned it and the PAYE, NSSF, SHIF and Housing Levy are still due.
- Get corrected details from the employee and verify them the same way as any other change.
- Pay the failed line on its own in a new file. Never re-upload the original file: you’ll pay everyone twice, and recovering a double salary payment is slow and awkward.
- Record the failure, the reason and the date it was re-paid against the employee.
Statutory remittances don’t wait for a failed salary to be fixed. PAYE, NSSF and SHIF are due by the 9th of the following month and the Housing Levy by the ninth working day. See the filing calendar.
This is practical guidance, not legal or banking advice. Bank and Safaricom procedures, cut-offs and limits change, so confirm them with your provider.
Before you build the file, check an employee’s net figure with the net pay calculator.