Home Tutorials Software How-To Payroll (Salaries)
Software Guide 16 · Intermediate · 13 min

Payroll — Salaries with PF, ESI & TDS

Set each employee's salary structure once. Every month after that: pick the month, check the preview, and post — one Journal voucher with the PF, ESI and TDS worked out and sitting in the right payable ledgers. And if you get it wrong, one button takes it back out.

🎬
Video lesson coming soon on our YouTube channel.
Follow the written steps below — and subscribe on YouTube to get the video the moment it's published.

What This Screen Does

Payroll in a small Indian business is the same arithmetic twelve times a year. iAccounting stores each employee's structure once and does the rest:

  • Employees — Basic, HRA, other allowances, whether PF and ESI apply, and a monthly TDS figure.
  • Monthly run — pick a month, preview every employee's gross, PF (both sides), ESI (both sides), TDS and net pay.
  • One voucher — post the month as a single Journal, with the ledgers created for you under the right groups.
  • Idempotent — a month can only be posted once. To re-run it you must undo it first, so you can't double-book salaries.
Edition note
Payroll is a Solo-edition screen. Employee masters can be maintained on any edition, but posting the salary voucher is manual-entry work — on a wallet-only install you post it by asking the AI assistant instead.

What It Does Not Do — Read This First

Being clear about the boundaries will save you a wasted afternoon. This is a lean payroll for a small business, not a full HR system:

Not handledWhat to do instead
TDS slab computationYou enter a flat monthly TDS figure per employee. Work out the annual liability yourself (or with your CA) and divide it across the months.
Attendance, leave, loss of payThe structure is a fixed monthly amount. For a month with LOP, temporarily reduce that employee's components before posting, or post the voucher and adjust it manually.
Salary advancesThere's an "Advance ledger" field on the employee, but it is stored for reference only — it is not deducted or posted. Recover advances with your own separate entry.
Professional tax, LWF, gratuity, bonusPost as separate entries.
PF admin charges / EDLIOnly the 12% employer share is computed. Add admin and EDLI charges yourself if you account for them.
Payslip printing, ECR filesNot generated here. The preview grid is your working sheet.

If you need all of that, keep using your payroll provider and bring in just the monthly summary entry. If you're a business with a handful of staff on fixed salaries, this covers it.

Step 1 — Open Payroll

  1. Open the Transactions menu.
  2. Click 👥 Payroll (Salaries)…

The screen splits in two: Employees on top (a grid with an editor beneath) and Monthly Salary Run below. Press Esc to close.

Step 2 — Add an Employee

Fill the editor under the employee grid and click 💾 Save:

FieldWhat to enter
Name *Required, and must be unique in the company.
DesignationOptional, for your own reference.
JoinedJoining date, dd-MM-yyyy.
Advance ledgerOptional reference only — see the scope table above.
Basic ₹/moMonthly basic. PF is calculated on this, so split salary between Basic and allowances deliberately.
HRA ₹/moMonthly house rent allowance.
Other allow. ₹/moEverything else — conveyance, special allowance, and so on.
TDS ₹/mo (flat)The monthly TDS to deduct under section 192. Enter 0 for employees below the taxable limit.
PF applicableTicked by default. Untick for employees outside EPF coverage.
ESI applicableTicked by default. Even when ticked, ESI only applies if gross is within the ceiling — the software checks.

Gross = Basic + HRA + Other allowances. That gross drives the ESI test, so how you split the package matters in two places at once.

Use New to start a fresh employee, click any grid row to edit an existing one, and Deactivate to take someone off future runs.

Step 3 — The Statutory Maths

Worth understanding, because it explains every figure in the preview.

EPF — Provident Fund

  • 12% of Basic, deducted from the employee, and 12% again from the employer.
  • PF wages are capped at ₹15,000 per month. So even on a ₹60,000 basic, PF is computed on ₹15,000 — a maximum of ₹1,800 each side.
  • Rounded to the nearest rupee.
  • Skipped entirely when PF applicable is unticked.

ESI — Employees' State Insurance

  • 0.75% of gross from the employee, 3.25% of gross from the employer.
  • Applies only when gross is ₹21,000 per month or less. Above that, both sides are nil — automatically, whatever the tick box says.
  • Each contribution is rounded up to the next rupee, following ESIC practice.

Note the difference: PF is a capped calculation that keeps applying above the ceiling; ESI is a cliff that stops entirely above its ceiling. A raise that pushes gross from ₹20,900 to ₹21,100 removes ESI completely.

TDS and net pay

  • TDS is the flat monthly figure you entered. No slab calculation.
  • Net pay = Gross − employee PF − employee ESI − TDS.

The employer's PF and ESI are not deducted from the employee — they're a cost to the business on top of gross, which is why they appear as separate expense legs in the voucher.

A Worked Example

An employee on Basic ₹12,000 + HRA ₹5,000 + Other ₹2,000, with PF and ESI both applicable and TDS of ₹0:

ItemWorkingAmount
Gross12,000 + 5,000 + 2,000₹19,000
Employee PF12% of 12,000 (under the ₹15,000 cap)₹1,440
Employer PF12% of 12,000₹1,440
Employee ESI0.75% of 19,000 (gross ≤ 21,000), rounded up₹143
Employer ESI3.25% of 19,000, rounded up₹618
TDSas entered₹0
Net pay19,000 − 1,440 − 143 − 0₹17,417
Cost to company19,000 + 1,440 + 618₹21,058

