Skip to content

Add 529 plan contribution deductions/credits for AL, DE, ID, IL, IN, IA, KS, LA, ME#7675

Open
MaxGhenis wants to merge 1 commit intoPolicyEngine:mainfrom
MaxGhenis:529-batch-1a
Open

Add 529 plan contribution deductions/credits for AL, DE, ID, IL, IN, IA, KS, LA, ME#7675
MaxGhenis wants to merge 1 commit intoPolicyEngine:mainfrom
MaxGhenis:529-batch-1a

Conversation

@MaxGhenis
Copy link
Contributor

@MaxGhenis MaxGhenis commented Mar 3, 2026

Summary

Implements state 529 plan tax benefits for 9 states, adding deductions or credits that reduce state income tax liability for contributions to qualified education savings plans.

States implemented

State Benefit type Single cap Joint/MFS cap Notes
AL Deduction $5,000 $10,000 Filing-status cap
DE Subtraction $1,000 $2,000 Filing-status, with AGI limit
ID Subtraction $6,000 $12,000 Filing-status cap
IL Subtraction $10,000 $20,000 Filing-status cap
IN Credit 20% rate 20% rate Non-refundable, $1,500 MFJ / $750 MFS max
IA Subtraction Per-beneficiary Per-beneficiary Inflation-adjusted ($6,100 in 2026)
KS Subtraction $3,000 $6,000 Per-beneficiary, filing-status cap
LA Deduction $2,400 $4,800 Per-beneficiary, filing-status cap
ME Subtraction $1,000 $1,000 Per-beneficiary, with AGI limit

Special cases

  • Indiana: Implemented as a 20% non-refundable credit, not a deduction/subtraction. Credit is capped at $1,500 for MFJ and $750 for MFS filing status.
  • Iowa: Per-beneficiary limit is inflation-adjusted. Uses base amount from IRS guidance.
  • Delaware & Maine: Include AGI phase-out limits on the subtraction.

Issues closed

Closes #7522 (AL), #7523 (DE), #7524 (ID), #7525 (IL), #7526 (IN), #7527 (IA), #7528 (KS), #7529 (LA), #7530 (ME)

Test plan

  • All new variables have corresponding YAML test cases validating expected behavior
  • Test cases cover various filing statuses, income levels, and contribution amounts
  • Indiana credit tests verify the 20% rate and per-filing-status caps
  • AGI-limited states (DE, ME) have tests at and around threshold boundaries
  • Inflation-adjusted states (IA) use correct year-specific values

…ME, and credit for IN

Implement 529 plan tax benefits for 9 states:
- AL: Filing-status deduction ($5K single / $10K joint)
- DE: Filing-status subtraction ($1K/$2K) with AGI limit
- ID: Filing-status subtraction ($6K/$12K)
- IL: Filing-status subtraction ($10K/$20K)
- IN: 20% non-refundable tax credit (cap $1,500/$750 MFS)
- IA: Per-beneficiary subtraction (inflation-adjusted, $6,100 in 2026)
- KS: Per-beneficiary filing-status subtraction ($3K/$6K)
- LA: Per-beneficiary filing-status deduction ($2,400/$4,800)
- ME: Per-beneficiary subtraction ($1K) with AGI limit

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@codecov
Copy link

codecov bot commented Mar 3, 2026

Codecov Report

❌ Patch coverage is 98.07692% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 98.60%. Comparing base (55a0045) to head (f016458).
⚠️ Report is 37 commits behind head on main.

Files with missing lines Patch % Lines
.../income/in_income_tax_before_refundable_credits.py 25.00% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #7675      +/-   ##
==========================================
+ Coverage   97.82%   98.60%   +0.77%     
==========================================
  Files           3       14      +11     
  Lines          92      215     +123     
  Branches        2        0       -2     
