I built an integrated HR and payroll platform that handled all three employee categories — permanent, contract, and daily wage — with separate payroll logic per category but a single interface for the HR manager. Every calculation that was previously done in Excel was moved into the system's engine. The HR manager's job shifted from data entry and calculation to review and approval.
**Employee master:** Each employee has a structured profile — personal details, bank account (IFSC-validated), PAN, Aadhaar, PF UAN, ESI IP number, and document uploads (offer letter, identity proof, educational certificates) stored in GCS with access-controlled signed URLs. The CTC breakup is configured per employee: basic, HRA, special allowance, conveyance, medical reimbursement, LTA, and any company-specific components. The system validates the PF eligibility rule (basic above/below ₹15,000), ESI eligibility threshold, and PT slab based on the employee's state of posting — and applies the correct statutory logic automatically without manual flagging.
**Attendance integration:** The biometric system's daily attendance export is pulled into the platform via a scheduled SFTP job that runs at midnight. The system parses the CSV, matches employee codes, and calculates present days, half-days (based on configurable punch-in thresholds), late arrivals, and Loss of Pay days — for all 280 employees simultaneously. Exceptions — employees with no punch record, biometric failures, or manual adjustments — are surfaced in an exceptions queue for HR review. The HR manager reviews exceptions; the system handles everything else.
**Leave management:** Leave policies are configured per employee category — Earned Leave (accruing at 1.25 days per month for permanent staff), Casual Leave, Sick Leave, Maternity Leave (26 weeks), and Paternity Leave. Employees apply for leave through the self-service portal. The leave request routes to the employee's reporting manager for approval. Approved leaves auto-deduct from the balance and feed into the attendance module so the payroll engine sees approved leave as present rather than LOP. Leave balance is always current. The HR manager never needs to maintain a separate leave tracker.
**Salary calculation engine:** On the 26th of each month, the HR manager clicks Run Payroll. The engine pulls the month's attendance data and approved leaves, applies the salary structure for each employee, and calculates gross-to-net for all 280 employees in parallel. For daily wage workers, pay is calculated as (daily rate × days present). For contract workers, the engine checks PF applicability based on basic salary. For permanent staff, it applies the full CTC breakup with all components. The output is a salary register showing every employee's earnings, deductions, and net pay — reviewable before any disbursement is triggered.
**Statutory deductions — PF:** Employee PF is 12% of basic. Employer contribution is split: EPF at 3.67% and EPS at 8.33% — but EPS is capped at ₹15,000 pensionable salary. The system applies the cap automatically. For employees with basic above ₹15,000, the EPS ceiling calculation runs without the HR manager touching it. Voluntary PF contributions above the statutory rate are configured per employee and deducted correctly. On payroll approval, the system generates the ECR file for EPFO upload — formatted to the EPFO's exact specification, with the month's employee and employer contributions per UAN. The HR manager downloads the file and uploads it to the EPFO portal. No manual challan preparation.
**Statutory deductions — ESI:** The system tracks each worker's gross salary month by month. Workers whose gross is ₹21,000 or below are subject to ESI — employee contribution 0.75%, employer contribution 3.25%. When a worker's gross fluctuates due to attendance variation, the ESI applicability recalculates automatically. Mid-year threshold crossings are flagged for HR review. The ESI return file is generated on payroll approval and ready for upload to the ESIC portal.
**Statutory deductions — Professional Tax:** PT slabs are configured per state. Haryana PT (₹200/month for salary above ₹25,000) and Maharashtra PT (slab-based, ₹2,500/year collected in February) are both configured in the system. Employees who transferred between states mid-year have their PT recalculated from the transfer date. The PT register is generated monthly with the correct amounts per state for the company's PT return filing.
**TDS computation:** Each permanent employee declares their tax regime (old or new) at the start of the financial year. Old-regime employees submit investment declarations — Section 80C, HRA exemption (auto-calculated from rent receipts uploaded to the system), medical insurance premium under 80D, and LTA. The system projects annual income based on current salary structure and calculates the monthly TDS required to collect the full year's liability evenly across remaining months. When an employee changes their declaration in February or receives a salary revision, TDS recalculates automatically for the remaining months. Form 16 Part A and Part B are generated at the end of the financial year per employee and available for download from the self-service portal.
**Payslip generation and disbursement:** On payroll approval, the system generates a PDF payslip for every employee simultaneously — branded with the company name and logo, itemised earnings and deductions, net pay, YTD figures, and the statutory deduction breakdown. Payslips are pushed to the employee's self-service portal instantly. The bank transfer file is generated in the format required by the company's bank — RTGS bulk transfer format — and downloaded by the accounts team. The transfer is processed. Payroll is done.
**Full and final settlement:** When an employee's exit is logged in the system, the F&F module calculates automatically: earned leave encashment (at last drawn basic), notice pay recovery or payout based on whether the notice period was served, gratuity (if service is above 5 years: 15 days' basic per year of service), any outstanding advance recovery, and final salary for the days worked in the exit month. The system generates the F&F statement for HR review, the final payslip, and — after approval — the exit letter and Form 16 for the partial year. What took three weeks now takes two working days.
**Employee self-service portal:** Every employee logs in with their employee code and phone-verified OTP. They can download their payslip for any month, view their YTD salary summary, check their leave balance and application history, upload investment declarations for TDS, view their PF UAN and monthly PF credit statement, raise a salary query (which routes to HR with the relevant payslip attached), and download their Form 16. The 60+ monthly HR calls for routine payroll information dropped to near zero within the first month of the portal going live.
**Salary revision workflow:** When an employee receives an increment, the HR manager enters the new CTC breakup and the effective date. The system calculates the new component breakup, recalculates PF on the new basic, recomputes TDS projections for the remaining months of the financial year using the new salary, and calculates arrears for any gap between the effective date and the processing date. A revision letter is generated automatically. The entire process takes 15 minutes instead of a week.