Payroll — Production Guide
Licensing
- Catalog slug:
payroll - Category:
hr,sort_order = 40 - Free Marketplace opt-in
- Version 1.4.0
- Hard dependency on
employees - Optional dependency on
accounting(Post to journal + Mark paid Paid-from) — both rows fromadd_payroll_employees_dependency
Bootstrap
- Ensure Employees schema + catalog exist
- Migrate
payroll_profiles,pay_runs,pay_run_lines(+ paid-from / payment JE columns onpay_runs) - Register module + permissions + dependency rows
- Deploy Payroll UI under HR
- (Optional) Install Accounting for accrual Post and Mark paid cash/bank deduction
Deploy checklist
- Migrate schema + catalog + permissions + dependencies through 1.4.0 (incl. journal entry FKs on
pay_runs) - Confirm Marketplace blocks Payroll without Employees; Accounting remains optional
- Smoke: profile → pay run (lines from active profiles) → approve → pay
- With Accounting: Mark paid with Paid from → posted accrual + payment journals; cash/bank balance decreases by net. Optional Post to journal creates draft accrual first. Locked periods and zero-net runs are rejected.
- Confirm default staff role does not include
payroll.view(compensation restricted to manager+) - Pest:
tests/Feature/Tenant/Payroll(19) - Payroll 1.4.0 paid-from production readiness — Go · Phase 7 HR Production Readiness · Security Audit