==========================================
+ Hits           90      212     +122     
- Misses          1        3       +2     
+ Partials        1        0       -1     
Flag Coverage Δ
unittests 98.60% <98.07%> (+0.77%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@MaxGhenis MaxGhenis requested a review from DTrim99 March 3, 2026 13:19
@DTrim99
Copy link
Collaborator

DTrim99 commented Mar 3, 2026

PolicyEngine Review: PR #7675

Summary

This PR adds 529 plan contribution tax benefits for 9 states:

  • Deductions/Subtractions: AL, DE, ID, IL, IA, KS, LA, ME
  • Credit: IN (20% rate, non-refundable)

Validation Results

Validator Status Notes
Regulatory Accuracy ✅ Pass All 9 states verified against official sources
Reference Quality ⚠️ Warnings Minor reference improvements suggested
Code Patterns ✅ Pass Proper PolicyEngine patterns used
Test Coverage ✅ Pass Key scenarios covered

✅ Regulatory Verification

All implementations verified correct:

State Type Cap Verified Against
AL Deduction $10K MFJ / $5K other Alabama Code § 16-33C-16
DE Subtraction $2K MFJ / $1K other + AGI limit ($200K/$100K) Delaware Code Title 30 § 1106(b)
ID Subtraction $12K MFJ / $6K other Idaho Tax Commission guidance
IL Subtraction $20K MFJ / $10K other IL DOR FAQ
IN Credit 20% rate, $1,500 cap ($750 MFS) - raised from $1,000 in 2023 IC 6-3-3-12
IA Subtraction Per-beneficiary (inflation-adjusted: $5,500 2024, $5,800 2025, $6,100 2026) Iowa Code § 422.7(32)
KS Subtraction $6K MFJ / $3K other per beneficiary KS State Treasurer
LA Deduction $4,800 MFJ / $2,400 other per beneficiary LA RS 47:293(9)(a)(xix)
ME Subtraction $1K per beneficiary + AGI limit ($200K/$100K) PL 2021 Ch. 398

⚠️ Should Address

1. Reference Title Specificity
Several parameter files use vague statute titles that could be more specific:

  • al/tax/income/deductions/plan_529/cap.yaml: Consider adding subsection to "Alabama Code Section 16-33C-16"
  • de/tax/income/subtractions/plan_529/cap.yaml: "Delaware Code Title 30, Section 1106(b)" could specify subsection
  • id/tax/income/subtractions/plan_529/cap.yaml: Reference is to general info page, could benefit from statute citation

2. PDF Page Numbers
NJ-1040 Instructions reference at nj/tax/income/deductions/plan_529_contributions/*.yaml files lacks #page=XX anchor. Consider adding page number for direct navigation.


💡 Suggestions (Optional)

1. Delaware Person Entity
de_529_plan_subtraction.py uses entity = Person while most other states use TaxUnit. This appears intentional for Delaware's tax structure but may warrant a brief comment explaining why.

2. Iowa Inflation Adjustments
The Iowa per-beneficiary caps ($5,500→$5,800→$6,100) are nicely documented. Consider adding a reference to the Iowa Treasurer announcement for each year's adjustment.

3. Indiana Non-Refundable Credit Pattern
The implementation in in_income_tax_before_refundable_credits.py correctly uses max_(tax - credit_529, 0) to ensure the credit doesn't exceed tax liability. This is the correct pattern for non-refundable credits. ✅


Test Coverage Summary

Tests cover:

  • ✅ Under cap scenarios (all states)
  • ✅ Over cap scenarios (all states)
  • ✅ MFS lower cap (IN)
  • ✅ Pre-2023 lower cap (IN - $1,000 vs $1,500)
  • ✅ Per-beneficiary caps (IA, KS, LA, ME)
  • ✅ AGI income limits (DE, ME)
  • ✅ Multiple beneficiaries (IA, KS, LA, ME)
  • ✅ No contribution scenarios (all states)

Verdict: Approve with minor suggestions

The implementation is regulatory-accurate and follows proper PolicyEngine patterns. The suggestions above are improvements but not blockers.

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add 529 plan contribution deduction to Alabama state income tax

2 participants