Skip to main content

Statutory Configuration

Payroll → Statutory (/statutory) — PF, ESI, Professional Tax, TDS and scheme rules. Requires payroll:read to view, payroll:master to create/edit. Six tabs via UrlTabs (?tab= deep links).

Statutory pageStatutory page
Statutory — six tabs

Tabs​

Tab (?tab=)What it holdsKey fields
PFPF configs (usePfConfigs)basis (RESTRICT_TO_CEILING vs ACTUAL_PF_WAGE, employee vs employer), epfNumber (mono), rates from RateConfigTab
ESIESI configs (useEsiConfigs)esiNumber, includeEmployerContributionInCtc (Yes/No)
Professional TaxPT slabs (PtSlabsTab)State-wise slabs (min/max gross → tax)
TDS / Tax RegimesTDS regimes (TaxRegimesTab)Regime code/name, slabs, old vs new
SchemesScheme rules (SchemeRulesTab)Fixed set edited in place — no row to create; SchemeRuleFormPage (/statutory/schemes/:scheme/edit)
Wage DefinitionWage map (WageDefinitionTab)Which payComponentCode contributes to PF wage / ESI wage etc.

Each of PF/ESI shares the RateConfigTab pattern: extraColumns plus common columns (effective date, rates). Delete via useDeletePfConfig / useDeleteEsiConfig with confirm modal.

PF (?tab=pf)​

Statutory PF tabStatutory PF tab
Statutory — PF configs with wage basis

Provident Fund configs with the wage basis beside the rates — a rate means nothing without the wage it runs on, so the basis column (RESTRICT_TO_CEILING / ACTUAL_PF_WAGE) shows Employee / Employer when they differ. epfNumber identifies the establishment.

ESI (?tab=esi)​

Statutory ESI tabStatutory ESI tab
Statutory — ESI configs

Employee State Insurance configs: esiNumber plus whether the employer contribution counts In CTC (includeEmployerContributionInCtc, Yes/No) — this decides whether the CTC costing in Salary Structures includes it.

Professional Tax (?tab=pt)​

Statutory Professional Tax tabStatutory Professional Tax tab
Statutory — state-wise PT slabs

State-wise Professional Tax slabs mapping gross ranges to tax amounts. New slabs via /statutory/pt/new; edits at /statutory/pt/:id/edit (PtSlabFormPage).

TDS / Tax Regimes (?tab=tds)​

Statutory TDS tabStatutory TDS tab
Statutory — tax regimes and slabs

TDS regimes (TaxRegimesTab) with regime code/name and slabs for old vs new regime. The employee's choice lives on their declaration; these configs decide what each choice taxes at.

Schemes (?tab=schemes)​

Statutory Schemes tabStatutory Schemes tab
Statutory — scheme rules, edited in place

Scheme rules are a fixed set edited in place — no row to create. Each scheme opens /statutory/schemes/:scheme/edit (SchemeRuleFormPage).

Wage Definition (?tab=wages)​

Statutory Wage Definition tabStatutory Wage Definition tab
Statutory — which components count toward each wage

The wage map: which payComponentCode contributes to the PF wage, ESI wage and other statutory wages. Get this wrong and every computed contribution is wrong — review it after adding a new Pay Component.

Actions​

  • New X Config (top right, payroll:master) — routes:
TabRoutes
pf/statutory/pf/new, /statutory/pf/:id/edit (PfConfigFormPage)
esi/statutory/esi/new, /statutory/esi/:id/edit (RateConfigFormPage)
pt/statutory/pt/new, /statutory/pt/:id/edit (PtSlabFormPage)
tds/statutory/tds/new, /statutory/tds/:id/edit (TaxRegimeFormPage)
schemes/statutory/schemes/:scheme/edit
  • PF/ESI wage basis sits beside rates in the table — a rate means nothing without the wage it runs on, so the basis column (RESTRICT_TO_CEILING / ACTUAL_PF_WAGE) is shown as Employee / Employer when they differ.

:::note Where calculators read from Pay Components with calculationType=CALCULATOR and a calculatorKey (e.g. PF, ESI, PT, TDS) read their rates/slabs from these configs at compute time. Changing a rate here does not rewrite old runs — it affects the next Sync & Compute. :::