Skip to content

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.

The payslip ledger for a payroll run

Running payroll

  1. HR Management → Payroll → Generate — give the cycle a code, fiscal year, and pay period.
  2. 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.

The Payroll Command Center — run a batch, see YTD totals 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 →