Payroll runs
Goal
Create a payroll run and move it from draft through calculate, approve, post accrual, and pay — including imports from HR inputs.
Who it is for
Operators with payroll.run (create/calculate), payroll.approve, payroll.post (post/pay), viewers with payroll.view.
Preconditions
- Module payroll_integration; at least one registered payroll provider (country pack).
- Open pay calendar period when required; payslip template when generation requires it.
- Active employees on lines; bank account available before Pay.
- Off-cycle runs only if tenant setting allows.
Steps
- Open Payroll → Payroll (nav label Payroll).
- If the banner says no provider, apply a country pack first — New run stays disabled.
- New run: reference, run type (regular / off-cycle / correction / final settlement), pay calendar period (or manual period dates), employee lines with optional gross.
- While draft:
- Fill from compensation, Import approved timesheets, Import HR events, Import benefit deductions as needed.
- Calculate (
payroll.run) → status calculated.
- Approve (
payroll.approve) → approved. - Post accrual (
payroll.post) → posted (GL accrual journal). - Generate payslips when templates exist; employees/ESS can download.
- Pay with a company bank account → paid; then you may Close the run.
- Optional: Lock, resolve exceptions, Reverse accrual (not after paid).
Result
Employees are accrued and paid per provider rules; remittances may appear under Payroll Payments; analytics KPIs update.
Hard stops
payroll.no_provider,no_lines,unknown_employee,employee_inactivenot_draft/not_calculated/not_approved/not_posted/already_paidunknown_bank_account,off_cycle_disabled,pay_calendar_required,payslip_template_requiredcannot_reverse_paid_run,run_not_paid(close)