Payroll — Production Guide
Licensing
- Catalog slug:
payroll - Category:
hr,sort_order = 40 - Free Marketplace opt-in
- Hard dependency on
employees - Optional dependency on
accounting(journal post) — both rows fromadd_payroll_employees_dependency
Bootstrap
- Ensure Employees schema + catalog exist
- Migrate
payroll_profiles,pay_runs,pay_run_lines - Register module + permissions + dependency rows
- Deploy Payroll UI under HR
- (Optional) Install Accounting for
POST /pay-runs/{id}/post
Deploy checklist
- Migrate schema + catalog + permissions + dependencies
- Confirm Marketplace blocks Payroll without Employees; Accounting remains optional
- Smoke: profile → pay run (lines from active profiles) → approve → pay
- With Accounting: post pay run → draft journal linked via
journal_entry_id(expense debit + liability credit) - Confirm default staff role does not include
payroll.view(compensation restricted to manager+) - Pest:
tests/Feature/Tenant/Payroll - Production Readiness · Security Audit