Odoo Solutions

Updated 2026 HR & Payroll · India Compliance · April 2026
Odoo payroll for India:
PF, ESI, Professional Tax,
and TDS — all in one place

Payroll is the most-deferred module in every Indian Odoo implementation. The statutory complexity is real — but so is Odoo’s capability to handle all of it natively. This guide covers the complete configuration sequence, the 2025–26 Labour Code changes that affect your setup, and the five mistakes that trigger government notices.

When a business is evaluating Odoo for the first time, payroll is almost always moved to a later phase. The reasoning is understandable — get the core transaction flow stable first, then add HR. What happens in practice is that “later” becomes twelve months away, and the business continues running payroll in a disconnected Excel sheet or a standalone software while everything else runs in Odoo.

The cost of this split is real. Payroll data that does not flow into Odoo’s accounting means salary journals are being entered manually, PF and ESI liability accounts are being reconciled by hand, and the finance team has no single source of truth for employee cost. For a business with 50 to 500 employees, that is a meaningful operational drag every month.

The reason payroll gets deferred is not that Odoo cannot handle Indian payroll. It can — and in Odoo 19, the Indian payroll module handles EPF, ESI, Professional Tax, TDS on salary, Labour Welfare Fund, gratuity, and all statutory reporting natively. The reason it gets deferred is that the configuration is more involved than other modules, and most implementation partners treat it as a specialised workstream.

This guide walks through every step of that configuration, what changed with the 2025 Labour Codes, and what the compliance failure modes look like in practice.

What changed in 2025–26

Two major changes affect Indian payroll from 2026. First, the four Labour Codes were implemented in November 2025, consolidating 29 older laws. The critical payroll impact: basic salary plus dearness allowance must now be at least 50% of total CTC — the 50% wage rule. This directly increases EPF and gratuity contributions. Second, the Income Tax Act 2025 came into force on April 1, 2026, replacing old section and form references: TDS on salary now falls under Section 392(1), the quarterly return is Form 138, and the annual employee certificate is Form 130. Any payroll system still using old form numbers will fail validation on the income tax portal.

What Indian payroll compliance actually involves

Before configuration, it is worth mapping out the full statutory landscape that Odoo needs to cover. Indian payroll is ranked 12th globally in compliance complexity — the layers of central and state law are genuine, and each has its own registration, calculation, and filing requirement.

12%
EPF — employee & employer each
0.75%
ESI — employee contribution
3.25%
ESI — employer contribution
₹21,000
ESI gross salary ceiling per month
₹15,000
EPF statutory cap on basic
50%
Minimum wage as % of CTC under Labour Code
Monthly compliance deadlines
7th of every month
TDS on salary deposit
Deposit TDS deducted from employee salaries for the previous month. Delay attracts 1.5% interest per month from the date of deduction to deposit.
15th of every month
EPF contribution deposit
Deposit both employee (12%) and employer (12%) EPF contributions via EPFO portal. Delay attracts penalty up to ₹3 lakh plus interest at 12% per annum.
21st of every month
ESI contribution deposit
Deposit employer (3.25%) and employee (0.75%) ESI contributions via ESIC portal for all employees earning up to ₹21,000 gross.
Quarterly
TDS return filing (Form 138)
File quarterly TDS returns under the Income Tax Act 2025. Note: the old Form 24Q is now Form 138 from April 1, 2026. Systems using old form numbers will fail portal validation.
June 15 — annually
Form 130 issue to employees
Issue annual TDS certificate (formerly Form 16, now Form 130 under the Income Tax Act 2025) to all employees by June 15 after each financial year end.
What Odoo’s Indian payroll module covers — and what you must configure
Included in Odoo Enterprise
  • EPF employee and employer contributions
  • ESI employee and employer contributions
  • State-based Professional Tax slabs
  • TDS on salary (old and new tax regime)
  • Labour Welfare Fund (state-specific)
  • Gratuity calculation
  • EPF, ESI, LWF export reports (XLSX)
  • UAN, ESIC number, PAN fields on employee
Requires deliberate configuration
  • EPF employer ID in company settings
  • ESIC employer code in company settings
  • PT registration number per state
  • PF cap choice (₹15,000 or actual basic)
  • Salary structure with 50% wage rule
  • TDS regime declaration per employee
  • HRA, 80C, 80D declarations in contracts
  • LWF applicability per state of operation
The configuration sequence: step by step

Follow this order exactly. Each step activates features used in the next. Skipping steps or working out of sequence creates conflicts that require manual correction after payslips have been generated.

