This guide covers: Start a new payroll, Set period & pay date, Enter hours / earnings, Review the preview, Approve, Cancel before approval.
Start a new payroll
What it does: Opens the new-payroll form, pre-populated with the next pay period (computed from the client's pay frequency and the last completed run) and all active W-2 employees.
Where: Client sidebar → Payroll → Run Payroll (/clients/{clientId}/payroll/new).
Steps:
- From the client sidebar, click Payroll.
- Click Run Payroll in the top right.
- The form opens with: Pay Period card · Employees table · Notes · Calculate Preview + Save as Draft + Create Payroll actions.
Who: Accountant or SMB admin. The endpoint HARD-blocks with HTTP 412 ONBOARDING_PACKET_NOT_SIGNED if the client doesn't have a fully signed onboarding packet — a modal appears with a deep link to client settings to send/remind the packet.
Notes: A blue Current Pay Period banner at the top of /clients/{clientId}/payroll shows the next scheduled period before you click Run Payroll. If the client's onboarding packet is signed but ra_on_file is true on the client record, the gate is bypassed.
Set period & pay date
What it does: Sets the pay-period start, end, and the check date (= pay date).
Where: Pay Period card.
Steps:
- Period Start and Period End prefill from the API based on pay frequency. Adjust as needed.
- Pay Date (Check Date) also prefills — this is the date funds land in the employee's account.
- If any employee in the run is set to Direct Deposit, a Direct Deposit Timing card appears under the period inputs showing whether the pay date is achievable via standard ACH (4:15 PM ET cutoff) or requires Same-Day ACH (2:15 PM ET cutoff). See How ACH timing works.
Who: Accountant or SMB admin.
Notes: If a regular payroll already exists for the same period AND the same employees, the engine auto-detects the duplicate, excludes those employees from the table, and shows an amber banner: N employee(s) already have payroll for this period — these employees have been excluded. Use Off-Cycle or Bonus payroll for additional payments.
Enter hours / earnings
What it does: Fills in regular/overtime/holiday/PTO/sick hours, bonus, commission, and payment method per employee.
Where: Employees table on the new-payroll form.
Steps:
- The table shows: checkbox · Employee · Type · Rate/Period · Reg · OT · Hol · PTO · Sick · Bonus · Comm · Method.
- For hourly employees, Reg and OT are editable; for salary employees, they're shown as
-and pay is computed from the per-period salary derived from the client's pay frequency. - Holiday, PTO, Sick, Bonus, and Commission are editable for everyone.
- Method dropdown: Direct Deposit (disabled if no routable bank) or Paper Check. The default is Direct Deposit when the employee has a Moov-verified bank, paper check otherwise.
- Uncheck the row checkbox to exclude an employee from this run.
Who: Accountant or SMB admin.
Notes: Rows where hours came from an approved timesheet are green-tinted with a ✓ next to the name (from_timesheet). Rows where the employee already has a payroll for this period are red-tinted with a Already paid chip and disabled (regular payroll only). The salary "Rate/Period" cell hovers to show the annual salary as a tooltip.
Review the preview
What it does: Runs the tax engine on the current inputs without saving anything, and shows employer/employee totals + a per-employee breakdown.
Where: Calculate Preview button (bottom left).
Steps:
- Click Calculate Preview.
- A green preview panel appears showing Total Gross Pay, Total Net Pay, Employee Taxes, Employer Taxes, and an Employee Breakdown table: Employee · Gross · Fed Tax · State Tax · Local Tax · State Ins. (SDI/PFML) · SS · Medicare · Net.
- Hover the State Tax cell to see the work state in parentheses; hover State Ins. to see the component breakdown.
Who: Accountant or SMB admin.
Notes: Editing any field after preview clears the preview — you must recalculate to refresh totals. The preview reads YTD balances from the per-period YTD ledger so Social Security wage caps, additional Medicare, and SUI taxable wage caps are applied accurately. SUI rates resolve from the per-client client_sui_rates history (state-specific, effective-dated). Preview is read-only — no DB writes, no tax filings, no payments.
Save & approve
What it does: Persists the run, then locks it for processing.
Where: Save as Draft and Create Payroll buttons (bottom right), then Approve Payroll on the detail page.
Steps:
- Click Save as Draft to persist without finalizing — the run lands in
draftstatus and is editable. - Or click Create Payroll to save with the calculated taxes (requires Preview first).
- On success you land on the payroll detail page at
/clients/{clientId}/payroll/{payrollId}. - Click Approve Payroll to lock the run. Approval writes garnishment ledger entries and time-off accrual deltas — it's hard to reverse.
- On the approved run, click Process Payroll to fire the Moov debit, initiate direct deposits, and schedule tax payments. A pre-checked Same-Day ACH toggle appears if the client's
same_day_ach_enabledflag is on — uncheck to use standard 2-day ACH.
Who: Accountant or SMB admin.
Notes: Auto-run can do create/approve/process automatically — see Auto-pilot payroll. On the global accountant payroll listing (/payroll?client=...), each row's actions include inline Approve / Process with confirm dialogs spelling out what the action does.
Cancel before approval
What it does: Deletes a draft payroll. After approval, deleting becomes voiding — different workflow.
Where: /clients/{clientId}/payroll list page, draft rows show a Delete button.
Steps:
- From the payroll list, find the draft row.
- Click Delete (red, trash icon).
- Confirm in the modal — Delete in red, irreversible.
Who: Accountant or SMB admin.
Notes: Only draft payrolls have the Delete button. For approved or processing runs, use Void Payroll on the detail page — that cancels pending Moov debits, voids each item, and cancels scheduled tax payments. Voided runs are kept for audit. See Off-cycle, bonus & correction payrolls for the correction-run pattern when you can't void.
Related: Off-cycle, bonus & correction payrolls · Auto-pilot payroll · Payroll history & edits · How ACH timing works.