Personal Finance for India Module 2 – Your first salary: offer, payslip and benefits
EPF, EPS and VPF: your provident fund
Where the 24 % of PF wages goes, who must join, how EPF interest is worked out, what EPS pays, and how VPF, interest and withdrawals are taxed.
What you will learn
- Split a month's PF contributions between EPF, EPS and the employer's charges
- Decide whether EPF and EPS membership is required at a given wage
- Calculate a year's EPF interest on a monthly running balance
- Calculate an EPS pension, or the withdrawal benefit for leaving early
- Apply the tax rules on PF contributions, interest, VPF and withdrawals
Before you start
What you’ll learn · Before you start
What you will learn
- Split a month's PF contributions between EPF, EPS and the employer's charges
- Decide whether EPF and EPS membership is required at a given wage
- Calculate a year's EPF interest on a monthly running balance
- Calculate an EPS pension, or the withdrawal benefit for leaving early
- Apply the tax rules on PF contributions, interest, VPF and withdrawals
Before you start
On this page
Asha’s payslip takes ₹3,000 a month for her PF, and her employer adds ₹3,000 more. Of that ₹6,000, only ₹3,917 reaches her savings account at EPFO, and by 58, if the rate stayed at 8.25 %, it could grow to ₹96,70,057, more than four fifths of it interest.
Below you will follow the 24 % of PF wages to the three places it goes, see who must join and on what pay, work out interest the way EPFO does, compute the pension that EPS pays and what it returns to someone who leaves early, and apply the tax rules to contributions, interest, VPF and withdrawals. This lesson is education only. It sets out how the schemes work and what their rules pay or cost, and leaves every choice about your own savings to you.
Your 24 per cent goes to three places
Each month you pay 12 % of your PF wages, and your employer pays 12 % too, as EPFO’s guidance on the wage ceiling: The monthly PF wages, ₹25,000, up to which EPF, EPS and EDLI membership is required. Contributions on wages above it may be worked out on the ceiling instead. sets out. Your whole share goes into your Employees' Provident Fund (EPF): The savings account EPFO keeps for each member: 12 % of PF wages from the employee and the part of the employer's 12 % that does not go to the pension scheme, with interest declared for each year. account. Your employer’s share is split: 8.33 % of your wages, counted only up to ₹25,000 and rounded to the rupee, goes to the Employees' Pension Scheme (EPS): EPFO's pension scheme, funded by 8.33 % of PF wages up to the ceiling out of the employer's contribution. It pays a monthly pension from 58 to members with at least 10 years of service., and the rest joins your EPF account. On top of the 12 %, the employer pays 0.5 % of wages for Employees' Deposit Linked Insurance (EDLI): EPFO's life cover for members, paid for by the employer at 0.5 % of wages. It pays the family up to ₹7 lakh if the member dies while still in service. More in “Gratuity, group insurance and other benefits”, the life cover of members, and 0.5 % of administration charges. Step through one month at Asha’s wages of ₹25,000:
The drawing shows the whole scene; its 5 steps are listed below.
Every step as text
- Your share. You pay 12 % of your PF wages. At ₹25,000 that is ₹3,000, deducted from your pay, and all of it goes to your EPF account.
- The pension share. Your employer pays 12 % too. Out of it, 8.33 % of your wages, counted only up to the ₹25,000 ceiling, goes to the pension scheme. At ₹25,000 that is ₹2,083, rounded to the rupee.
- The rest to EPF. The rest of the employer's 12 %, ₹917, joins your ₹3,000 in your EPF account. So ₹3,917 a month earns interest in your name.
- The charges. The employer also pays 0.5 % of wages for EDLI, the life cover of members, and 0.5 % of administration charges, ₹250 in all. None of it is credited to you.
- The month in all. Your employer spends ₹3,250 on this month's PF, and you ₹3,000. Of the ₹6,250, ₹3,917 builds your savings, ₹2,083 your pension and ₹250 pays for cover and running costs.
The program works out the same split at five PF wages: four rows of EPFO’s own table, and a member in EPS whose wages have passed the ceiling:
"""Where one month's PF contributions go, at five PF wages, as EPFO's wage-ceiling FAQs work them out.
You pay 12 % of your PF wages; your employer pays 12 % too, of which 8.33 % of the wages (counted only up to the
Rs 25,000 ceiling, rounded to the rupee) goes to the pension scheme (EPS) and the rest to your EPF account. Above the
ceiling, contributions may be restricted to it. A member who joined with wages above the ceiling is not in EPS, so the
employer's whole 12 % goes to EPF. The employer also pays 0.5 % for EDLI insurance and 0.5 % of administration charges,
which are not credited to you. The five rows are invented members.
"""
from decimal import ROUND_HALF_UP, Decimal
D = Decimal
CEILING = D(25000)
def inr(amount):
value = D(amount).quantize(D("1"), rounding=ROUND_HALF_UP)
digits = str(abs(value))
head, tail = digits[:-3], digits[-3:]
groups = []
while len(head) > 2:
groups.insert(0, head[-2:])
head = head[:-2]
if head:
groups.insert(0, head)
return "₹" + (",".join(groups + [tail]) if groups else tail)
def rupees(x):
return x.quantize(D("1"), rounding=ROUND_HALF_UP)
def month(pf_wages, in_eps=True):
wages = min(D(pf_wages), CEILING) # contributions restricted to the ceiling
yours = rupees(wages * D("0.12"))
employer = rupees(wages * D("0.12"))
eps = rupees(wages * D("0.0833")) if in_eps else D(0)
charges = rupees(wages * D("0.005")) * 2 # EDLI and administration, 0.5 % each
return yours, eps, employer - eps, charges
ROWS = [("₹10,000", 10000, True), ("₹20,000", 20000, True), ("₹25,000", 25000, True), ("₹35,000, in EPS", 35000, True), ("₹35,000, no EPS", 35000, False)]
print(f"{'PF wages':<17}{'Yours':>7}{'EPS':>8}{'Employer':>10}{'Into EPF':>10}{'Charges':>9}")
for label, wages, in_eps in ROWS:
yours, eps, employer_epf, charges = month(wages, in_eps)
print(f"{label:<17}{inr(yours):>7}{inr(eps):>8}{inr(employer_epf):>10}{inr(yours + employer_epf):>10}{inr(charges):>9}")
print()
print("Employer: the part of the employer's 12 % that goes to EPF.")
print("Into EPF: what your EPF account receives, your share plus that part.")
print("Charges: EDLI and administration, paid by the employer, never yours.")
yours, eps, employer_epf, charges = month(25000)
print(f"At ₹25,000 the employer pays {inr(yours + charges)} a month in all: {inr(eps)} buys")
print(f"pension, {inr(employer_epf)} joins your {inr(yours)} in EPF, {inr(charges)} pays charges.") Output
PF wages Yours EPS Employer Into EPF Charges ₹10,000 ₹1,200 ₹833 ₹367 ₹1,567 ₹100 ₹20,000 ₹2,400 ₹1,666 ₹734 ₹3,134 ₹200 ₹25,000 ₹3,000 ₹2,083 ₹917 ₹3,917 ₹250 ₹35,000, in EPS ₹3,000 ₹2,083 ₹917 ₹3,917 ₹250 ₹35,000, no EPS ₹3,000 ₹0 ₹3,000 ₹6,000 ₹250 Employer: the part of the employer's 12 % that goes to EPF. Into EPF: what your EPF account receives, your share plus that part. Charges: EDLI and administration, paid by the employer, never yours. At ₹25,000 the employer pays ₹3,250 a month in all: ₹2,083 buys pension, ₹917 joins your ₹3,000 in EPF, ₹250 pays charges.
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 epf_split.py
Two things stand out. The pension share stops growing at the ceiling: at ₹35,000, contributions restricted to the ceiling put the same ₹3,917 into EPF as at ₹25,000. And the last row shows a member who is not in EPS at all, whose employer’s whole 12 % goes to EPF, ₹6,000 a month into the account instead of ₹3,917.
Reading the passbook's EPF balance as all of your PF
Wrong: “₹6,000 goes in every month, so my balance should grow by ₹6,000”. Right: “₹3,917 goes to my EPF account and ₹2,083 to my pension”. The pension share never appears in the EPF balance; it buys a pension instead.
Checkpoint
Check: Where the 24 % of PF wages goes
The wage ceiling decides who must join, and on what pay
The ₹25,000 ceiling was raised from ₹15,000 by notification S.O. 5109(E) under the Code on Social Security, 2020, and it does two jobs. It decides who must join, and it caps the wages that contributions may be worked out on. Both apply in an establishment that the provident fund chapter covers, which the Code’s First Schedule sets at twenty or more employees. Step through four cases at joining:
The drawing shows the whole scene; its 5 steps are listed below.
Every step as text
- Within the ceiling. PF wages of ₹25,000 a month or less at joining make membership of EPF, EPS and EDLI a requirement in an establishment the scheme covers. Asha, at exactly ₹25,000, is in all three.
- Above it, first job. Someone new to EPF whose PF wages are above ₹25,000 is not required to join. EPFO's guidance says such an employee can choose to join EPF, with the employer's consent.
- Above it, already a member. A member from an earlier job stays a member in the next one, whatever the new wages. EPS membership, though, is open only to those whose wages were within the ceiling when they joined, so a member who never joined EPS gets the employer's whole 12 % in EPF.
- Wages rise later. A member whose wages rise past ₹25,000 stays in the schemes. Contributions above the ceiling may be restricted to it, ₹3,000 a month on each side, unless the employer and member contribute on higher wages under the scheme's rules.
- Which employers. All of this applies in an establishment that EPF covers. The Code on Social Security applies the provident fund chapter to establishments with twenty or more employees.
The cases come straight from EPFO’s guidance. PF wages of ₹25,000 or less make EPF, EPS and EDLI membership a requirement, as for Asha. Someone new to EPF above the ceiling is not required to join, and may join EPF with the employer’s consent. A member stays a member in every later job, and when wages rise past the ceiling, contributions may be restricted to it, ₹3,000 a month on each side, unless employer and member contribute on higher wages under the scheme’s rules.
The case that surprises people is EPS. Its membership is open only to employees whose wages were within the ceiling when they joined, so a first job that starts above ₹25,000 and is joined voluntarily brings EPF without EPS. In the month the ceiling rose, contributions were worked out at the old and the new ceiling for the days each applied.
PF wages are not your gross pay
The ceiling is compared with your PF wages, not with your gross pay. EPFO’s guidance gives the example of a gross pay of ₹50,000 with PF wages of ₹25,000: membership of all three schemes is required.
Checkpoint
Check: Who must join EPF and EPS
Interest is worked out monthly and added once a year
EPFO credits compound interest on the monthly running balance, at the rate declared for each year, and its guidance gives 8.25 % for FY 2025-26. In practice that means three things. Each month earns a twelfth of the year’s rate on the balance at the start of that month. A month’s contribution, credited at its end, earns from the next month. And the year’s interest is added only at the year’s end, so inside a year interest does not earn interest. The program works Asha’s first year month by month, then follows her balance to 58:
"""How EPF interest is worked out: a monthly running balance, interest credited once a year, then to age 58.
EPFO credits interest "on monthly running balance basis at the statutory rate declared for each year": each month
earns the year's rate / 12 on the balance at the start of that month, and the year's interest is added at its end.
A month's contribution is credited at the month's end, so it earns interest from the next month. Asha (invented)
joins at 22 at the start of a tax year, on PF wages of Rs 25,000 that never change, so Rs 3,917 reaches her EPF account
every month (her Rs 3,000 and the employer's Rs 917). 8.25 % is the rate declared for FY 2025-26; the later rates are
assumptions, because each year's rate is declared for that year only.
"""
from decimal import ROUND_HALF_UP, Decimal
D = Decimal
MONTHLY = D(3917)
def inr(amount, places="1"):
value = D(amount).quantize(D(places), rounding=ROUND_HALF_UP)
whole, _, paise = str(abs(value)).partition(".")
head, tail = whole[:-3], whole[-3:]
groups = []
while len(head) > 2:
groups.insert(0, head[-2:])
head = head[:-2]
if head:
groups.insert(0, head)
return "₹" + (",".join(groups + [tail]) if groups else tail) + ("." + paise if paise else "")
def grow(years, rate, show_first_year=False):
"""The balance after `years` years of Rs 3,917 a month, interest credited at each year's end."""
balance = D(0)
monthly_rate = D(rate) / 100 / 12
for year in range(years):
interest = D(0)
for month in range(1, 13):
earned = balance * monthly_rate # on the balance at the start of the month
interest += earned
balance += MONTHLY
if show_first_year and year == 0 and month in (1, 2, 3, 12):
print(f" Month {month:>2}: interest on {inr(balance - MONTHLY):>8} is {inr(earned, '0.01'):>9}; then {inr(MONTHLY)} is credited")
balance += interest
if show_first_year and year == 0:
print(f" Year's interest, added at its end: {inr(interest, '0.01')}; balance {inr(balance, '0.01')}")
return balance
print("Part 1: the first year at 8.25 %")
grow(1, "8.25", show_first_year=True)
print()
print("Part 2: Asha's EPF balance at each age, if 8.25 % held every year")
paid_a_year = 12 * MONTHLY
for age in (25, 30, 40, 50, 58):
years = age - 22
balance = grow(years, "8.25")
paid = paid_a_year * years
print(f" At {age}: {inr(balance):>11}, of which paid in {inr(paid):>10} and interest {inr(balance - paid):>11}")
print()
print("Part 3: the same 36 years at other assumed rates")
for rate in ("7.25", "8.25", "9.25"):
print(f" {rate} % every year: {inr(grow(36, rate)):>11}") Output
Part 1: the first year at 8.25 % Month 1: interest on ₹0 is ₹0.00; then ₹3,917 is credited Month 2: interest on ₹3,917 is ₹26.93; then ₹3,917 is credited Month 3: interest on ₹7,834 is ₹53.86; then ₹3,917 is credited Month 12: interest on ₹43,087 is ₹296.22; then ₹3,917 is credited Year's interest, added at its end: ₹1,777.34; balance ₹48,781.34 Part 2: Asha's EPF balance at each age, if 8.25 % held every year At 25: ₹1,58,749, of which paid in ₹1,41,012 and interest ₹17,737 At 30: ₹5,23,578, of which paid in ₹3,76,032 and interest ₹1,47,546 At 40: ₹18,71,925, of which paid in ₹8,46,072 and interest ₹10,25,853 At 50: ₹48,50,994, of which paid in ₹13,16,112 and interest ₹35,34,882 At 58: ₹96,70,057, of which paid in ₹16,92,144 and interest ₹79,77,913 Part 3: the same 36 years at other assumed rates 7.25 % every year: ₹76,53,440 8.25 % every year: ₹96,70,057 9.25 % every year: ₹1,22,69,946
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 epf_interest.py
Her first year earns ₹1,777.34, almost nothing beside the ₹47,004 paid in. The later rows tell a different story. At 58 her balance is ₹96,70,057, of which she and her employer paid in ₹16,92,144; the other ₹79,77,913, about 82.5 %, is interest. The last part shows why the assumption matters: a point less every year gives ₹76,53,440, a point more ₹1,22,69,946.
Key idea
EPF interest is a twelfth of the year’s rate on each month’s opening balance, added at the year’s end; over 36 years that slow arithmetic makes interest most of the balance, so the rate assumed for future years decides most of any projection.
Checkpoint
Check: How EPF interest is worked out
EPS pays a pension from 58, or about what went in if you leave early
The pension share builds a pension, not a balance. EPS works it out with one formula: pensionable salary, the average pay of the last 60 months counted up to the ceiling, times pensionable service, divided by 70. A pension needs at least 10 years of eligible service; a member who reaches 58 with 20 years or more gets 2 years of weightage added; the pension can start early, from 50, cut by 4 % for every year short of 58; and the scheme sets a floor of ₹1,000 a month for a member entitled to a pension. Step through what EPS gives at each length of service:
The drawing shows the whole scene; its 5 steps are listed below.
Every step as text
- Out before 10 years. A member who leaves covered work with less than 10 years of eligible service cannot draw a pension. EPS gives a withdrawal benefit instead, Table D's proportion times the wages at exit. After three years at ₹25,000 that is 2.98 × ₹25,000 = ₹74,500.
- Moving jobs. A member who moves to another covered job keeps the service. Transferring the account carries the service history on, and a scheme certificate records it, so years in two jobs add up towards the 10.
- Ten years, then out. With 10 years or more, the member earns a pension even after leaving early. Ten years at ₹25,000 give 25,000 × 10 ÷ 70 = ₹3,571.43 a month from 58, or a smaller pension from as early as 50, cut by 4 % for every year short of 58.
- To 58. Asha, working from 22 to 58, has 36 years of service, and 2 years of weightage for 20 years or more at 58. Her pension is 25,000 × 38 ÷ 70 = ₹13,571.43 a month, if her wages and the rules stay as they are.
- The floor. Whatever the formula gives, EPS sets a minimum monthly pension of ₹1,000 for a member entitled to one, reduced for those who draw it early.
The program works out Asha’s pension and the withdrawal benefit of a short stay:
"""Asha's EPS pension at 58, what the old ceiling would have given, and what leaving early returns.
EPS rules as EPFO publishes them: monthly pension = pensionable salary x pensionable service / 70, where pensionable
salary is the average pay of the last 60 months, counted up to the wage ceiling; at least 10 years of eligible service
are needed for a pension; a member who reaches 58 with 20 years or more gets 2 extra years of service (weightage); a
member who leaves before 10 years gets a withdrawal benefit of Table D's proportion times the wages at exit. Asha is
invented; she is assumed to earn PF wages of Rs 25,000 from 22 to 58, and the rules are assumed to stay as they are.
"""
from decimal import ROUND_HALF_UP, Decimal
D = Decimal
def inr(amount, places="1"):
value = D(amount).quantize(D(places), rounding=ROUND_HALF_UP)
whole, _, paise = str(abs(value)).partition(".")
head, tail = whole[:-3], whole[-3:]
groups = []
while len(head) > 2:
groups.insert(0, head[-2:])
head = head[:-2]
if head:
groups.insert(0, head)
return "₹" + (",".join(groups + [tail]) if groups else tail) + ("." + paise if paise else "")
def pension(salary, years, retires_at_58=True):
if years < 10:
return D(0)
weightage = 2 if retires_at_58 and years >= 20 else 0
return D(salary) * (years + weightage) / 70
print("Part 1: the pension at 58")
for ceiling in (25000, 15000):
p = pension(ceiling, 36)
print(f" Pensionable salary {inr(ceiling)}, 36 years + 2 of weightage: {inr(p, '0.01')} a month")
print(f" Ten years of service, then leaving the scheme: {inr(pension(25000, 10, False), '0.01')} a month from 58")
print()
print("Part 2: leaving the scheme before the 10 years a pension needs")
TABLE_D = {12: D("1.02"), 24: D("1.99"), 36: D("2.98"), 48: D("3.99"), 60: D("5.02")} # part of Table D
eps_a_month = (D(25000) * D("0.0833")).quantize(D("1"), rounding=ROUND_HALF_UP)
for months in (12, 36, 60):
benefit = TABLE_D[months] * 25000
paid = eps_a_month * months
print(f" {months} months: withdrawal benefit {TABLE_D[months]} × ₹25,000 = {inr(benefit):>9}; paid in {inr(paid):>9}")
print(" The benefit is about what went into EPS, with no interest on it.") Output
Part 1: the pension at 58 Pensionable salary ₹25,000, 36 years + 2 of weightage: ₹13,571.43 a month Pensionable salary ₹15,000, 36 years + 2 of weightage: ₹8,142.86 a month Ten years of service, then leaving the scheme: ₹3,571.43 a month from 58 Part 2: leaving the scheme before the 10 years a pension needs 12 months: withdrawal benefit 1.02 × ₹25,000 = ₹25,500; paid in ₹24,996 36 months: withdrawal benefit 2.98 × ₹25,000 = ₹74,500; paid in ₹74,988 60 months: withdrawal benefit 5.02 × ₹25,000 = ₹1,25,500; paid in ₹1,24,980 The benefit is about what went into EPS, with no interest on it.
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 eps_pension.py
If her wages and the rules stay as they are, 36 years to 58 give her ₹13,571.43 a month, against ₹8,142.86 at the old ₹15,000 ceiling. A member who leaves covered work before 10 years gets the withdrawal benefit of Table D, which for 36 months is 2.98 × ₹25,000 = ₹74,500 against ₹74,988 paid in: about what went in, with no interest on it. A member who simply changes jobs has no need of the withdrawal benefit. Transferring the account carries the service history on, and a scheme certificate can record it, so short stays in several covered jobs add up towards the 10 years.
EPS Pension Calculator (India, EPS-95) Work out an EPS pension from your dates of service and pay, at 58 or from 50.Checkpoint
Check: What EPS pays, and when
VPF, and the tax on contributions, interest and withdrawals
A member may pay more than the required 12 % into the same account, as a voluntary provident fund (VPF): Contributions an employee chooses to make to EPF above the required 12 %. They earn the same interest as the rest of the balance, and the employer need not match them. contribution. It earns the same interest, and EPFO’s FAQs add that the employer may keep its own share at the statutory rate, so a voluntary contribution is your saving alone. The tax rules of the Income-tax Act, 2025 then treat PF money at four moments:
| Moment | The rule | Where it is |
|---|---|---|
| Your contribution | Counts within the ₹1,50,000 deduction of the old regime only | Section 123, Schedule XV |
| The employer’s contribution | Taxed as a perquisite above ₹7,50,000 a year, with NPS and superannuation | Section 17(1)(h) |
| Interest | Tax-free, except on the part of your own contributions above ₹2,50,000 in a year | Schedule II, Sl. No. 4 |
| A withdrawal on leaving | Excluded from income after five years of continuous service; earlier, taxed, with 10 % TDS on ₹50,000 or more | Schedule XI, para 8; section 392(7) |
The program applies two of them to Asha:
"""Two PF tax rules worked through for Asha: the Rs 2.5 lakh line for your own contributions, and an early withdrawal.
Income-tax Act, 2025: interest is taxable on the part of an employee's own contributions in a year above Rs 2,50,000
(Schedule II, Sl. No. 4); a withdrawal after less than five years of continuous service is not excluded from income
(Schedule XI, Part A, paragraph 8), and EPFO deducts 10 % of it as TDS when it is Rs 50,000 or more (section 392(7)).
Asha is invented: PF wages of Rs 25,000, Rs 3,917 a month into EPF, 8.25 % a year assumed, interest credited yearly.
"""
from decimal import ROUND_HALF_UP, Decimal
D = Decimal
def inr(amount, places="1"):
value = D(amount).quantize(D(places), rounding=ROUND_HALF_UP)
whole, _, paise = str(abs(value)).partition(".")
head, tail = whole[:-3], whole[-3:]
groups = []
while len(head) > 2:
groups.insert(0, head[-2:])
head = head[:-2]
if head:
groups.insert(0, head)
return "₹" + (",".join(groups + [tail]) if groups else tail) + ("." + paise if paise else "")
BASIC = D(25000)
LIMIT = D(250000)
print("Part 1: her own contributions in a year against the ₹2,50,000 line")
for vpf in (0, 10, 50, 100):
own = 12 * BASIC * (D(12) + vpf) / 100
over = max(D(0), own - LIMIT)
print(f" 12 % + VPF of {vpf:>3} % of basic: {inr(own):>9} a year; above the line: {inr(over):>8}")
share = LIMIT / (12 * BASIC) * 100 - 12
print(f" The line is passed only with a VPF above {share.quantize(D('0.1'))} % of her basic pay.")
print()
print("Part 2: three years of service, then the balance is withdrawn instead of transferred")
balance, rate = D(0), D("0.0825") / 12
for year in range(3):
interest = D(0)
for month in range(12):
interest += balance * rate
balance += 3917
balance += interest
print(f" Balance after three years: {inr(balance)}")
print(f" Five years of continuous service not reached, and {inr(balance)} ≥ ₹50,000:")
print(f" 10 % TDS of {inr(balance / 10)} comes off first, and the withdrawal is taxed")
print(" as though the fund had never been recognised.")
print(" Transferred to a new employer's account, the same money is not taxed,")
print(" and the three years count towards the five.") Output
Part 1: her own contributions in a year against the ₹2,50,000 line 12 % + VPF of 0 % of basic: ₹36,000 a year; above the line: ₹0 12 % + VPF of 10 % of basic: ₹66,000 a year; above the line: ₹0 12 % + VPF of 50 % of basic: ₹1,86,000 a year; above the line: ₹0 12 % + VPF of 100 % of basic: ₹3,36,000 a year; above the line: ₹86,000 The line is passed only with a VPF above 71.3 % of her basic pay. Part 2: three years of service, then the balance is withdrawn instead of transferred Balance after three years: ₹1,58,749 Five years of continuous service not reached, and ₹1,58,749 ≥ ₹50,000: 10 % TDS of ₹15,875 comes off first, and the withdrawal is taxed as though the fund had never been recognised. Transferred to a new employer's account, the same money is not taxed, and the three years count towards the five.
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 pf_tax.py
The ₹2,50,000 line is far away on a first salary: her own 12 % is ₹36,000 a year, and only a voluntary contribution above 71.3 % of her basic pay would cross it. The five-year rule is close. Withdrawn after three years, her ₹1,58,749 loses ₹15,875 to TDS at once and is taxed as though the fund had never been recognised. Transferred to a new employer’s account instead, the same money is not taxed, and the three years count towards the five, because paragraph 8 counts the service of an earlier employer whose balance moved with you.
Treating a job change as a reason to withdraw
Wrong: “I changed jobs, so my PF has to be taken out”. Right: “EPFO’s guidance is to transfer the account to the new employer”. A withdrawal before five years is taxed and starts the count again; a transfer keeps the money and the years.
Checkpoint
Check: VPF and the tax rules of PF
Practise: follow your own PF
Questions on the split, membership, interest, the pension and tax, one at a time, beginning with the idea you have answered least well:
Practice that adapts to you
Practise this lesson
16 questions about 5 ideas of this lesson. Each answer is explained at once, and what you get right is kept in this browser.
Read your own passbook
Open your EPFO passbook and take one wage month. Check that the employee share is 12 % of your PF wages, that the employer’s share and the pension contribution add up to the same 12 %, and find the last interest credit and the year it belongs to.
Interview questions
Warm-up (fresher): How is the employer’s 12 % PF contribution divided?
The employer’s 12 % of PF wages is split between two schemes. 8.33 % of the wages, counted only up to the ₹25,000 ceiling and rounded to the rupee, goes to the Employees’ Pension Scheme, and the rest goes to the member’s EPF account. At wages of ₹25,000 that is ₹2,083 to EPS and ₹917 to EPF, so ₹3,917 a month reaches the EPF account with the member’s own ₹3,000. On top of the 12 %, the employer pays 0.5 % for EDLI life cover and 0.5 % of administration charges, which are never credited to the member. A member who is not in EPS, because their wages were above the ceiling when they joined, gets the employer’s whole 12 % in EPF.
Warm-up (fresher): Why is it usually better for the tax to transfer PF than to withdraw it when changing jobs?
Because a withdrawal before five years of continuous service is not excluded from income. It is taxed as though the fund had never been recognised, and EPFO deducts 10 % as TDS when the amount is ₹50,000 or more. A transfer to the new employer’s account is not a withdrawal at all, and the Income-tax Act counts the earlier employer’s service when the balance moved with the member, so the years keep adding up towards the five. Asha’s ₹1,58,749 after three years would lose ₹15,875 to TDS on a withdrawal; transferred, it keeps earning interest and keeps her three years.
Key takeaways
- Of the 24 % of PF wages, your 12 % and the employer’s 3.67 % go to EPF, 8.33 % of wages up to ₹25,000 goes to EPS, and the employer’s EDLI and administration charges are never yours.
- PF wages of ₹25,000 or less at joining make EPF, EPS and EDLI membership a requirement; above it, a newcomer joins EPF only by choice, and EPS only takes those within the ceiling at joining.
- EPF interest is a twelfth of the year’s declared rate on each month’s opening balance, added at the year’s end; over a career it becomes most of the balance.
- EPS pays salary × service ÷ 70 from 58 after at least 10 years, and gives about what went in, without interest, to someone who leaves covered work before 10 years.
- Contributions count in the old regime’s deduction, interest is tax-free below ₹2,50,000 of your own contributions a year, and a withdrawal before five years of service is taxed, so a transfer keeps both the money and the years.
Terms in this lesson
- Employees' Pension Scheme (EPS)
- EPFO's pension scheme, funded by 8.33 % of PF wages up to the ceiling out of the employer's contribution. It pays a monthly pension from 58 to members with at least 10 years of service.
- Employees' Provident Fund (EPF)
- The savings account EPFO keeps for each member: 12 % of PF wages from the employee and the part of the employer's 12 % that does not go to the pension scheme, with interest declared for each year.
- voluntary provident fund (VPF)
- Contributions an employee chooses to make to EPF above the required 12 %. They earn the same interest as the rest of the balance, and the employer need not match them.
- wage ceiling
- The monthly PF wages, ₹25,000, up to which EPF, EPS and EDLI membership is required. Contributions on wages above it may be worked out on the ceiling instead.
References
- Revision of the EPFO statutory wage ceiling: frequently asked questions (Employees' Provident Fund Organisation)
- Notification S.O. 5109(E): wage ceiling of ₹25,000 a month (Ministry of Labour and Employment)
- EPFO FAQs for members (voluntary contribution, interest, transfer, EDLI) (Employees' Provident Fund Organisation)
- Employees' Pension Scheme: the scheme's rules (Employees' Provident Fund Organisation)
- Employees' Pension Scheme (EPS): pension, eligibility and membership (Employees' Provident Fund Organisation)
- The Code on Social Security, 2020 (section 2(26) and the First Schedule) (Legislative Department, Ministry of Law and Justice)
- The Income-tax Act, 2025 (section 17, section 123, section 392(7), Schedules II, XI and XV) (Legislative Department, Ministry of Law and Justice)
Related tools
Report a problem with this lesson
Kept only in this browser. Your Learn progress