Workforce
Run payroll
Prepare payroll inputs, create pay runs, generate payslips, lock periods, mark payment, and use localization tools.
Payroll is a sensitive module. /payroll requires the Payroll entitlement and SUPER_ADMIN or MANAGER. Several finalization and period lock actions require SUPER_ADMIN.
Prepare the period
Before calculation:
- Review attendance, overtime, approved excuses, and approved time off for the period.
- Confirm employee compensation, contracts, benefits, commissions, and any salary attachments.
- Resolve expenses marked for the next payslip.
- Confirm the working schedule and payroll period dates.
- Add permitted payroll entries from the Register, with the right tax treatment (see below).
- Check Payroll Setup, including whether days absent from attendance are deducted.
Do not lock or finalize while material input disputes remain.
Create a pay run
Open /payroll/pay-runs and select the create action.
- Create the run for the intended period.
- Generate payslips.
- Review every employee result and the payroll register.
- Move the run from Ready to Done after review.
- Mark it Paid only after the payment process is complete.
The Pay Runs page describes the lifecycle as Ready, Done, and Paid. A permitted manager can revert a Done run to Ready when the workflow allows it.
Payroll setup
Open Payroll Setup at /payroll/setup to see what payroll needs before it can run and pay people: the company country, the tax tables for the year, employee tax setup, the payout rail, and employee bank accounts. A summary counts the steps done.
Deduct days absent from attendance
Payroll Setup has a switch named Deduct days absent from attendance. It is off by default.
- When it is on, a working day in the pay period with no attendance, no approved leave, and no public holiday is deducted from salaried pay at the calendar daily rate.
- Approved unpaid leave is always deducted, whatever this switch says.
- Attendance records are never changed by payroll.
- Only a SUPER_ADMIN can change the switch.
Payroll entries and tax treatment
On the Register, Add entry records a Bonus (+) or a Deduction (−) for an employee and period, with an amount and a note. Each entry has a Tax treatment that decides how it meets the income tax base and the base for social insurance contributions.
| Entry | Tax treatment choices |
|---|---|
| Bonus | Taxable pay (the default) or Not taxable |
| Deduction | After tax (the default), Before income tax only (for example a traditional 401(k) deferral, where Social Security and Medicare still apply), or Before income tax and social insurance (for example a Section 125 health premium) |
Only choices that fit the entry type are accepted. An entry nobody classified keeps the default: bonuses are taxable and deductions are after tax. Benefit plans under Employees use the same choices. Before this treatment existed, every bonus was taxed in full and every benefit contribution was treated as after tax, so a pre tax contribution could over withhold US tax.
Approve and pay payslips
Payslips follow a maker checker flow so that nobody approves their own work.
- Generate payslips for the run, then Compute each one (or Compute all).
- Verify payslips.
- Post journal on a payslip posts its journal entry: salary expense debited, net pay payable credited.
- Approve a payslip, or choose Approve payslips on the run.
- Mark paid records the payment.
The rules:
- A payslip's journal entry must be posted before it can be approved or paid.
- Only a SUPER_ADMIN can approve a payslip, and the person who posted its journal entry cannot approve it.
- One approval from a Super Admin who is not paid on that payslip is enough. If the only approver so far is the employee paid, a second, different approver is needed.
- A payslip that is not approved cannot be paid. A NACHA bank file is generated only from an approved run.
- Paying a payslip posts the cash entry: net pay payable is cleared and the paying bank or cash account falls. A payslip is paid at most once.
Void on an unpaid, posted payslip posts a reversing entry. The original is never deleted, so the journal sequence stays gapless. The payslip is cancelled with it, its loan repayment goes back to the loan, and its unpaid leave days are released. Create a new payslip for the period to replace it. A paid payslip is not voided: use Refund.
A pay run is separately approved by a second Super Admin before payouts are sent. See the Payouts and Bank Files pages.
Unpaid leave and absence on the payslip
Approved unpaid leave, and days absent when the setting above is on, are taken out of basic pay at the calendar daily rate. The payslip shows the days and the amount, and the printed payslip adds the same line. If more unpaid leave was reported than the payslip pays days for, the extra either moves to the next payslip, which deducts it, or is owed back in the final settlement. The payslip says which.
An employee's own payslip preview is an estimate. It leaves out approved unpaid leave, days absent from attendance, and the tax treatment of individual entries. The payslip that payroll finalizes includes them, so basic and net pay can be lower.
Expense reimbursements
Expenses marked for the next payslip appear under Expense reimbursements on the Payroll page. Payroll does not convert currencies. An expense in a different currency from the one payroll pays in cannot be paid through payroll, and it stops the period from being finalized until you select Release, which returns it to To reimburse. Pay it from a bank account in its own currency. The same applies to an expense whose posting was reversed in the ledger.
An expense already paid on a finalized payslip cannot be released. Reverse that payroll run first if the payment was wrong. Payroll postings use three accounts of their own. See Accounting and ledger.
Lock and finalize
Only a SUPER_ADMIN can lock or unlock a payroll period and run the final payroll action. A lock prevents edits that would change a closed payroll result.
Use register export and payslip print actions after confirming the period, workspace currency, and final state.
Other payroll routes
| Route | Purpose |
|---|---|
/payroll/work-entries | Work entry review |
/payroll/working-schedules | Payroll working schedules |
/payroll/attachments | Salary attachments |
/payroll/commissions | Commission runs |
/payroll/payouts | Payout methods and runs |
/payroll/reporting/analysis | Payroll analysis |
/payroll/reporting/headcount | Headcount reporting |
/payroll/reporting/work-entries | Work entry reporting |
The localization route is for the United States (/payroll/localization/us). It contains the federal and state forms and exports. Responsible payroll and tax professionals must review compliance output before filing or payment.
United States state withholding
All 50 states and the District of Columbia are supported: 17 apply a flat rate, 25 use graduated brackets, and 9 levy no tax on wages (Alaska, Florida, New Hampshire, Nevada, South Dakota, Tennessee, Texas, Washington and Wyoming).
Each employee needs a work state set. A pay run is refused outright if an employee's work state is missing or unrecognised — it is never completed with no state tax withheld, because an under-withheld payslip becomes a state tax liability that surfaces only at filing.
Two things you are expected to set yourself:
Your SUI employer rate. State unemployment insurance is experience-rated, so your state assigns your business its own rate. The tables ship each state's new-employer default; replace it with your assigned rate. The taxable wage base is exact and needs no change.
Filing status beyond single. Bracketed states currently withhold using single-filer tables. That is correct for single employees and withholds conservatively for married and head-of-household employees, who may see a refund at filing rather than a bill.
Rates and brackets are dated to the tax year and carry their source. Review them with your accountant at the start of each year, as every state revises them.
Common problems
| What you see | What to check |
|---|---|
| Payroll is missing | The module or plan entitlement is unavailable, or your role is not SUPER_ADMIN or MANAGER. |
| Payslip calculation is wrong | Review compensation, work entries, attendance, approved leave, and adjustments before changing the run state. |
| Period is locked | A SUPER_ADMIN must review whether reopening is appropriate. |
| Mark Paid is unavailable | The run has not completed the required Ready and Done steps, or a payslip is not posted and approved. |
| A payslip cannot be approved | You posted its journal entry, you already approved it, or it still needs a second approver because the only approver so far is the employee paid. |
| Finalize is refused for an expense | The expense is in another currency than payroll pays in, or its posting was reversed. Release it from the Expense reimbursements list. |
| Absent days are not deducted | Deduct days absent from attendance is off. A Super Admin can turn it on in Payroll Setup. |
| Localization form is incomplete | Complete the employee and workspace jurisdiction fields required by that route. |