Skip to content
Ritesh FirodiyaGet in touch

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-THREE

Decision

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:

  • computePosition includes challans in the credits side; math is now tax − (tds + advance_tax + self_assessment) instead of tax − 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é