Run the monthly payroll
Personas: Payroll officer (keeps salaries and entries, creates the run), Approver (posts or rejects the run in the Inbox) · Modules: Payroll, Employees Close the month: make sure everyone's salary and the month's bonuses/deductions are recorded, run payroll once, review the computed payslips, and post. Contributions and income tax come from the year's contribution scheme — statutory numbers kept as data, never code.
Before you start: each employee needs a Salary Assignment effective for the month, and a Contribution Scheme must exist for the run's year (the 2026 scheme ships pre-seeded — verify its values against the year's budget acts before your first live run). Both live in the People (HR) sidebar group; schemes and entry types are on the Settings page.
1. Payroll officer — keep the salary register current
- Open Salary Assignments. A raise or salary change is a new row with a later valid-from date — never an edit of the old one: pick the Employee, the valid from date and the monthly base salary (Company and Currency start pre-filled, EUR). The salary effective for a month is simply the employee's newest row on or before it; the table is the full history.
2. Payroll officer — record the month's one-off amounts
- Open Payroll Entries and add one record per bonus/deduction: Employee, the month it belongs to (enter the first of the month), the Type, the amount (always positive — the type decides whether it adds or subtracts, and whether it is taxable) and a reason.
- Bonus, Overtime, Allowance add to pay; Deduction, Advance subtract. Until a run sweeps them, entries with an empty payslip column are the "this month, not yet paid" view.
3. Payroll officer — create the run (payslips compute immediately)
- Open Payroll Runs, click New, enter the month (the first of the month); the Company starts pre-filled. Save.
- A number is stamped from the "Payroll Run" series; the run starts as DRAFT and the calculation fires at once: for every employee with a salary effective that month it takes the base salary from the effective assignment, sweeps the month's entries (each entry now shows which payslip took it), computes the insurable income (base + taxable additions, clamped to the scheme's minimum/maximum), applies each contribution's employee/employer percentages and the flat income tax, and produces the gross, net and employer cost.
- One Payslip per employee appears under the run — entirely read-only, every figure computed — with fiche lines spelling out each amount: the base, each entry, each contribution, the tax.
4. Payroll officer — review
- Open the run: the totals (gross, deductions, employee contributions, income tax, net, employer cost) sum themselves from the payslips. Check spot payslips against expectations.
- Something wrong? Fix the assignment or the entries — then have the run rejected and create a new one (see below). You never edit a payslip.
5. Approver — post or reject (Inbox)
- A Post task waits in the Inbox of anyone in the Approver group (plus administrators). Its form shows number, month, Company, gross, net, employer cost and status, with Post and Reject buttons.
- Post sets POSTED — the run is now final and read-only: any attempt to edit or delete it (or its payslips) is refused.
- Reject cancels: the swept entries are released (they will sweep again into the next run), the payslips and their lines are removed, and the run becomes CANCELLED — as if it never happened.
What happened behind the scenes
- Numbering: the shared "Payroll Run" series, stamped at create.
- Status path: DRAFT → POSTED (final, immutable) or CANCELLED (entries released).
- The run's six totals roll up from the payslips automatically.
- Recalculation is deliberate: reject + create a new run — entries unlink on cancel, so they sweep again.
Variations and refusals
- Empty run — posting a run with no payslips is refused with the message "Post requires at least one payslip - the run computed none (no effective salary assignments for the month?)".
- No scheme for the year — the calculation fails with a message naming the year; the run stays DRAFT until the scheme is added.
- Editing a POSTED run — refused; a posted month is corrected in the next one (or via entries in a new run).
Employee — see your own payslip (Personal shell)
Once a run is posted, each employee can open My Payslips in the Personal shell (/services/web/personal/) and review their own payslips — base salary, additions, deductions, insurable income, contributions, income tax, gross, net and employer cost, with the full fiche lines. The surface is read-only (no New/Edit — payslips come only from a posted run) and scoped to the logged-in employee, so nobody sees anyone else's pay.