Payslip Batches
Run payroll for a period: create payslips for the selected employees, compute, confirm (posts to the ledger) and mark paid.
Overview
A payroll run is created in Draft with one payslip per employee who has an active payroll contract. Employees who already have a payslip overlapping the period are refused, so nobody is paid twice for the same dates. Employees without an active contract are skipped and reported.
Confirm posts one journal entry per payslip (salary expense against statutory payables and net payable). Because confirm moves money in the books, the person who created the run cannot confirm it unless they are the only person holding the payroll permission. Mark as Paid is only available on a confirmed run.
When to use payslip batches
- Month-end payroll, off-cycle or casual-worker runs.
Prerequisites
Step by step
Screenshot for this step has not been captured yet — run npm run docs:flow.
Field reference
| Field | Description | Required | Data type | Business meaning |
|---|---|---|---|---|
| Period | Pay period. | Yes | Dates | Up to about three months; overlapping payslips are refused. |
| Employees | Who is paid. | At least one | Selection | Only employees with an active contract can get a payslip. |
Lifecycle
The state cannot be edited by hand. The only direct change is Cancel on a run that has not been confirmed; its draft payslips are removed.
Accounting impact
- Confirm: debit Salaries and Wages for gross pay; credit NSSF, SHIF, Housing Levy and PAYE payable for the employee deductions; credit Payroll Payable for net pay. Foreign-currency payroll companies are converted at the active exchange rate and refused when none exists.
- Reset a confirmed payslip to draft: a second, opposite entry is posted and linked to the first — the original stays posted. A draft entry (auto-post off) is simply cancelled. A locked period blocks the reversal.
- Employer-side contributions are not posted to the ledger yet.
Permissions
These permission keys control access (granted to roles in Administration → Roles & Permissions):
- hr.payroll-runs.read
- hr.payroll-runs.create
- hr.payroll-runs.update
- hr.payslips.read
- hr.payslips.update
Automation
- Payslips are e-mailed to employees when the payroll company has “Email payslips” on.