Payroll & payslips — overview
How payroll works in ItzSEO — salary structures, drafts, finalize, amendments, audit trail.
ItzSEO's payroll sits on top of the HRMS attendance + leave + overtime data you already have. Every month, the system drafts a payslip for each employee, HR reviews and finalizes it, and the employee sees the final payslip plus a PDF copy at /me/payroll.
The core idea
Each employee has a SalaryStructure — their basic salary, gross monthly target, OT rate, and a list of earning + deduction components (HRA, PF, ESI, TDS, etc). When the month ends, the calculation engine pulls every attendance event, leave request, OT entry, and holiday into a draft Payslip using those rules. HR reviews and finalizes; the employee gets the email and the PDF.
Lifecycle
- DRAFT — auto-created on the 1st of the month for everyone with an active SalaryStructure. Visible to HR only. Recalculates whenever source data (attendance, leave, OT) changes.
- FINALIZED — HR clicks Finalize. Source changes no longer auto-rewrite the row. Employee sees the payslip on
/me/payroll+ gets the release email. PDF available for download. - AMENDED — HR explicitly amends a finalized payslip with a reason. Numbers update, employee sees the change + reason on the payslip page and the email. Every field that changed is captured in the modification history.
What HR sees vs what employees see
- HR (
/hr/payroll): every employee in the workspace, current + past months, with bulk Finalize + per-row Recalculate / Finalize / Amend / Override actions. Includes a CSV export and a "Create manual payslip" dialog for edge cases. - Employees (
/me/payroll): only FINALIZED and AMENDED payslips. Drafts are HR-internal. Each row has a PDF download. Amended payslips show a banner with HR's reason.
Who has access
Only the workspace Owner and members of an HR-flagged department can see payroll. Department managers do NOT see their team's payslips — payroll is intentionally stricter than attendance privacy. The same gate covers salary structures.
What runs on cron
- Monthly draft — designed to fire on the 1st of each month at 00:30 IST. Creates a DRAFT payslip for every employee with an active structure.
- Recalc safety net — designed to fire every 4 hours. Re-runs the engine on any DRAFT whose last recalc is older than 4 hours, in case the in-line recalc hook missed something.
Both are bearer-authed endpoints. Each workspace owner needs to wire them at cron-job.org (or a similar scheduler) using the workspace’s CRON_SECRET. Until they are wired, HR can still hit Create manual payslip or per-row Recalculate to drive the workflow manually. There is no auto-finalize cron — finalize is always a deliberate HR action.