Quick Reference — All URLs
⚙
Payroll Processing
2
Load payroll data from a list or Excel template
One-time payments, stipends, benefit deductions, employee data, direct deposit, YTD adjustments
What's Built
PayrollImportServicewith file validation, template generation, and batch import- Import types: one-time payments, stipends, deductions, employee data, direct deposit, YTD adjustments
- Upload UI with field mapping, validation errors display, preview before commit
- Template download per import type
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-imports | Import history list |
| GET | /account/payroll-imports/create | Upload new import file |
| GET | /account/payroll-imports/download-template | Download Excel template |
Demo Steps
1
Navigate to Payroll → Payroll Processing → Import Data
2
Click Download Template and select an import type (e.g., "One-Time Payments") to show the pre-formatted Excel template
3
Click New Import, select import type, upload the filled Excel file
4
Show the validation results — errors are highlighted row-by-row with specific field issues
5
Preview the data, then click Process to commit the import
11
Process substitute payroll from third-party system
AESOP, Frontline Absence & Substitute Management integration
What's Built
SubstitutePayrollService— CSV/Excel parsing with employee name matching (exact + fuzzy + last-name-first reversal)- Source systems: Frontline (AESOP), AESOP Legacy, Manual Upload
- Validation with error reporting, match rate display, import as Additional Payments
- Manual match UI for unmatched substitutes via SweetAlert modal
- Template download per source system
| Method | URL | Description |
|---|---|---|
| GET | /account/substitute-payroll | Substitute import history |
| GET | /account/substitute-payroll/create | Upload substitute file |
| GET | /account/substitute-payroll/template?source=manual | Download template |
Demo Steps
1
2
Click New Import, select source system (Frontline/AESOP/Manual), upload file
3
Show the match results — matched employees in green, unmatched in yellow
4
For unmatched subs, click Manual Match to assign to an employee in the system
5
Click Import to Payroll to create Additional Payments grouped by employee
12
Process semi-annual payroll
Athletic supplements paid twice a year
What's Built
AdditionalPaymentService::processSemiAnnualPayments()for semi-annual frequency- Semi-annual payment type via Additional Payments with frequency =
semi_annual - Athletic supplement / coaching stipend support
| Method | URL | Description |
|---|---|---|
| GET | /account/additional-payments | Additional Payments list |
| GET | /account/additional-payments/create | Create with semi-annual frequency |
Demo Steps
1
2
Select payment type "Semi-Annual" and frequency "semi_annual"
3
Enter the employee, amount (e.g., coaching supplement of $2,500), and fund code
4
Show how the system auto-includes this in the next eligible payroll run twice per year
17
Mass load information from Excel templates
Pay, deductions, employee data, direct deposit, YTD adjustments
What's Built
- Same as #2 —
PayrollImportServicesupports all import types - Template download per type, file validation, error row tracking, preview and commit workflow
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-imports | Import history |
| GET | /account/payroll-imports/create | New import |
Demo Steps
1
Same flow as #2. Emphasize the 6 different import types available in the dropdown: one-time payments, stipends, deductions, employee data, direct deposit, YTD adjustments
2
Show downloading different templates for each type to demonstrate flexibility
31
Process off-cycle payroll with direct deposit
Enter payroll data and process off-cycle checks using direct deposit
What's Built
- Payroll Dashboard supports off-cycle run initiation via Gusto API
- Retro pay and gross-up payments submit as off-cycle payrolls
- Direct deposit records honored for off-cycle disbursements
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll/dashboard | Payroll Management dashboard |
Demo Steps
1
Navigate to Payroll → Payroll Processing → Dashboard & Runs
2
Click Initiate Run and select Off-Cycle as the run type
3
Add employees and payment amounts, submit for review, approve, and submit to Gusto
4
Show that direct deposit settings are automatically applied for off-cycle payments
💰
Compensation
1
Complete a gross up for all payroll
Gross-up calculator with iterative convergence algorithm
What's Built
GrossUpCalculatorServicewith iterative convergence algorithm- Supplemental flat rate method (22% federal + 5.49% GA + FICA)
- Aggregate method for complex calculations
- Submit as off-cycle payment to Gusto
- Full CRUD with DataTable listing, create form, and detail view
| Method | URL | Description |
|---|---|---|
| GET | /account/gross-up | Gross-Up Calculator list |
| GET | /account/gross-up/create | New gross-up calculation |
| POST | /account/gross-up/calculate | AJAX calculation endpoint |
Demo Steps
1
Navigate to Payroll → Compensation → Gross-Up Calculator
2
Click New Gross-Up, select an employee, enter the desired net amount (e.g., $1,000 bonus)
3
Click Calculate — system shows gross amount needed, tax breakdown (federal, state, FICA), and net result
4
Click Approve then Submit to Gusto to process as off-cycle payment
3
Process additional pay or allowances
Stipends, bonuses, allowances, supplements, one-time, semi-annual
What's Built
AdditionalPaymentServicewith pending payment retrieval per pay period- Payment types: stipend, bonus, allowance, supplement, one-time, semi-annual
- Frequency: one-time, per pay period, monthly, semi-annual, annual
- Fund code/account code mapping, GL accounts, approval workflow
- Integrates into payroll via
includeInPayroll()
| Method | URL | Description |
|---|---|---|
| GET | /account/additional-payments | Additional Payments list |
| GET | /account/additional-payments/create | New additional payment |
Demo Steps
1
Navigate to Payroll → Compensation → Additional Payments
2
Click New Payment, select employee, choose type (e.g., "Stipend"), set amount and frequency
3
Assign fund code and GL account for proper cost allocation
4
Submit → Approve workflow. Show how approved payments are auto-included in the next payroll run
6
Salary changes with effective dating and documentation
Change documentation attachments, mass step increment
What's Built
SalaryChangeServicewithcreateChangeRequest(),approve(),apply(),massStepIncrement()- Change reasons: annual step, promotion, COLA, correction
- Old/new salary, old/new step/lane, effective_date, board_approval_date, document_paths JSON
- Triggers retro pay flag when effective date is in the past
- Pushes to Gusto on approval via
EmployeeSalaryPlacement
| Method | URL | Description |
|---|---|---|
| GET | /account/salary-changes | Salary changes list |
| GET | /account/salary-changes/create | New salary change |
| POST | /account/salary-changes/mass-step-increment | Mass step increment |
Demo Steps
1
Navigate to Payroll → Compensation → Salary Changes
2
Click New Salary Change, select employee, set effective date, choose reason (e.g., "Promotion")
3
Show old vs. new salary comparison, attach board approval document
4
If effective date is in the past, show the "Triggers Retro" flag automatically checked
5
For mass changes: click Mass Step Increment to advance all eligible employees one step on the salary schedule
7
Pay across multiple process levels
Departments, cost centers, grants
| Method | URL | Description |
|---|---|---|
| GET | /account/fund-allocations | Fund allocation list |
Demo Steps
1
Navigate to Payroll → Payroll Processing → Fund Allocations
2
Show an employee split across multiple fund codes (e.g., 60% General Fund, 40% Title I Grant)
3
Show how payroll automatically distributes salary costs according to these percentages
8
Employee salary splits / labor cost allocations
Grant-funded vs. general fund salary splits
| Method | URL | Description |
|---|---|---|
| GET | /account/fund-allocations | Fund allocations |
| GET | /account/payroll-journal-entries | Journal entries showing split |
Demo Steps
1
Same as #7 — show fund allocation setup, then navigate to GL & Accruals → Journal Entries
2
Show how journal entries reflect the split with separate debit lines per fund code
25
Process special payments (staff development stipends)
Stipend-type additional payments with approval workflow
| Method | URL | Description |
|---|---|---|
| GET | /account/additional-payments/create | New payment → select "Stipend" |
Demo Steps
1
2
Select type "Stipend", frequency "One-Time", enter staff development amount
3
Show the approval workflow: submit → approve → auto-included in next payroll
🔒
Deductions & Garnishments
9
Set up garnishments with multiple garnishments and Finance interface
CCPA-aware, priority ordering, court order docs, GL mapping
What's Built
GarnishmentService— CCPA-aware calculation, priority ordering, Gusto sync- Types: child_support, tax_levy, creditor, student_loan
- Multiple garnishments per employee with CCPA max limits enforced
- GL account mapping, court order document storage, total owed/collected tracking
| Method | URL | Description |
|---|---|---|
| GET | /account/garnishments | Garnishments list |
| GET | /account/garnishments/create | New garnishment |
| GET | /account/garnishments/ccpa-summary | CCPA compliance summary |
Demo Steps
1
2
Click New Garnishment, select employee, enter type (e.g., "Child Support"), amount, court order number
3
Show adding a second garnishment for the same employee — system auto-assigns priority
4
Navigate to CCPA Summary to show compliance limits are being enforced
5
Show GL account mapping for Finance interface on the garnishment detail page
10
Employee deduction setup with multiple deduction types
Descending balance, flat, one-time, percentage, hours-based
What's Built
DeductionCalculationService—calculateForEmployee(),applyDescendingBalance(),getArrears()- Categories: tax, benefit, garnishment, retirement, voluntary
- Methods: flat, percentage, descending_balance, hours_based
- Per-employee overrides with goal_amount, ytd_collected, remaining_balance
- Pre-tax/post-tax flag, GL account mapping, Gusto benefit ID linking
| Method | URL | Description |
|---|---|---|
| GET | /account/deduction-codes | Deduction codes list |
| GET | /account/deduction-codes/create | New deduction code |
Demo Steps
2
Show existing codes with different calculation methods (flat, percentage, descending balance)
3
Click into a descending balance deduction to show goal amount, YTD collected, and remaining balance
4
Show GL debit/credit account mapping and pre-tax vs. post-tax configuration
18
Withholding locked for garnishment employees
W-4 changes blocked when active garnishment requires lock
What's Built
GarnishmentService::lockWithholding()— setswithholding_lockedflag- When active garnishment exists with lock, W-4 withholding changes are blocked
- HR admin override capability
| Method | URL | Description |
|---|---|---|
| GET | /account/garnishments/{id} | Garnishment detail showing lock status |
Demo Steps
1
Open a garnishment detail page for an employee with an active garnishment
2
Point out the "Withholding Locked" indicator on the garnishment record
3
Explain that employees with this flag cannot self-service change their W-4 withholding allowances
23
Pay and deduction codes with taxation and GL mapping
Control taxation, check visibility, general ledger flow
| Method | URL | Description |
|---|---|---|
| GET | /account/deduction-codes | Deduction codes with GL mapping |
Demo Steps
1
Same as #10 — emphasize the GL debit/credit account fields and pre-tax/post-tax flag
2
Show how the Gusto benefit ID links the deduction to the paycheck stub for employee visibility
26
Arrears deductions management
Track and follow arrears throughout payroll
What's Built
DeductionCalculationService::getArrears()— tracks arrears balances per employee- When deduction can't be fully taken (insufficient net pay), remainder goes to arrears
- Automatic catch-up collection from future paychecks
| Method | URL | Description |
|---|---|---|
| GET | /account/deduction-codes | Deduction codes (arrears visible per employee) |
Demo Steps
1
Navigate to Deduction Codes and click into a deduction with arrears
2
Show the arrears balance for employees where the full deduction couldn't be taken
3
Explain that the system automatically collects arrears from subsequent paychecks
🔄
Adjustments & Corrections
13
Retro pay by date entry
Calculate correct pay amounts based on effective dates
What's Built
RetroPayServicewithcalculateRetro(),calculateRetroByDate(),submitRetroPayment()- Old/new rate, pay periods affected, per-period difference, total retro amount
- Submit retro as off-cycle payroll via Gusto
| Method | URL | Description |
|---|---|---|
| GET | /account/retro-pay | Retro pay list |
| GET | /account/retro-pay/create | New retro calculation |
Demo Steps
1
Navigate to Payroll → Adjustments → Retro Pay
2
Click New Retro Calculation, select employee, enter effective date and new rate
3
System shows per-period breakdown: original pay vs. corrected pay vs. difference
4
Approve and submit — processes as off-cycle payment via Gusto
14
Automatic retro calculations on effective-dated transactions
Triggered by salary changes with past effective dates
What's Built
RetroPayService::calculateRetro()— auto-engine compares old vs. new rate across historical pay periods- Triggered by salary change requests with
triggers_retro = true
| Method | URL | Description |
|---|---|---|
| GET | /account/retro-pay | Retro pay (auto-generated entries) |
Demo Steps
1
Create a salary change at Salary Changes → New with an effective date in the past
2
Note the "Triggers Retro" flag is automatically set
3
After approval, navigate to Retro Pay to see the auto-generated retro calculation
22
Corrections or changes to employee record
Edit employee profile, personal info, pay details
| Method | URL | Description |
|---|---|---|
| GET | /account/employees | Employee list |
Demo Steps
1
Navigate to Employees, click any employee name
2
Click Edit, make a correction (e.g., update address, change department)
3
Save — changes are audited and synced to Gusto if connected
24
Corrections to employee record (duplicate of #22)
Same as #22
Note: This is a duplicate of #22 in the RFP script. Same demo flow applies.
32
Identify underpayments and process as retroactive payments
Automatic underpayment detection with retro correction
What's Built
RetroPayService::identifyUnderpayments()— compares expected vs. actual pay- Underpayment detection triggers retro pay calculation
- Submit correction as off-cycle payroll via Gusto
| Method | URL | Description |
|---|---|---|
| GET | /account/retro-pay | Retro pay list |
| GET | /account/retro-pay/underpayments | Underpayment detection |
Demo Steps
1
Navigate to Retro Pay → Underpayments
2
System scans historical pay periods and flags employees with detected underpayments
3
Select an underpayment, approve, and submit as retro off-cycle payment
33
Identify and track overpayments including DD reversals
Recovery plans: payroll deduction, DD reversal, lump sum, installment
What's Built
PayrollAdjustmentService::trackOverpayment()with installment calculation- Recovery methods: payroll_deduction, direct_deposit_reversal, lump_sum, installment
- Progress tracking with recovered_amount, remaining_amount, progress bar
requestDirectDepositReversal()for early-catch reversals
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-adjustments | Adjustments list |
| GET | /account/payroll-adjustments/create | New adjustment (overpayment) |
Demo Steps
1
Navigate to Payroll → Adjustments → New Adjustment
2
Select type "Overpayment", enter employee and amount
3
Set up recovery plan: choose method (installment), enter number of pay periods
4
Show the recovery progress bar on the adjustment detail page
44
Retroactive labor redistribution
Correct fund allocation errors after payroll has run
What's Built
PayrollAdjustmentService::createLaborRedistribution()with old/new fund_code and account_code- Generates correcting journal entries on approval
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-adjustments/create | New adjustment (labor_redistribution type) |
Demo Steps
1
Navigate to Adjustments → New, select type "Labor Redistribution"
2
Enter old fund code → new fund code, affected pay periods, amount
3
Approve — system generates correcting journal entries automatically
47
YTD adjustments to employee wages
Adjust year-to-date accumulators for any of 12 types
What's Built
PayrollAdjustmentService::applyYtdAdjustment()— applies toPayrollAccumulatoron approval- YTD fields: gross_pay, federal_tax, state_tax, social_security, medicare, retirement, etc.
- Old value / new value with auto-calculated difference
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-adjustments/create | New adjustment (ytd_adjustment type) |
Demo Steps
1
Navigate to Adjustments → New, select type "YTD Adjustment"
2
Select YTD field (e.g., "Gross Pay"), enter old and new values
3
Approve — accumulator is updated, flows through to W-2 and quarterly reports
💳
Disbursements
21
Set up and maintain direct deposits
Multiple accounts, checking/savings splits, Gusto sync
What's Built
GustoDirectDepositService—getBankAccounts(),updatePaymentMethod(),addBankAccount()- Multiple account splits (checking/savings, by amount/percentage)
- View masked bank accounts, update routing/account numbers, switch to check
| Method | URL | Description |
|---|---|---|
| GET | /account/direct-deposit | All employees DD status |
| GET | /account/direct-deposit/{userId} | Employee DD detail |
Demo Steps
1
Navigate to Payroll → Disbursements → Direct Deposit
2
Show the list of employees with their current payment method status
3
Click an employee to view/edit their bank accounts, split percentages
36
Create paychecks, ACH file, and garnishment file
NACHA-format ACH generation, batch check issuance
What's Built
PayrollDisbursementService::generateAchFile()— NACHA-format with file/batch/entry/control recordsgenerateCheckBatch()— batch check issuance with auto-numbering- Garnishment disbursements with agency, case number tracking
- Downloadable ACH file for bank upload
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-disbursements | Disbursements list |
| POST | /account/payroll-disbursements/generate-ach | Generate ACH file |
| POST | /account/payroll-disbursements/print-checks | Print checks batch |
Demo Steps
1
Navigate to Payroll → Disbursements → ACH & Check Printing
2
Click Generate ACH File to create the NACHA-format file for bank upload
3
Click Print Checks for non-DD employees
4
Show garnishment disbursements with agency and case number details
42
Check printing for non-direct deposit payments
Auto-numbering, batch printing, manual checks
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-disbursements | Disbursements list |
| GET | /account/payroll-disbursements/create | New manual check |
Demo Steps
1
Same as #36 — focus on Print Checks button and check number auto-assignment
2
Show creating a manual check for hand-written check situations
50
Online check replacement for lost check
Void original, issue replacement with full audit trail
What's Built
PayrollDisbursementService::voidAndReplace()— void + optional replacement- Void reason tracking, replacement links to original via
original_disbursement_id - SweetAlert confirmation with void reason and "Issue replacement" checkbox
- Full audit trail: original → voided → replacement chain
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-disbursements | Find the lost check |
| POST | /account/payroll-disbursements/{id}/void | Void and replace |
Demo Steps
1
Navigate to Disbursements, find the check to replace
2
Click Void & Replace, enter void reason (e.g., "Lost in mail")
3
Check "Issue replacement check" — new check is auto-generated with next number
4
Show the audit trail: original check → void record → replacement check
Demo Tip: Emphasize the disclaimer — the void/replace process requires manager approval and creates a permanent audit record.
⏰
Time & Leave
16
PTO accrual integration with HR + automated journal entries
Tenure-based rates, max balance caps, journal entries per cost center
What's Built
PtoAccrualService— accrue per pay period, max balance cap, tenure-based ratesPtoAccrualPolicylinked to existingleave_typesPtoAccrualEntrytracks accrual/usage/adjustment/payout/carryover/forfeiture- Journal entry generation for PTO liability by cost center
syncQuotaBalance()writes back toemployee_leave_quotasfor Leave module consistency
| Method | URL | Description |
|---|---|---|
| GET | /account/pto-accruals | PTO accrual policies |
| GET | /account/pto-accruals/create | New policy |
| GET | /account/pto-accruals/entries | Accrual entries ledger |
| GET | /account/payroll-accruals | Payroll accruals (PTO liability) |
Demo Steps
1
Navigate to Payroll → Time & Leave → PTO Accrual Policies
2
Show a policy with tenure-based tiers (e.g., 0-5 yrs: 10 days, 5-10 yrs: 15 days)
3
Navigate to Accrual Entries to show the running ledger
4
Navigate to GL & Accruals → Payroll Accruals and show PTO liability journal entries
40
Month-end PTO liability to GL with multi-position employees
PTO valued at hourly rates, split by fund allocation
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-accruals | Payroll accruals |
| GET | /account/payroll-accruals/pto-liability | PTO liability report |
Demo Steps
1
Navigate to GL & Accruals → PTO Liability
2
Show PTO liability calculated at each employee's hourly rate, split by their fund allocations
3
Show the generated journal entry with separate debit lines per cost center
45
PTO payout on termination
Calculate and pay eligible PTO balance on separation
What's Built
PtoAccrualService::processTerminationPayout()— calculates payout using hourly_rate or annual_salary/2080- Checks which leave types are eligible for payout per policy
payout_on_terminationflag - Creates payout entry, zeros balance, syncs to leave quotas
| Method | URL | Description |
|---|---|---|
| GET | /account/pto-accruals/entries | Accrual entries (trigger payout here) |
| POST | /account/pto-accruals/termination-payout | Process termination payout |
Demo Steps
1
Navigate to Time & Leave → Accrual Entries
2
Select a terminating employee, click Process Termination Payout
3
System calculates: eligible hours × hourly rate = payout amount, zeros the balance
📈
GL & Accruals
37
Month-end accrual calculation
Salary payable, benefit payable, PTO liability with reversal
What's Built
PayrollAccrualService::calculateMonthEndAccruals()— salary payable, benefit payable, PTO liability- GL account mapping, journal entry generation
- Accrual reversal with offsetting entries
- Workflow: draft → posted → reversed
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-accruals | Payroll accruals list |
| POST | /account/payroll-accruals/calculate | Calculate month-end accruals |
| POST | /account/payroll-accruals/post | Post accruals to GL |
Demo Steps
1
Navigate to Payroll → GL & Accruals → Payroll Accruals
2
Click Calculate Month-End — system creates draft accrual entries
3
Review the draft, then click Post to generate journal entries in GL
4
Show the Reverse capability for the next period's opening entries
46
Provide payroll accruals
Salary payable, benefit payable, PTO liability with GL posting
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-accruals | Payroll accruals |
Demo Steps
1
Same as #37 — emphasize the three accrual types: salary payable, benefit payable, PTO liability
2
Show the full lifecycle: draft → post → reverse
📜
Compliance & Tax
4
Vendor maintains all tax and legislative tables
Gusto handles federal, state, FICA, Georgia TRS automatically
What's Built
- Gusto integration handles ALL tax table maintenance automatically
- Federal income tax, Georgia state tax, Social Security (6.2%), Medicare (1.45%)
- Georgia TRS retirement (6% employee / 19.81% employer)
- Paycheck detail shows complete tax breakdown
| Method | URL | Description |
|---|---|---|
| GET | /account/gusto-settings | Gusto integration settings |
| GET | /account/paychecks | Paychecks with tax detail |
Demo Steps
1
Navigate to Settings → Gusto Integration to show the active connection
2
Navigate to Pay Stubs, open any paycheck to show the full tax breakdown
3
Explain: "Gusto maintains all federal, state, and local tax tables — automatic updates with legislative changes"
15
Georgia SUI override with retroactive tax calculation
State-specific tax rate overrides with retro recalculation
What's Built
TaxOverrideService—setGeorgiaSuiRate(),calculateRetroactiveSui(),getEffectiveRate()- Tax types: SUI, FUTA, local, supplemental, workers_comp
- Retroactive calculation on taxable wages in affected period
- Company-wide or employee-specific overrides with expiration
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-compliance/tax-overrides | Tax overrides list |
| GET | /account/payroll-compliance/tax-overrides/create | New override |
Demo Steps
1
Navigate to Compliance & Tax → Tax Overrides
2
Click New Override, select "SUI", state "GA", enter new rate
3
Check "Retroactive" — system calculates the difference for prior periods
35
FLSA blended rate for varying pay
Interactive calculator for stipends and multiple pay rates
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-compliance/flsa | FLSA blended rate calculator |
Demo Steps
1
Navigate to Compliance & Tax → FLSA Calculator
2
Add multiple pay rates (e.g., base $25/hr for 40 hrs + stipend $500 for 10 hrs)
3
Click Calculate — shows blended rate, OT premium rate (1.5x), FLSA methodology explanation
39
W-2s and W-2Cs
Annual tax documents with correction capability
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-compliance/w2s | W-2 forms by year |
| POST | /account/payroll-compliance/w2c | Request W-2C correction |
Demo Steps
1
Navigate to Compliance & Tax → W-2 / W-2C
2
Select tax year, show employee listing with wages and tax summary
3
Show Request W-2C button for corrections to previously issued W-2s
41
Quarter-end and year-end reporting
FICA/GA tax, quarterly reports, 1095 forms, multi-worksite
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-compliance/quarterly | Quarterly tax report |
| GET | /account/payroll-compliance/1095 | 1095-B/C ACA forms |
Demo Steps
1
Navigate to Compliance & Tax → Quarterly Reports
2
Select year and quarter, show federal/state tax liability breakdown
3
Navigate to 1095-B/C Forms for ACA compliance
🔍
Audit & Controls
5
Restrict access during payroll blackout
Middleware blocks writes during processing, 423 Locked for AJAX
What's Built
PayrollBlackoutCheckmiddleware blocks write operations during payroll processingPayrollBlackoutmodel with default restrictions,isBlackoutActive()- Auto-activate on payroll run initiation, deactivate on completion
- Blackout banner on dashboard when active
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-audit | Audit dashboard |
| GET | /account/payroll-audit/blackouts | Blackout management |
Demo Steps
1
Navigate to Audit & Controls → Blackout Periods
2
Click Activate Blackout — show the banner appearing on the dashboard
3
Try to make a change (e.g., edit a salary) — show the system blocking it with a lockout message
4
Deactivate the blackout to restore normal access
27
Trial payroll run (pre-list) with reconciliation
Validate time, deductions, pay; address warnings before processing
What's Built
PayrollAuditService::runPreListValidation()— checks missing hours, unapplied salary changes, CCPA limits, SS wage base- Warning/error severity levels with resolution tracking
- Pre-list creates audit log entries for all findings
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-audit | Audit dashboard with unresolved issues |
| GET | /account/payroll-audit/trial-runs | Trial runs list |
| GET | /account/payroll-audit/logs | Audit logs |
Demo Steps
1
Navigate to Audit & Controls → Overview
2
Click Run Pre-List Validation for the current payroll run
3
Show warnings (missing hours, new hires not onboarded, CCPA limit exceeded)
4
Resolve each finding with explanation, then mark as resolved
28
Current vs. previous payroll comparison
Gross variance detection, headcount changes, per-employee drill-down
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-audit/trial-runs | Trial runs with comparison |
Demo Steps
1
Navigate to Audit → Trial Runs, open a trial run
2
Show the side-by-side comparison: current vs. previous run totals
3
Highlight employees with >10% variance flagged in red
29
Capture trial payroll adjustments
Snapshot, review, and finalize trial run before committing
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-audit/trial-runs | Trial runs list |
Demo Steps
1
Navigate to Trial Runs, click Capture Trial
2
Show the snapshot: total gross, net, taxes, deductions summary cards
3
Review the employee-level detail, make adjustments, then Finalize
30
Post payroll audit reports
Zero net pay, deductions >50% of gross, exception reporting
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-audit | Audit overview |
| GET | /account/payroll-audit/logs | Filterable audit logs |
Demo Steps
1
After payroll is processed, navigate to Audit → Overview
2
Click Post-Audit Report — shows exceptions (zero net pay, high deduction ratio)
3
Navigate to Audit Logs and filter by run, severity, or type
📊
Reports
19
Managers view labor costs in aggregate by pay component
Regular pay, overtime, benefits, taxes by department
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-reports | Reports dashboard |
| GET | /account/payroll-reports/labor-costs | Labor costs by department |
Demo Steps
1
Navigate to Reports → Labor Costs
2
Show department breakdown: regular pay, overtime, benefits, taxes per department
3
Adjust date range (fiscal year, quarter, month) to show trending
20
Managers view overtime by employee
OT hours, OT pay, effective rate per employee
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-reports/overtime | Overtime report |
Demo Steps
1
Navigate to Reports → Overtime
2
Show employees sorted by highest OT hours with regular vs. OT breakdown
34
YTD/QTD/MTD accumulators
12 accumulator types tracked across all period types
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-reports/ytd-summary | YTD summary report |
Demo Steps
1
Navigate to Reports → YTD Summary
2
Show all 12 accumulator types: gross pay, federal tax, state tax, SS, Medicare, retirement, etc.
3
Toggle between YTD, QTD, and MTD views
38
Hours/wages alignment between HR and Finance
Effective rate vs. configured rate variance detection
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-reports/hours-wages | Hours/wages alignment |
Demo Steps
1
Navigate to Reports → Hours & Wages Alignment
2
Show employees where effective hourly rate diverges from configured rate (flagged)
43
Labor reporting by category
Certificated, classified employees by fund code
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-reports/labor-by-fund | Labor by category/fund |
Demo Steps
1
Navigate to Reports → Labor by Category
2
Show fund-level breakdown with regular pay, benefits, taxes per fund code
49
Drill down through employee history
24-period pay timeline with YTD summary cards
| Method | URL | Description |
|---|---|---|
| GET | /account/payroll-reports | Reports dashboard (select employee) |
Demo Steps
1
Navigate to Reports → Report Center
2
Select an employee to view their timeline — up to 24 pay periods of history
3
Show YTD summary cards: gross pay, net pay, federal tax, state tax, retirement, benefits
4
Show per-paycheck detail: gross, deductions, taxes, net, hours
🔗
Other
48
New hire record from Talent Acquisition
10-step onboarding checklist with Gusto sync
What's Built
NewHireOnboardingService— 10-step checklist tracking- Quick onboard form: create employee + employee_details + optional Gusto sync in one step
- Recent hires dashboard (last 90 days) with completion progress bars
- Gusto sync: full 9-step onboarding (SSN, job, compensation, tax, address, payment method)
| Method | URL | Description |
|---|---|---|
| GET | /account/new-hire-onboarding | Onboarding dashboard |
| GET | /account/new-hire-onboarding/create | Quick onboard form |
Demo Steps
1
Navigate to New Hire Onboarding
2
Show recent hires with progress bars (% complete of 10-step checklist)
3
Click Quick Onboard to create a new hire: name, email, start date, pay type, department
4
Check "Sync to Gusto" — system creates the employee in Gusto with full onboarding
5
Click into the new hire to show the 10-step checklist with completion status