Help CenterRunning payroll

Run a regular payroll

Last updated 2026-06-19For: Accountant, Small business

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 → PayrollRun Payroll (/clients/{clientId}/payroll/new).

Steps:

  1. From the client sidebar, click Payroll.
  2. Click Run Payroll in the top right.
  3. 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:

  1. Period Start and Period End prefill from the API based on pay frequency. Adjust as needed.
  2. Pay Date (Check Date) also prefills — this is the date funds land in the employee's account.
  3. 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:

  1. The table shows: checkbox · Employee · Type · Rate/Period · Reg · OT · Hol · PTO · Sick · Bonus · Comm · Method.
  2. 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.
  3. Holiday, PTO, Sick, Bonus, and Commission are editable for everyone.
  4. 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.
  5. 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:

  1. Click Calculate Preview.
  2. 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.
  3. 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:

  1. Click Save as Draft to persist without finalizing — the run lands in draft status and is editable.
  2. Or click Create Payroll to save with the calculated taxes (requires Preview first).
  3. On success you land on the payroll detail page at /clients/{clientId}/payroll/{payrollId}.
  4. Click Approve Payroll to lock the run. Approval writes garnishment ledger entries and time-off accrual deltas — it's hard to reverse.
  5. 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_enabled flag 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:

  1. From the payroll list, find the draft row.
  2. Click Delete (red, trash icon).
  3. 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.

Still need help?