Kosh
← Back to Kosh

The rules are the government's, not ours

Kosh enforces 61 reasons an EPF claim can be rejected. Each one is written from a published EPFO circular or scheme provision. This page is where you check our work.

The catalogue specifies 80 reasons and 20 of them are not enforced. That gap is the honest part of this page, and it is listed rule by rule further down rather than summarised. The number above is counted from the rule bundle the engine actually loads, at build time. It is not typed into this sentence, and a check in CI fails the build if the two ever disagree.

If EPFO publishes an official machine-readable version of these rules tomorrow, we will delete ours and consume theirs. That is the goal, not a concession.

How a rule is written

Rules are data, not code, so a policy change is an edit and a reviewed diff rather than a deployment. Every rule must carry five things or it does not load: a source document, a clause reference, a URL, a verbatim quote of the clause, and the date we read it. It must also ship with one passing and one failing test.

FieldWhy it's mandatory
severityBlocking, will-delay, or advisory. Not everything that is wrong stops a claim.
ownerYou, your employer, the EPFO office, or your bank. Citizens waste weeks acting on things they cannot control.
depends_onThe fixes have an order. This is what lets us lock steps honestly.
statutory_daysDrives the countdown and the escalation.
citationNo citation, no rule. Uncitable rules are quarantined and published as gaps.

Published gaps

Whole areas we do not cover: exempted-trust establishments, international workers, and the finer EPS pension calculations. We would rather name these than let you assume a green light means everything was checked.

And these 20 specified rules are quarantined, which means the engine never runs them. Each is here for a stated reason, and none of the reasons is "we ran out of time". Three of them are refusals rather than omissions: shipping the rule as written would mislead somebody, so it stays out until it is rewritten.

RuleWhy it does not run
B06_OVERLAPTwo spells overlapping is real and reported in HR forums, but no source names it as a rejection cause
B08_WAGE_MISMATCHNeeds a second reading of the same wage. The case holds one wage per spell, and the PF wage is the ceiling applied to it, not a second reading
B10_EMPLOYER_NOT_APPROVEDNo input distinguishes it from A15_KYC_UNAPPROVED, so both would name the same person to chase
B13_ESTT_CODE_CHANGEDEstablishment code reallocation is visible to the office, not in the member's record
B16_NCP_UNREPORTEDThe input exists in the fixtures. No source states that an unreported non-contributory period causes a rejection
B17_BREAK_UNCERTIFIEDSame shape as B16: the gap is computable, no source names an uncertified break as a cause
B18_WAGE_ABOVE_CEILING_UNEXPLAINEDAs specified it fires on wage above 15,000 without employer clarification, which is most salaried members in the country. It needs rewriting before sourcing
C03_TRANSFER_STUCKA transfer stalled part-way is a state EPFO holds. The case has no notion of a pending transfer or its age
C04_PREV_DETAILS_DIFFERThe citation is in hand and verbatim. Evaluating it needs identity fields per member ID, and the case holds one identity per person
C08_ALREADY_SETTLEDThe input exists. Nothing found states that a repeat claim against a settled account is refused on that ground, and obviousness is not evidence
D04_JOINT_ACCOUNTEPFO accepts joint accounts with a spouse in at least some circumstances, so a blocking rule would tell people to open an account they do not need
F08_TRANSFERRED_OUTNothing sets the input and no source states that a claim against a transferred-out balance is refused on that ground. F07 already explains where the money went
G01_EPS_UNDER_6MThe six-month bar appears to have been amended in 2024, with reporting putting it in the past tense. Shipping it could tell somebody nothing is payable when something is, which is a false refusal
G06_REJOINED_EPSTaking another pension-covered job plausibly bars a withdrawal benefit. Nothing found states the bar
G09_EPS_NEVER_CREDITEDC05_EPS_NOT_TRANSFERRED already fires on zero pensionable months against a completed spell. Separating them needs contributions modelled per month per scheme
G10_HIGHER_PENSION_WAGES_NOT_UPLOADEDThe Bombay High Court held in April 2026 that EPFO cannot refuse higher pension merely because an employer did not produce documents. Ships as an advisory carrying the case citation, or not at all
H02_SHARES_NOT_100Checking that nominee shares total 100% needs the shares. Only whether a nomination is on record is modelled
H06_FAMILY_NOT_ON_RECORDThat an unrecorded spouse and children delay a family claim is plausible and implied by A08, which does ship. Nothing states it as a cause of refusal
H07_HEIR_DISPUTEA contested claim is a state EPFO holds, and the remedy is a succession certificate from a court rather than anything Kosh can sequence
H08_RELATIONSHIP_UNPROVENNo source. Overlaps H01, whose remedy already asks for the legal heir certificate that would establish the relationship

The 4 rules that rest on a field report

A rule with no primary citation still runs, because a rejection people actually receive is real whether or not a circular describes it. But it is labelled Tier F and named here, so it never passes as equally well founded. A rule with no citation at all does not load: the build refuses it.

RuleTierWhat it rests on
A03_NAME_VS_PANFMember-reported EPFO PAN seeding error, Quora, question thread
B09_NO_REMITTANCEFMember-reported EPFO claim error, Quora, question thread
C06_BANK_MULTI_MAPPEDFMember-reported EPFO rejection message, Quora, question thread
G05_EARLY_PENSION_PENALTYFPractitioner commentary on EPS early pension, Quora, answer thread

See all 80 reasons in plain language →