Approval & Posting
Approval Before a calculated run can be posted, it must be approved by an authorised user with the payroll.runs.approve permission. Requirements for approval: Run status must be ca...
Approval
Before a calculated run can be posted, it must be approved by an authorised user with the payroll.runs.approve permission.
Requirements for approval:
- Run status must be
calculated - All blockers must be resolved (zero blocker count)
- Warnings are advisory only and do not block approval
To approve, click the Approve button on the run workspace. The system records the approver's name and timestamp.
The number of approval steps is configurable in Settings → Cycle. It currently drives planning and dashboard visibility only; sequential multi-approver enforcement is not yet automated.
Posting
Once approved, the run can be posted. Posting finalises the payroll and triggers several actions:
1. GL Journal Entries (if the Accounting module is enabled):
| Entry | Debit | Credit |
|---|---|---|
| Salary expense | Payroll Expense account | — |
| Net salary payable | — | Salary Payable account |
| PAYE liability | — | PAYE Payable account |
| SSNIT liability | — | SSNIT Payable account |
| Tier 2 liability | — | Tier 2 Payable account |
The GL accounts used are configured in Settings → Accounting. The journal shape (summary, department, or detailed) determines how entries are grouped.
2. Disbursement Batch Creation:
The system automatically creates disbursement batches based on employee payment methods:
- Bank batch — one batch for all bank-payment employees
- Mobile money batches — one combined batch or separate batches per provider (MTN, Telecel, AirtelTigo), depending on the batch mode setting
- Cash batch — one batch for all cash-payment employees (generates printable pay sheet)
3. Leave Accrual:
Each employee's annual leave balance is automatically accrued (annual entitlement ÷ 12). Mid-period joiners receive pro-rata accrual.
4. Loan Deductions:
Active loan balances are reduced by the amounts deducted in this run. Loans reaching zero balance are auto-completed.
Posting Errors
If GL posting fails (e.g., missing account mapping), the run shows a posting_status: error with a descriptive message. Fix the issue in Settings → Accounting and retry posting.