---
title: "Running payroll"
description: "From a pending period to an employee seeing \"Paid\" — the admin's walk through one payroll run."
---

> Documentation Index
> Fetch the complete documentation index at: https://peoplematter.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Running payroll

If you've read [How pay periods work](/en/docs/payroll/periods/), this page is those
concepts in the order you press them.

## Before you run

1. **SALARY streams: everyone needs a compensation profile.** Anyone without one is skipped —
   the run report lists them under "No compensation profile" with a "Set up pay" shortcut, which
   opens the person's page; fill in the **Compensation profile** card there.
2. **CLAIMS streams: approve what should be paid.** Rows still "Pending approval" in
   [the pool](/en/docs/payroll/pool/) will not be collected by this run. A SALARY stream's run
   never collects from the pool at all.
3. **Payroll settings carry the rates.** Income tax rate, NHI rate, labor insurance
   rate, supplementary NHI rate and the ceilings — all withholding is computed from
   these.

## The run

1. Go to "Payroll ▸ Periods". No periods yet? **Generate periods ahead** — pick
   the stream and how many; new periods continue after the stream's last one.
2. Open the period, press **Run period**, read the confirmation, then press **Confirm**.
   A period can only be run while it is Pending; once a run finishes
   cleanly the period is Processed and can never be run again — so finish
   the checks above first.
3. Read the **Run report**: payments created, who was skipped, and the warnings that
   need a decision.

## Check, approve, mark paid

The period page's **Payments** table lists every payment. Open one for the full
calculated breakdown — base earnings, each earning, each deduction, net pay. The
table's **Total** row is the period's ledger line (gross, deductions, net — one row
per currency); **Export CSV** saves the same register as a file for reconciliation in
Excel — name, gross, deductions, net, status and paid date.

- Whoever holds the approve permission sees **Approve** on a
  Calculated payment's row; press it once the payment is right. The payment
  becomes Approved, which is also what the employee sees on the **Pay** screen.
- **After the actual bank transfer**, whoever holds the mark-paid permission presses **Mark paid**
  on the Approved payment's row. That last mile is between you and the
  bank — the system does not move money: the payment becomes Paid and
  its paid date is filled in, which records that you did. The employee sees it as
  Paid on the **Pay** screen too. Approving and marking paid are two permissions,
  and may belong to different people.

> **The 'Move to …' buttons**
>
> The **Move to …** buttons at the top of the period page list the statuses a period can move to
> from its current one:
> a Pending period can **Move to Processing** (a hold:
> until it is moved back it can be neither run nor locked) or **Move to Cancelled**;
> a Processing period can **Move to Pending**;
> a Processed period can **Move to Locked**. No button
> moves a period to Processed — only a run does. The month-end close is
> Locked: the status stops changing, but existing payments can still be
> approved and marked paid.

> **Cancel is terminal**
>
> Only a Pending period with no payments can be cancelled. Cancelling cannot
> be undone, and every adjustment it had collected returns to the pool — the confirmation says both;
> read it once before you press it.

Source: https://peoplematter.app/en/docs/payroll/run/index.mdx
