Work / Chitragupt / Wiki / Decisions
2026-07-12-234abc-interest-and-hra-min-of-three
Decisioncanonicalverified 2026-07-12
DECISION.2026-07-12.234ABC-INTEREST-AND-HRA-MIN-OF-THREEDecision
Two new statute-enforcing rule modules land in packages/shared/src/rules/v1/:
interest-234.ts— computes §234A (late filing), §234B (advance-tax shortfall > 10%), §234C (quarterly advance-tax targets) as integer paise per statute.hra-exemption.ts— computes the §10(13A) min-of-three exempt portion of HRA received. Overrides the Form-16-declared value when the user has provided basic salary + rent paid.
Both are consumed inside orchestrator.ts::runMode1ForAY on every
tax review recompute and populate the persisted TaxReview.position
fields (interest_234a/b/c_paise) and the applied HRA exemption
respectively.
Why
Audit findings on the tax pillar:
- §234A/B/C interest wasn't computed at all. A user who paid advance tax but has no 26AS Part-C entry saw an inflated "owe" number because the position math didn't credit the challan; a user filing late saw the same wrong owe with no interest breakdown.
- HRA was taken verbatim from Form 16. Employer over-claim (rare but real — some employers claim (a) actual received without verifying (b) or (c)) inflated the user's deduction. The engine was a rubber stamp instead of a validator.
Statute is explicit on both fronts:
- §10(13A) + Rule 2A: exempt HRA = min of (a) actual received, (b) rent paid − 10% of basic, (c) 50%/40% × basic (metro/non-metro).
- §234A: 1%/month × months from due date to filing date on unpaid tax.
- §234B: 1%/month × months from 1 Apr on shortfall when advance tax paid < 90% of assessed tax; §208 exempts total tax < ₹10k.
- §234C: quarterly 15%/45%/75%/100% cumulative targets; 3%/3%/3%/1% shortfall interest.
Impact
Two new modules land clean (no wiring outside the orchestrator).
Position schema extended with 3 interest fields + advance-tax +
self-assessment paid.
Followers:
computePositionincludes challans in the credits side; math is nowtax − (tds + advance_tax + self_assessment)instead oftax − tds. The audit found that a user who paid advance tax outside 26AS Part-C previously saw inflated "owe" numbers.- Recommendation and rebate math also include the new totals.
The tax-review-engine wires nothing new — the orchestrator returns
the same TaxReview shape with the new fields populated.
Status
Active. Landed as part of Phase 2 of the recompute-correctness sweep.
Follow-ups: (a) collect a filing_date_iso from the UI so §234A
uses the actual date, not "today"; (b) collect quarterly advance-tax
breakdown for accurate §234C.
Sources
- Phase 2 recompute-correctness commit.
- IT Act 1961 §§10(13A), 234A, 234B, 234C, 208.
- Related entities: pillar-tax, copy-strings.
Every project of mine is written down like this.
Read the résumé