Two things to notice. The employee takes home ₹17,417 while costing the business ₹21,058 — that gap is what employer PF and ESI actually mean. And if this person's gross rose past ₹21,000, employer ESI of ₹618 would vanish while their take-home jumped by their ₹143 share.

Step 4 — Preview the Month

In Monthly Salary Run, set the Month (use the up/down arrows) and click 🔍 Preview. Every active employee gets a row: Employee, Gross, PF (emp), PF (empr), ESI (emp), ESI (empr), TDS, Net Pay.

Beneath the grid runs a totals line — gross, PF split by side, ESI, TDS and Net Payable. That net payable figure is what will leave your bank.

The status line beside the buttons tells you where the month stands: "Not yet posted for July 2026", or "✔ Posted for July 2026 (voucher …)" in green once it's done.

Check the preview properly before posting. It costs nothing to look, and it's the last easy moment to catch a wrong basic.

Step 5 — Post the Salary Voucher

Click Post Salary Voucher. A confirmation spells out what's about to happen; accept it and iAccounting posts the month.

You'll get the voucher number and total back, and the status line turns green. The Post button then disables itself for that month — the guard against posting twice.

The Accounting Entry

One Journal voucher, dated the last day of the month, referenced PAYROLL-yyyy-MM, narrated "Salary for <Month yyyy>":

LedgerGroupAmount
DrSalary ExpenseIndirect ExpensesTotal gross
DrEmployer PF ExpenseIndirect ExpensesEmployer PF
DrEmployer ESI ExpenseIndirect ExpensesEmployer ESI
CrPF PayableDuties & TaxesEmployee + employer PF
CrESI PayableDuties & TaxesEmployee + employer ESI
CrTDS on Salary Payable (192)Duties & TaxesTotal TDS
CrSalary PayableCurrent LiabilitiesTotal net

Any of these ledgers that don't exist yet are created automatically under the groups shown. It's an ordinary Journal voucher — visible in the Day Book, and it appears in your P&L as salary cost with the employer contributions correctly shown as additional expense rather than hidden inside gross.

Step 6 — Pay the Salaries and the Statutory Dues

Posting the salary voucher records what you owe. It does not pay anybody. Four liabilities are now sitting in your books, and you clear each with a normal Payment voucher when you actually pay it:

  1. Salary Payable → Dr Salary Payable, Cr Bank, when salaries go out.
  2. PF Payable → Dr PF Payable, Cr Bank, on the EPFO challan.
  3. ESI Payable → Dr ESI Payable, Cr Bank, on the ESIC challan.
  4. TDS on Salary Payable (192) → Dr TDS on Salary Payable, Cr Bank, on the TDS challan.

Those four ledgers are a useful health check in themselves. If a balance is still sitting there after the due date has passed, something hasn't been paid.

Undo a Month

Spotted a wrong salary after posting? Click Undo Month. It deletes that month's salary voucher and clears the run record, so the month can be posted again from a corrected preview.

The normal correction sequence is: Undo Month → fix the employee's structure → Save → Preview → Post again.

Undo before you pay, not after
Undo removes the accrual voucher. If you've already posted payments against Salary Payable, those payment vouchers stay behind and will be left pointing at an accrual that no longer exists. Undo first, re-post, then pay — or reverse the payments too.

Joiners and Leavers

The month picker doesn't pro-rate — the run takes each active employee's full monthly structure. So:

  • Someone joins mid-month? Add them, then reduce their components for that first month only, post, and restore the full figures afterwards.
  • Someone leaves? Deactivate them rather than deleting. They drop out of future runs while their history and past vouchers stay intact. Inactive employees show greyed out in the grid.
  • Deactivated by mistake? Select them and the button reads Activate.

Messages Explained

MessageMeaning
"No active employees — add them first."Nothing to run. Add employees, or reactivate someone.
"An employee named '…' already exists"Names must be unique. Add an initial or an employee code to distinguish two people with the same name.
"Salary components cannot be negative"One of the amount fields is below zero.
"Employee name required."The Name field is empty.
"Salary for … is already posted (voucher …). Undo it first to re-run."The double-post guard. Use Undo Month.
"Manual Entry — Licence Feature"Your edition doesn't allow manual posting. Ask the AI assistant to run payroll instead.

Tips & Best Practice

  1. Split the package deliberately. Basic drives PF and gross drives ESI, so the split changes both your cost and the employee's take-home. Decide it once, when you set them up.
  2. Watch the ₹21,000 ESI cliff. A small raise across it removes ESI cover entirely — worth knowing before you promise it.
  3. Review TDS twice a year. It's a flat figure you set. Revisit it mid-year and again before the last quarter so you're not left with a large deduction in March.
  4. Preview every month, even when nothing changed. Ten seconds against a wrong month in your books.
  5. Post on the last day of the month — that's the date the voucher takes, and it keeps the accrual in the right period.
  6. Clear the four payables promptly. A lingering balance means a missed challan.
  7. Deactivate, never delete. Keeps the history clean for audit.
  8. Reconcile at year end. Total salary expense across twelve vouchers should tie to your salary register; the payable balances should be nil or equal to genuinely unpaid dues. See Year-End Final Entries.

What's Next?

Try iAccounting for 15 days

Run your payroll, file your GST, and close your year in one tool.