Payroll & Tax¶
This is the monthly heart of HRMS. See also the short Run Payroll guide.
What goes into a payslip¶
For each employee a payroll run folds together:
- Base salary, prorated by attendance (loss-of-pay for unpaid absences).
- Statutory — SSF / EPF / CIT contributions.
- Income tax (TDS) — computed under the Income Tax Act 2058 (see below).
- Variable inputs — approved overtime, shift & night-differential allowances, on-call allowance, festival bonus, salary-advance EMI, recurring deductions, and back-pay arrears.
Each payslip is frozen as an immutable snapshot pinned to the fiscal year, so it can always be
reproduced exactly.

Running payroll¶
- HR Management → Payroll → Generate — give the cycle a code, fiscal year, and pay period.
- The readiness check verifies tax brackets, statutory caps, and employee PANs first, then processes everyone. One employee's failure never aborts the batch — failures are listed for you to fix and regenerate.
3. The run moves through DRAFT → APPROVED → FUNDED → PAID → SETTLED.
Tax is cumulative (incremental)
Monthly TDS is not a flat annual/12. Each month the system computes tax on your year-to-date taxable income (including any prior-employer income for mid-year joiners) and withholds the difference versus what's already been deducted this year. The first slab is the 1% Social Security Tax — waived for SSF contributors. SST and TDS are reported under their correct IRD revenue heads.
No double-paying days
A regular run is blocked if its pay period overlaps an existing regular cycle. Supplementary and reversal runs are exempt (they intentionally cover a period already paid).
Net-pay floor¶
If deductions would push someone's net pay negative, the system waives discretionary deductions (largest first). Statutory withholdings are never waived — any shortfall is logged for recovery next cycle.
Bonuses, advances, overtime¶
- Festival (Dashain) bonus — auto-generated for eligible staff (≥ 1 year service) during the Ashwin/Kartik cycles, as a PENDING record for HR to approve.
- Salary advances — a 2-level approved loan recovered by monthly EMI.
- Overtime — approved overtime is paid at the configured premium and folded in.
Off-cycle (supplementary) payroll¶
Need to pay a missed bonus or recover a deduction after a run is approved? Create a
supplementary run (POST /api/hr/payroll/supplementary) with just the adjustment lines. It
follows the normal approve → fund → pay lifecycle, and any taxable amount is reconciled by the next
regular cycle's cumulative tax.
Paying out & reporting¶
Once a cycle is approved you can produce:
| Output | Where |
|---|---|
| Bank disbursement CSV (ConnectIPS/NCHL-style) | Payroll cycle actions |
| SSF / CIT / EPF / TDS statutory CSVs | /api/hr/statutory/compliance/{payrollId}/{ssf\|cit\|epf\|tds} |
| Annual TDS certificate register (per employee, whole FY) | /api/hr/statutory/compliance/annual-tds?fiscalYear=2082/83 |
| GL journal (balanced double-entry, for the accountant to post) | /api/hr/payroll/gl/{payrollId}/journal |
GL account mapping
The GL journal uses conventional default accounts (salary expense, TDS/SSF/EPF/CIT payables, salaries payable). Override any component's account per tenant if your chart of accounts differs — the journal is an export to review and post, never auto-posted into the books.
Locking a period¶
Lock a month (PayrollLock) to freeze salary-affecting changes (advances, overtime, revisions)
once you've finalised it.
Next: Offboarding →