How Booksmor computes per-employee monthly TDS using FY 2026-27 slabs, tracks statutory dues (PF/ESI/PT/TDS), and generates the three government filings every employer needs: ECR (PF), 24Q (TDS), and Form 16.
Time to read: ~15 minutes. You’ll need: the Payroll add-on active, employees with statutory IDs filled in (UAN, PAN, ESI number).
Where to find the screens
- Payroll → Tax (TDS) — per-employee tax declarations + new/old regime side-by-side projection.
- Payroll → Statutory — outstanding PF/ESI/PT/TDS dues + discharge.
- Payroll → Filings — generate ECR, 24Q, Form 16 downloads.
Part A — Tax (TDS) — monthly income tax on salary
Per-employee tax declarations
Each employee tells you their tax-relevant facts once a year:
- Payroll → Tax (TDS) → pick the employee from the left panel.
- Fill in the Tax declaration form:
- FY — Booksmor defaults to the current Indian FY (April–March).
- Rent paid annual ₹ — HRA exemption depends on this.
- Metro city — tick for Delhi/Mumbai/Kolkata/Chennai (50% HRA cap); else 40%.
- Section 80C ₹ — investments (LIC, PPF, ELSS, etc.) up to ₹1.5L.
- Section 80D ₹ — health insurance, up to ₹75K aggregate.
- Section 80CCD(1B) ₹ — additional NPS, up to ₹50K.
- Home loan interest ₹ — Section 24(b), up to ₹2L.
- Other exemptions ₹ — anything else (e.g. LTA).
- Notes — free text for context.
- Click Save.
The declaration persists for that FY. Update mid-year if anything changes (e.g. employee bought a house, declared new investments).
Tax regime — new vs old
Each employee carries a Tax regime field (on their Employee record): new (default for FY 2026-27) or old.
- New regime: lower slabs, no deductions allowed (HRA, 80C, etc. don’t reduce taxable income).
- Old regime: higher slabs but you can claim all the deductions in the declaration.
Booksmor’s tax engine runs both regimes side-by-side in the projection (right panel of the Tax page). The employee can see which regime is cheaper based on their actual numbers and pick accordingly. To switch, update the Tax regime on the employee record.
How TDS gets computed each month
For the current pay run, Booksmor’s tax engine:
- Annual gross projection = YTD-actual + (current month × months remaining in FY)
- Apply HRA exemption (min of three for metro/non-metro under 10(13A))
- Apply deductions per the declaration (only under old regime)
- Tax on slab for the regime (FY 2026-27 slabs)
- Apply 87A rebate caps (new ≤ ₹7L → 0; old ≤ ₹5L → 0)
- Add 4% cess
- Divide by months remaining for monthly TDS
The result is auto-injected into the TDS line of every payslip — only if a declaration exists for the employee for the current FY.
If no declaration exists, the TDS line uses whatever value is in the salary structure (manual TDS).
Side-by-side projection
The right panel of the Tax page shows the annual projection under both regimes:
| Old regime | New regime | |
|---|---|---|
| Annual gross | ₹X | ₹X |
| HRA exemption | ₹Y | (nil) |
| Deductions | ₹Z | (nil) |
| Taxable income | ₹A | ₹A’ |
| Tax on slab | ₹B | ₹B’ |
| 87A rebate | ₹C | ₹C’ |
| Cess (4%) | ₹D | ₹D’ |
| Net annual tax | ₹E | ₹E’ |
| Monthly TDS | ₹F | ₹F’ |
Share this with the employee so they can pick the cheaper regime for the year.
Skipped scenarios (rare in SMB; flagged for follow-up if you need them):
- Surcharge slab (>₹50L incomes).
- Per-perquisite valuation (car allowance, employer-provided housing).
- Itemised 80E (education loan interest), 80G (donations).
If your business has high-CTC employees affected by these, contact us — the engine extension is straightforward.
Part B — Statutory — track PF/ESI/PT/TDS dues
After every posted pay run, the deductions sit as credits on per-component payable accounts:
- PF Payable — your contribution + employees’.
- ESI Payable — your contribution + employees’.
- PT Payable — professional tax.
- TDS Payable — income tax deducted.
Statutory dashboard
Payroll → Statutory shows the outstanding balance on each statutory account: total credits (from pay runs) minus total debits (from discharge payments).
Each row has the account name, outstanding amount, and a Pay input pre-filled with the outstanding balance.
Discharging dues to the government
When you actually pay PF / ESI / PT / TDS to the government:
- Payroll → Statutory → tick the rows you’re paying (often all at once on the 15th / 20th of the month).
- Adjust the Pay amount per row if you’re paying less than the outstanding (rare).
- Pick the bank account the money’s leaving from.
- Click Pay statutory.
Booksmor posts one journal voucher discharging all selected payables: Dr [each payable] / Cr [Bank account] for the chosen amounts.
Outstanding balances refresh — each row’s outstanding drops by the amount paid.
Adjusted: some statutory payments are made via challan (PF via ECR, TDS via challan), and the actual transfer happens externally. Booksmor’s discharge voucher records the financial side; the government-portal upload is separate.
Part C — Filings (ECR, 24Q, Form 16)
These three generate the files / PDFs you upload to government portals.
ECR (PF) — monthly EPFO upload
The ECR (Electronic Challan-cum-Return) is the monthly PF return — one row per employee with their UAN + EPF/EPS/EDLI wages.
- Payroll → Filings → ECR tab.
- Pick the period.
- Click Preview — shows the per-employee table with any warnings (missing UAN, etc.).
- Click Generate file — downloads the EPFO upload text file.
The file follows the EPFO upload format. Upload it to the EPFO portal directly, or hand it to your CA.
Per-employee row includes:
- UAN, name, gross wages.
- EPF wages capped at ₹15,000 (since Aug-2014 cap, unless your employee is grandfathered uncapped).
- EPS wages capped at ₹15,000 (employer’s 8.33% share).
- EDLI wages (employees’ deposit-linked insurance, same cap).
- Employee 12% deduction.
- Employer EPS 8.33% (max ₹1,250).
- Employer EPF remainder (12% − EPS share).
- NCP days (non-contributory periods, from attendance).
- Refund of advances (0 unless you’ve manually tracked one).
Employees without a UAN are excluded from the file but flagged in the JSON preview so you can fix them before filing.
24Q (TDS) — quarterly RPU CSV
The 24Q is the quarterly TDS-on-salary return. Booksmor generates a CSV ready to import into NSDL’s RPU (Return Preparation Utility).
- Payroll → Filings → 24Q tab.
- Pick the quarter (Q1/Q2/Q3/Q4 + FY).
- Click Preview — per-employee aggregation for the quarter. Q4 correctly handles the calendar-year crossing.
- Click Generate CSV — downloads the file.
Columns mirror RPU’s Annexure I (salary detail). Invalid PAN (wrong format) is flagged inline before generation.
Import the CSV into RPU, generate the .fvu file, and upload to TIN-NSDL. Bring back the ARN to mark filed (planned enhancement: store ARN per filing).
Form 16 Part B — annual employee PDF
After the FY ends and 24Q is filed, you generate Form 16 Part B for each employee — the salary detail PDF they need for filing their own income tax return.
- Payroll → Filings → Form 16 tab.
- Pick the FY.
- For each employee, click Generate Part B PDF.
The PDF includes:
- Employer + employee header.
- Gross salary breakup.
- Exemptions + deductions applied.
- Tax computation per applicable regime.
- TDS deducted vs balance due.
- Footer reminder that Part A (the digitally-signed TDS summary) comes from TRACES after 24Q is filed and processed.
Booksmor generates Part B only. Part A is downloaded from the TRACES portal once your 24Q is processed by the IT Department.
Form 16 reads from posted/paid pay runs only — not draft. Returns 404 if nothing has posted for the FY.
Common questions
My employee just bought a house mid-year. How do I update? Payroll → Tax (TDS) → pick the employee → update Home loan interest in the declaration → Save. The next pay run’s TDS reflects the new deduction; YTD-actual stays correct.
Why is one employee’s TDS spiking in March? Annual TDS computation projects forward. If an employee’s deductions were lower than projected for earlier months, the catch-up happens in the last few months. To smooth, ensure declarations are entered correctly at the start of the year.
ECR shows fewer employees than my roster. Employees without UAN are excluded. Add UAN on their Employee record. Also, employees who joined mid-month with zero PF wages may be excluded by EPFO rules — check their NCP days.
Form 16 generation fails with “no posted runs for FY”. You haven’t posted any pay runs in the FY yet. Form 16 reads only from posted/paid runs. Post the relevant runs first.
Statutory dashboard shows ₹0 outstanding for PF but I haven’t paid yet. Either (1) no pay runs are posted for the period, or (2) your COA’s PF Payable account is missing (lazy-created on first post). Re-bootstrap from Masters → Chart of Accounts → Load standard COA (idempotent).
Can I file 24Q quarterly without filing Form 16 annually? Yes — they’re separate filings. 24Q is mandatory quarterly; Form 16 is an annual employee document that you issue based on 24Q data.
My CA does the filings — what do I hand over?
- For ECR: the generated text file (monthly).
- For 24Q: the generated CSV (quarterly).
- For Form 16: the generated PDFs (annually, after 24Q is processed).
Plus the Statutory dashboard screenshot showing what you’ve paid.
Does Booksmor handle TDS on non-salary payments (e.g. 1% u/s 194C to contractors)? That’s recorded in the GST → TDS / TCS register (Booksmor’s GST page has a small ledger for non-payroll TDS/TCS). Salary TDS lives in the Payroll module.
Troubleshooting
TDS engine returns 0 for an employee. Either no declaration exists for the FY, the projected annual gross is below the rebate threshold (new regime ≤ ₹7L, old ≤ ₹5L → tax = 0), or the regime in the declaration doesn’t match the employee’s regime field.
ECR upload to EPFO portal rejects the file. EPFO sometimes updates the file format silently. If Booksmor’s ECR generation lags an EPFO format update, contact support — we fix these within a release. In the meantime, your CA can hand-edit the file.
24Q RPU import shows PAN errors. PAN format is 10 alphanumeric (4 letters + 5 digits + 1 letter). Booksmor flags invalid PANs in the preview. Fix on the Employee record (PAN field), regenerate.
Form 16 PDF totals don’t match what TRACES later shows. Booksmor’s Form 16 uses your books (posted payslips). TRACES uses what’s been deposited via challan. Mismatches usually mean a delayed challan deposit — reconcile with your CA.
Need more help? Email support@booksmor.com with the period, the filing type, and any error message you see.