ESI filing is one excel upload a month: six columns, one row per insured person, saved in the old .xls format and submitted on the ESIC employer portal by the 15th. This guide covers the exact template, a sample you can download, the reason codes, the portal walkthrough and the mistakes that get uploads bounced.
The Employees State Insurance Act, 1948 covers factories and notified establishments employing 10 or more persons — 20 in a few states for certain classes of establishment. Coverage attaches to the establishment; the monthly contribution then covers every employee drawing gross wages up to Rs 21,000 a month, or Rs 25,000 where the employee has a disability.
The return is the contribution. There is no separate ESI return document to prepare. You upload the monthly contribution against your employer code, the portal computes the liability, you pay the challan, and the month is closed.
Contribution periods run in halves. 1 April to 30 September, and 1 October to 31 March. Each maps to a benefit period six months later — 1 January to 30 June, and 1 July to 31 December — which is what an employee draws sickness and other cash benefits against. This is the reason coverage cannot be switched off mid-period: an employee whose wages cross Rs 21,000 in, say, July continues to contribute on the higher wages until 30 September.
Wages here means gross. Basic, dearness allowance, house rent, conveyance, overtime, incentive and most other regular payments are ESI wages. Contributions are computed on that gross figure, not on a capped Rs 21,000 — the ceiling decides whether an employee is covered, not how much is paid on.
Deducted from the employee's wages. Rounded up to the next rupee, per employee, not on the total.
Paid by the establishment on top of wages. Also rounded up to the next rupee.
| Employee | Days | Gross wages | Employee 0.75% | Employer 3.25% |
|---|---|---|---|---|
| Rajesh Kumar | 31 | 18,500 | 139 | 602 |
| Priya Sharma | 26 | 15,200 | 114 | 494 |
| Mohammed Arif | 12 | 6,800 | 51 | 221 |
| Latha Devi | 31 | 5,000 | 0 | 163 |
| Total | 45,500 | 304 | 1,480 |
Column order is fixed and the header wording comes from the official template. Do not add a serial number column, a department column, or anything else you find useful — the parser reads by position.
| Col | Header | What goes in it |
|---|---|---|
| A | IP Number (10 Digits) | The employee insurance number allotted by ESIC. Exactly ten digits — not the temporary identity number, and not the employer code. |
| B | IP Name (Only Alphabets and Space) | As registered with ESIC. Dots, hyphens, digits and double spaces are rejected, so an initial goes in as a bare letter. |
| C | No of Days for which wages paid/payable during the month | Whole number. A fraction is rounded up to the next integer. This is paid days, not calendar days — an employee who worked a full 31-day month shows 31. |
| D | Total Monthly Wages | Gross wages for the month as defined by the Act, not basic pay and not the ESI-capped figure. Contribution is worked out from this. |
| E | Reason Code for Zero workings days | Numeric only. Enter 0 for everyone who was actually paid; a non-zero code only where days and wages are both zero. |
| F | Last Working Day | DD/MM/YYYY or DD-MM-YYYY. Fill it only when the person has genuinely left, retired, died, gone out of coverage, been retrenched, or the unit is in a non-implemented area. Otherwise leave it blank. |
Seven rows covering the situations that actually come up. Shown here as plain text so the structure is visible; download the file and open it in Excel to work with it.
IP Number,IP Name,No of Days,Total Monthly Wages,Reason Code,Last Working Day 3100234567,RAJESH KUMAR,31,18500,0, 3100234568,PRIYA SHARMA,26,15200,0, 3100234569,MOHAMMED ARIF,12,6800,0,12/07/2026 3100234570,LATHA DEVI,31,5000,0, 3100234571,SURESH BABU,0,0,1, 3100234572,ANJALI NAIR,0,0,2,30/06/2026 3100234573,VIKRAM SINGH,0,0,4,30/06/2026
Days and wages filled, reason code 0, last working day blank. Row 3 is a mid-month exit: twelve days paid, wages for those days, reason code still 0 because days are not zero, and the last working day recorded in column F.
Days and wages both zero, so a reason code is mandatory. Row 5 was on leave all month and stays on the rolls. Row 6 left at the end of the previous month. Row 7 went out of coverage at the start of the contribution period.
No serial numbers, no totals row, no blank spacer rows, no employees without an IP number. Anything extra in the sheet is read as data and fails the upload.
Column E takes a number, never a word. It is required only where both days and wages are zero; everyone who was paid carries 0.
| Code | Meaning | When to use it |
|---|---|---|
| 0 | Not applicable — wages were paid | The normal case. Every working employee carries 0. |
| 1 | On leave | Absent for the whole month with no wages paid. |
| 2 | Left service | Pair it with the last working day in column F. |
| 3 | Retired | Also needs the last working day. |
| 4 | Out of coverage | Wages crossed Rs 21,000 at the start of a contribution period. |
| 5 | Expired | Death of the insured person. Last working day required. |
| 6 | Non-implemented area | The employee moved to a location where the scheme is not implemented. |
| 7 | Suspension of work | Work suspended at the establishment for the month. |
| 8 | Strike or lockout | No wages payable for the period of the dispute. |
Codes 2, 3, 4, 5 and 6 all describe someone leaving the covered population, so each of them needs the last working day in column F. Codes 1, 7 and 8 describe a temporary interruption — leave the last working day blank.
The ESIC upload is unusually strict about the mechanics of the workbook, and its error messages rarely name the real cause.
Download the sample MC template from the employer portal each filing season and paste your data into it. ESIC has changed the sheet before, and a stale copy fails without saying why.
The portal rejects .xlsx and .csv. In Excel: File, Save As, then pick Excel 97-2003 Workbook from the file type list.
Including the date column. Numbers stored as numbers pick up formatting Excel considers cosmetic and the upload considers fatal.
Copy your payroll output, then Paste Special and choose Values. A live formula anywhere in the sheet will break the parse.
Nothing below the last employee, nothing to the right of column F. Stray formatting from a deleted row counts as data.
Add column D before you upload and reconcile it against the ESI-eligible gross in your payroll register. Fixing it afterwards means a supplementary challan.
From the covered-employee list to the stamped challan.
Every employee drawing gross wages up to Rs 21,000 a month is covered — Rs 25,000 where the employee has a disability. Register new joiners on the portal and get their IP numbers before the filing window, because an unregistered employee cannot be included.
Under the employer login, pull the list of insured persons attached to your code. Copy the IP numbers and names from this list rather than from your HR master — the names must match ESIC records exactly.
Days paid, gross wages, reason code and, where applicable, last working day. Paste values only, format everything as Text, and keep the columns in ESIC order.
Save as Excel 97-2003 Workbook. Total column D and reconcile it against payroll. Confirm that every row with zero days carries a reason code and every leaver carries a last working day.
Employer login, then File Monthly Contribution. Select the contribution month. Confirm the establishment code on screen before you attach anything.
Choose the file and submit. The portal parses it and reports errors row by row. Correct them in the workbook, save again as .xls and re-upload — do not try to edit the uploaded copy.
The portal calculates the employee share at 0.75% and the employer share at 3.25% and shows the totals. Check them against your payroll before you submit; after submission a correction means a supplementary challan.
Submit the contribution. The system generates a challan with its own number — record it, because you will need it to trace the payment.
Click Pay Online and continue to the payment gateway. Complete the transaction through net banking and wait for the confirmation to return to the ESIC portal rather than closing the tab.
Take the stamped challan and the contribution history print for the month. These are what an ESIC inspection asks for, and they are far easier to save now than to retrieve a year later.
Open the CSV in Excel, replace the rows with your own data, then save as Excel 97-2003 Workbook (.xls) before uploading. For a live filing, always paste into the official MC template from the portal — these files show you the shape, not the sheet.
The six ESIC columns with seven sample rows — a full month, a mid-month exit, a below-threshold employee and three zero-day cases.
esic-monthly-contribution-template.csvColumn rules, reason codes, the contribution arithmetic and the worked totals for both ESI and EPF.
README-india-payroll-filing.txtThe matching EPF return file, in case you are setting up both filings this month.
epf-ecr-sample.txtEight failures that account for most of the wasted afternoons.
The most common rejection of all. Save As, then Excel 97-2003 Workbook (.xls). Excel will warn about compatibility — accept it.
Select the data range, then Data, Text to Columns, Delimited, Finish. This normalises the cells without changing the values.
Select all, copy, then Paste Special, Values, over the same range. VLOOKUPs pointing at your payroll workbook are the usual survivors.
Column B accepts alphabets and single spaces only. Write S KUMAR, not S. Kumar. Take the spelling from the portal IP list.
Any row with zero days and zero wages needs a numeric reason code in column E. Zero-day rows also draw scrutiny when they repeat month after month for the same person, so use the code that is actually true.
Column F must be blank unless the person has left, retired, died, gone out of coverage or been retrenched. Filling it for an active employee ends their coverage.
If wages cross Rs 21,000 in the middle of a contribution period, contribution continues on the higher wages until the period ends — 30 September or 31 March. You cannot stop in the month of the increment.
Payment and filing are separate actions. A paid challan without a submitted contribution leaves the month unfiled.
Simple interest at 12% per annum for every day of default or delay, from the due date until the contribution is actually paid.
5% to 25% per annum of the outstanding contribution, graded by how long the default has run, and capped at the amount of contribution in default. Section 85 prosecution remains available for persistent failure, and deducting the employee share without depositing it is treated far more seriously than simply paying late.
The 15th of the month following the wage month. Both the contribution filing and the payment must be completed by that date — filing the excel and leaving the challan unpaid does not discharge the obligation.
The employee contributes 0.75% of gross wages and the employer 3.25%, a combined 4%. These rates have applied since 1 July 2019. Both shares are rounded up to the next rupee.
Rs 21,000 a month in gross wages, and Rs 25,000 for an employee with a disability. An employee earning above the ceiling at the start of a contribution period is outside the scheme for that period.
An Excel workbook in the older Excel 97-2003 format with a .xls extension, laid out on the official MC template — six columns, every cell formatted as Text, values only with no formulas. The portal rejects .xlsx and .csv.
IP Number (10 digits), IP Name (alphabets and spaces only), Number of days for which wages were paid or are payable during the month, Total monthly wages, Reason code for zero working days, and Last working day in DD/MM/YYYY or DD-MM-YYYY format.
No. An employee whose average daily wage is Rs 176 or less is exempt from the employee contribution, but the employer still pays its 3.25% on those wages. The employee remains fully covered for benefits.
Two contribution periods run 1 April to 30 September and 1 October to 31 March. Each has a corresponding benefit period six months later — 1 January to 30 June, and 1 July to 31 December. This is why coverage cannot be switched off mid-period.
The separate half-yearly Return of Contributions has been dispensed with. The contribution-period record is built from the six monthly contributions you file online, which is another reason a missed month is conspicuous.
File a supplementary challan for that wage month covering the omitted employees or the omitted wages. Interest and damages run from the original due date, not from the date you discovered the omission.
Simple interest at 12% per annum under Regulation 31A for each day of delay, plus damages under Regulation 31C ranging from 5% to 25% per annum depending on how long the payment has been outstanding. Damages cannot exceed the contribution amount in default. Persistent default can also attract prosecution under Section 85.
Laabam.One tracks who is covered, applies the ceiling and the daily-wage exemption, handles mid-period crossings, and exports the monthly contribution sheet with days, wages and reason codes already filled — reconciled to the payroll register before you upload.
Start Free Trial