1
Register employer IDs in Indian payroll settings
Go to Payroll → Configuration → Settings → Indian Payroll. Enter your EPF Employer ID (alphanumeric code issued by the EPFO), ESIC Employer Code (10-digit numeric ID from ESIC), and Professional Tax registration number (state-issued). Entering each ID activates the corresponding section in employee payroll settings and contract templates. If these fields are left blank, EPF, ESI, and PT deductions will not appear in employee contracts.
Register with EPFO before entering employees if you have not already done so. EPFO registration is mandatory for businesses with 20 or more employees. ESIC registration is mandatory for 10 or more employees. PT registration is required in every state where your employees are based.
2
Configure the PF calculation method
Odoo gives you two options for PF calculation. The first caps the PF base at ₹15,000 basic, limiting both employer and employee contributions to ₹1,800 per month regardless of actual basic salary. The second calculates PF on the actual basic without a cap, which increases retirement savings but raises employer cost. Set this at the company level before creating any employee contracts — changing it after payslips have been generated requires manual correction of past contributions.
Most businesses use the capped method (₹15,000 cap) for employees earning above ₹15,000 basic. If your company policy is to contribute PF on actual basic as a benefit — common in IT and professional services — select the uncapped method and document this clearly in your offer letters.
3
Build the salary structure with the 50% wage rule
Under the Labour Codes implemented in November 2025, basic salary plus dearness allowance must be at least 50% of total CTC. This is not optional — non-compliant salary structures trigger retrospective PF and ESI dues during EPFO inspections. In Odoo’s salary structure, configure basic salary as a percentage of CTC (minimum 40–50%), with HRA typically at 40–50% of basic (50% in metro cities), and special allowance making up the remainder. The structure should compute basic automatically as a function of CTC so the 50% rule is always maintained.
Have your CA review and sign off on the salary structure before the first payroll run. The structure is the foundation for all statutory calculations. Getting it wrong means every payslip generated from it will have incorrect deductions.
4
Configure employee contracts with statutory details
For each employee, the contract must include: UAN (12-digit EPFO identifier), ESIC number (17-digit insurance number), PAN (required for TDS), bank account details (for salary disbursement), the applicable Professional Tax state, and the employee’s chosen tax regime (old or new) with their declaration of exemptions (HRA, 80C, 80D, LTA). Odoo reads these contract fields to compute every payslip. Missing data causes payslips to generate with incorrect or zero deductions.
5
Verify Professional Tax slabs per state
Odoo maintains state-specific PT slab tables. The system reads the employee’s state from their contract and applies the correct slab automatically. Before go-live, verify the current PT slab for every state in which you have employees — state governments revise these periodically. Odoo’s slabs are updated with version releases, but you should cross-check against the state notification for the current financial year.
6
Configure TDS on salary — old regime vs new regime
Odoo calculates TDS by projecting each employee’s annual taxable income based on their contract CTC, declared exemptions, and chosen tax regime. The annual projected tax is divided equally across the remaining months of the financial year. Each month the monthly TDS amount is deducted from the payslip. At year-end, if the employee’s actual income differs from the projection — due to bonuses, arrears, or regime change — Odoo adjusts the TDS in the final months to ensure the correct annual total is deducted.
Collect tax regime declarations from every employee in April at the start of each financial year. Under the Income Tax Act 2025, the new regime is the default — employees must explicitly opt for the old regime. Employees who do not submit a declaration will be taxed under the new regime automatically.
7
Set up Labour Welfare Fund (state-specific)
LWF applies in approximately 16 states. The contribution amounts, frequency (monthly, half-yearly, or annual), and applicability thresholds vary by state. In Odoo, enter your LWF establishment number in the payroll settings and configure the applicable contribution amounts per state. States with no LWF — including Delhi — require no configuration. Verify applicability for every state where you have employees at the time of setup.
Professional Tax slabs: quick reference by state

These are the current PT slabs for the most common states. PT is not levied in all states — Delhi, Haryana, Rajasthan, and several others do not impose PT. Always verify the current slab from your state’s Commercial Tax Department for the active financial year.

Maharashtra
Up to ₹7,500/monthNil
₹7,501 – ₹10,000₹175/month
Above ₹10,000₹200/month (Feb: ₹300)
Karnataka
Up to ₹25,000/monthNil
₹25,001 – ₹41,666₹150/month
Above ₹41,667₹200/month
West Bengal
Up to ₹10,000/monthNil
₹10,001 – ₹15,000₹110/month
₹15,001 – ₹25,000₹130/month
Above ₹25,000₹200/month
Tamil Nadu
Up to ₹3,500/monthNil
₹3,501 – ₹5,000₹22.50/month
₹5,001 – ₹7,500₹52.50/month
Above ₹7,500₹208.33/month
Andhra Pradesh
Up to ₹15,000/monthNil
₹15,001 – ₹20,000₹150/month
Above ₹20,000₹200/month
Delhi / Haryana / Rajasthan
All salary levelsNo PT applicable
  
