You set up India payroll in ERPNext through Frappe HR by following a strict chain — Company, Departments and Designations, Employees, Salary Components, Salary Structure, Salary Structure Assignment, then Payroll Entry. ERPNext handles PF, ESI, Professional Tax, and TDS through built-in, formula-driven salary components, so a correctly configured instance runs a compliant India payroll with no custom code.
Payroll is where ERPNext setups most often go wrong — not because the software cannot do it, but because the configuration has a strict order and skipping a step produces blank salary slips with no obvious error. Since ERPNext v14, HR and payroll live in a separate open-source app, Frappe HR, installed on the same site. Once you know the chain, Indian statutory payroll is genuinely straightforward.
India payroll in ERPNext is a sequence, not a single screen. Get the chain right — components, structure, assignment — and PF, ESI, PT, and TDS fall out automatically from formulas. Miss a link and the slip comes out empty. I am Manoj, an ERPNext and Frappe implementation consultant at MithTech in Bengaluru, and this is how I set it up.
How do I set up payroll in ERPNext for India?
You set up India payroll in ERPNext by installing Frappe HR and configuring a strict chain: create the Company, add Departments and Designations, add Employees, define Salary Components, build a Salary Structure from those components, assign the structure to employees, then run a Payroll Entry. Each step depends on the previous one, so the order matters — this is what produces correct salary slips.
Here is the setup chain I follow.
- Company and org setup. Confirm the Company, then create Departments and Designations.
- Add Employees. Create employee records with joining date, department, and pay details.
- Define Salary Components. Set up earnings (basic, HRA, allowances) and deductions (PF, ESI, PT, income tax) with their formulas.
- Build a Salary Structure. Combine the components into a structure, using conditions and formulas for how each is calculated.
- Assign the structure. Create a Salary Structure Assignment per employee with the base and effective date.
- Run Payroll Entry. Generate salary slips for the period, review, and submit — ERPNext calculates each component automatically.
Skimmable summary: Install Frappe HR, then follow the chain — Company, Departments/Designations, Employees, Salary Components, Salary Structure, Salary Structure Assignment, Payroll Entry. Each step depends on the last, and the order is what produces correct salary slips.
What statutory deductions does ERPNext payroll support for India?
ERPNext payroll supports the core Indian statutory deductions — Provident Fund (PF), Employees' State Insurance (ESI), Professional Tax, and TDS on salary — all through built-in salary components you configure with formulas. A correctly set-up instance runs a compliant India payroll without custom development, because these deductions are modelled as standard component types rather than hard-coded features.
| Statutory item | How ERPNext handles it |
|---|---|
| Provident Fund (PF) | Deduction component, formula as a percentage of basic, capped at the wage ceiling |
| ESI | Deduction component, percentage of gross within the eligibility threshold |
| Professional Tax | Deduction component, state-wise slab (PT varies by state) |
| TDS / Income Tax | "Variable based on Taxable Salary" component driven by date-effective Income Tax Slabs |
Because components use condition and formula fields, most pay rules need zero code — basic as a percentage of CTC, PF capped at the ceiling, PT by state. Income tax is the one to watch: tick "Variable based on Taxable Salary" on the income-tax component so ERPNext computes TDS automatically from the applicable slab.
Skimmable summary: ERPNext supports PF, ESI, Professional Tax, and TDS as built-in, formula-driven salary components — no custom code for compliant India payroll. Income tax uses a "Variable based on Taxable Salary" component and date-effective Income Tax Slabs to compute TDS automatically.
How do income tax slabs and regimes work in ERPNext payroll?
ERPNext computes income tax through Income Tax Slabs — date-effective definitions with percentage bands, optional surcharge conditions, and support for multiple parallel regimes such as India's old and new tax regimes. You create a slab record for each regime and financial year, and ERPNext applies it to the taxable salary to calculate TDS on each salary slip.
Because slabs are date-effective, you keep old and new financial years side by side and ERPNext uses the right one automatically. Supporting both the old and new regime means employees on either can be handled in the same payroll. The income-tax component links to these slabs through the "Variable based on Taxable Salary" setting, which is the piece people most often forget — without it, TDS will not calculate.
Skimmable summary: ERPNext uses date-effective Income Tax Slabs with bands, surcharge, and support for old and new regimes. Create a slab per regime and year; the "Variable based on Taxable Salary" income-tax component applies the right slab automatically to compute TDS.
Why are my ERPNext salary slips blank?
ERPNext salary slips come out blank almost always because a link in the setup chain is missing — most often no Salary Structure Assignment for the employee, or a salary structure with no components or no effective date. ERPNext generates a slip from the assignment and structure, so if either is absent or dated wrong for the period, the slip has nothing to calculate and appears empty.
Work back through the chain to fix it: confirm the employee has a Salary Structure Assignment with a base amount and an effective date on or before the payroll period, that the assigned structure has earning and deduction components, and that those components have valid formulas. This "blank slip" issue is the single most common India payroll snag, and it is always a broken link in the sequence, not a bug. Budgeting a proper configuration is part of any ERPNext implementation.
Skimmable summary: Blank salary slips almost always mean a missing setup link — usually no Salary Structure Assignment, or a structure with no components or a wrong effective date. Check the assignment's base and date, and that the structure has valid components; it is a sequence gap, not a bug.
Need India payroll set up correctly in ERPNext?
I configure compliant India payroll in ERPNext and Frappe HR — PF, ESI, professional tax, and TDS with the salary structure done right. See the Frappe HR product page or the ERPNext product page.
Frequently asked questions
Does ERPNext have payroll for India?
Yes. Through Frappe HR — the HR and payroll app installed alongside ERPNext since v14 — ERPNext runs compliant Indian payroll with built-in support for PF, ESI, Professional Tax, and TDS. These are configured as formula-driven salary components, so a correctly set-up instance processes India payroll without custom development. It also handles attendance, leave, and expense claims in the same system.
How do I create a salary structure in ERPNext?
Define your Salary Components first — earnings like basic and HRA, and deductions like PF, ESI, PT, and income tax — each with its formula. Then create a Salary Structure that combines those components, and assign it to employees with a Salary Structure Assignment that sets the base and effective date. ERPNext uses the structure and assignment to calculate each salary slip when you run Payroll Entry.
How does ERPNext calculate TDS on salary?
ERPNext calculates TDS through an income-tax salary component marked "Variable based on Taxable Salary", linked to date-effective Income Tax Slabs for the financial year and regime. It applies the relevant slab bands to the employee's taxable salary to compute the tax, spread across the year. Forgetting to tick "Variable based on Taxable Salary" is the usual reason TDS does not calculate.
Can ERPNext handle both the old and new tax regimes?
Yes. ERPNext supports multiple parallel Income Tax Slab definitions, so you can maintain both the old and new regime for the same financial year and assign employees to whichever applies. Because slabs are date-effective, ERPNext uses the correct year automatically. This lets a single payroll run handle a workforce split across both regimes without separate processes.
Why is my ERPNext salary slip showing zero or blank?
A zero or blank salary slip means a link in the setup chain is missing — most commonly no Salary Structure Assignment for the employee, a structure with no components, or an effective date after the payroll period. ERPNext has nothing to calculate in those cases. Check that the employee has an assignment with a base and a valid effective date, and that the structure contains proper earning and deduction components.
About the author
Manoj is an ERPNext and Frappe implementation consultant at MithTech in Bengaluru. He sets up compliant India payroll in ERPNext and Frappe HR — salary structures, PF, ESI, professional tax, and TDS — configured end to end.