No PT registration required
Generating reports and statutory filings from Odoo

Once payslips are confirmed each month, Odoo generates all statutory reports directly from the Payroll module. These reports are formatted for portal upload — no manual reformatting is required.

Report Path in Odoo Format Frequency
EPF ECR file Payroll → Reporting → EPF Report XLSX Monthly — upload to EPFO portal by 15th
ESI contribution report Payroll → Reporting → ESI Report XLSX Monthly — upload to ESIC portal by 21st
Labour Welfare Fund report Payroll → Reporting → Labour Welfare Fund Report XLSX Per state schedule (monthly / half-yearly)
TDS summary (Form 138) Payroll → Reporting → TDS Report XLSX / PDF Quarterly — income tax portal filing
Form 130 (employee TDS certificate) Generated per employee from payslip PDF Annual — issue by June 15
Payslips Payroll → Payslips → Batch print PDF Monthly — distribute to employees
Important — Income Tax Act 2025

From April 1, 2026, the Income Tax Act 2025 replaced the old Act. TDS on salary now falls under Section 392(1) instead of Section 192. The quarterly return is Form 138 (previously Form 24Q). The annual employee certificate is Form 130 (previously Form 16). If your Odoo version or payroll configuration still references the old form numbers, update them before the first quarterly filing of the 2026–27 year. Filing with old form numbers will fail portal validation.

Five payroll mistakes that trigger government notices
Mistake 1
Salary structure where basic is below 50% of CTC
The November 2025 Labour Codes require basic plus dearness allowance to be at least 50% of CTC. Many businesses structured salaries with low basic (20–30% of CTC) to minimise PF liability. EPFO inspections now trigger retrospective dues, interest, and penalties for the entire non-compliant period — which can run into years of arrears.
Prevention: Redesign salary structures before go-live to meet the 50% rule. Inform employees that take-home pay may reduce slightly while retirement savings increase. Get CA sign-off on the revised structure before it goes live in Odoo.
Mistake 2
TDS calculated without collecting regime declarations
From April 2026, the new tax regime is the default. Employees who intended to claim old-regime deductions (80C, HRA, 80D) but did not submit a declaration in April will have TDS calculated under the new regime all year. At year-end, when they file returns and discover the mismatch, they will face large tax dues or demand refunds from the employer — both of which create administrative and legal complications.
Prevention: Collect signed regime declarations from every employee in April. Store them against the employee contract in Odoo. Treat absence of declaration as new-regime selection and document that decision. Remind employees mid-year that regime changes are only possible at the time of filing their personal returns, not during payroll.
Mistake 3
ESI applied to employees above the ₹21,000 gross ceiling
ESI applies only to employees earning up to ₹21,000 gross per month. When an employee’s salary crosses this threshold mid-year — due to increment or variable pay — ESI deductions must stop from the beginning of the next contribution period (April or October). Continuing to deduct ESI after the ceiling is crossed creates an overpayment that is difficult to recover from ESIC.
Prevention: Odoo applies ESI eligibility based on the employee’s gross salary in the contract. Review employee salaries after every increment cycle and update contracts before the next payroll run. Set a reminder to audit ESI eligibility at the start of each half-year contribution period.
Mistake 4
Delayed deposits causing interest and penalty accumulation
EPF deposits delayed past the 15th attract 12% per annum interest plus a damage penalty of up to ₹3 lakh. TDS delayed past the 7th attracts 1.5% per month. These amounts accumulate silently — many businesses discover years of penalty exposure only when an inspection or audit triggers a demand notice.
Prevention: Run payroll by the last day of each month. Export all statutory reports immediately after payroll confirmation. Set calendar reminders for the 5th (TDS), 12th (EPF), and 18th (ESI) of each month to deposit with buffer time before deadlines. Never defer statutory deposits to resolve cash flow shortfalls — the penalty cost always exceeds the float benefit.
Mistake 5
Using old Income Tax Act form numbers after April 2026
From April 1, 2026, the Income Tax Act 2025 is in force. Form 24Q is now Form 138. Form 16 is now Form 130. Section 192 is now Section 392(1). Any system — including Odoo configurations not updated to the 2025 Act — that generates quarterly returns using old form numbers will fail validation on the income tax portal. The quarterly TDS return for Q1 FY 2026–27 (due July 2026) is the first deadline where this matters.
Prevention: Verify that your Odoo version and Indian payroll module are updated to reflect the Income Tax Act 2025 terminology before your first Q1 FY 2026–27 payroll run. If you are on Odoo 17 or earlier, check with your implementation partner whether a patch or upgrade is needed. This is not optional — it is a hard portal requirement from Q1 2026–27.
How Odoo payroll connects to accounting

One of the strongest reasons to run payroll inside Odoo rather than a standalone tool is the accounting integration. When a payslip batch is confirmed in Odoo, the system automatically creates journal entries that debit employee cost accounts and credit the corresponding liability accounts — EPF payable, ESI payable, TDS payable, PT payable, salary payable — without any manual journal entry.

This means the finance team has real-time visibility of payroll liabilities before the statutory deposits are made. When the deposits are processed, the Odoo payment reconciles against the liability account, closing the cycle cleanly. At month-end, the trial balance reflects actual salary expense and statutory liabilities without any manual intervention from the accounts team.

“When payroll runs inside Odoo, the accounts team stops entering salary journals manually. Statutory liability accounts update automatically. The trial balance is correct from day one of the month, not day ten.”

For businesses with multiple cost centres, departments, or project-based billing, Odoo’s salary structure can tag each payslip line to an analytic account — allocating employee cost to the correct project or department automatically. This is the feature that makes Odoo payroll genuinely useful for professional services, manufacturing, and project-based businesses where employee cost allocation matters for profitability analysis.


Common questions
Does Odoo support Indian payroll with PF, ESI, and Professional Tax?
Yes. Odoo Enterprise’s Indian payroll localisation covers EPF (12% employee and employer), ESI (0.75% employee, 3.25% employer), state-based Professional Tax slabs, TDS on salary under both old and new tax regimes, Labour Welfare Fund, and gratuity — all within a single salary structure. Reports for EPF, ESI, and LWF can be exported directly from the Payroll module for portal upload.
How is Professional Tax configured in Odoo for different states?
Odoo reads the employee’s state from their contract and automatically applies the correct Professional Tax slab rate when generating payslips. You enter your state-issued PT registration number in the Indian payroll settings, which activates the PT slab field in the contract template. Odoo maintains different slab tables for each state. PT does not apply in Delhi, Haryana, and several other states — employees based in those states require no PT configuration.
What changed in Indian payroll compliance in 2025 and 2026?
Two significant changes took effect. The four Labour Codes were implemented in November 2025, consolidating 29 older laws. The most impactful change for payroll is the 50% wage rule — basic salary plus dearness allowance must now be at least 50% of total CTC, increasing EPF and gratuity contributions. Additionally, the Income Tax Act 2025 came into force on April 1, 2026: TDS on salary now falls under Section 392(1), the quarterly return is Form 138 (previously Form 24Q), and the annual employee certificate is Form 130 (previously Form 16).
What are the monthly payroll compliance deadlines in India?
TDS deposit: 7th of the following month. EPF contributions: 15th of the following month. ESI contributions: 21st of the following month. Professional Tax: varies by state, typically monthly or half-yearly. Quarterly TDS return (Form 138): within 31 days after each quarter end. Annual employee TDS certificate (Form 130): by June 15 each year.
Should Odoo calculate PF on capped basic (₹15,000) or actual basic?
Odoo gives you the choice. The statutory rule allows capping PF calculation at ₹15,000 basic, limiting contributions to ₹1,800 each per month. Alternatively, you can calculate PF on actual basic, which increases retirement savings but raises employer cost. The decision is set per employee in the contract’s PF configuration section. For employees earning above ₹15,000 basic, most businesses use the capped method unless their policy is to offer higher PF as a benefit.
How does TDS on salary work in Odoo for Indian employees?
Odoo calculates TDS by projecting each employee’s annual taxable income based on their contract CTC, chosen tax regime, and declared exemptions (HRA, 80C, 80D). The annual projected tax is divided equally across the remaining months of the financial year and deducted monthly from the payslip. Under the Income Tax Act 2025 (effective April 1, 2026), TDS on salary falls under Section 392(1). The new tax regime is the default from April 2026 — employees must explicitly opt for the old regime.

Need help configuring Odoo payroll for your Indian business?

ochre.digital configures PF, ESI, PT, TDS, and salary structures for businesses across India — with CA involvement before go-live. We get it right the first time so you are not correcting statutory reports after the fact.

Talk to ochre.digital →

Leave a Comment

Your email address will not be published. Required fields are marked *