Skip to content
Merged
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Count Michigan household resources' Social Security, SSI and railroad retirement benefits, and deduct health insurance premiums, only for the claimant and spouse (MCL 206.508(3) and 206.510), so a dependent's own benefits and premiums no longer change the homestead property tax and home heating credits.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ description: Michigan accounts for the following income sources as the household
values:
2021-01-01:
# Each source counts for the claimant and spouse only (MCL 206.508(3)),
# except those in household_resources_all_members (lines 21, 22 and 27).
# except those in household_resources_all_members (lines 22 and 27).
# MI-1040CR line 14, wages, including strike pay.
- irs_employment_income
- strike_benefits
Expand Down Expand Up @@ -36,7 +36,8 @@ values:
- gambling_winnings
- miscellaneous_income
# MI-1040CR line 21, Social Security, SSI and railroad retirement
# benefits, including amounts received for dependents.
# benefits: the claimant's and spouse's own. A dependent's benefit is
# the dependent's, even when the claimant is the representative payee.
- social_security
- ssi
- railroad_benefits
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
description: Michigan counts these household resources sources for every tax unit member, not only the claimant and spouse, as amounts the claimant receives for others in the household.
description: Michigan counts these household resources sources for every tax unit member, not only the claimant and spouse, as payments made to the claimant for the household.
values:
2021-01-01:
# MI-1040CR line 21: Social Security, SSI and railroad retirement
# benefits, including "amounts received for minor children or other
# dependent adults who live with you".
- social_security
- ssi
- railroad_benefits
# Social Security, SSI and railroad retirement benefits (MI-1040CR line
# 21) are not listed: they count only for the claimant and spouse. MCL
# 206.508(3) defines the household as "a claimant and spouse", and a
# dependent's own benefit is received by the dependent, even when the
# claimant is the representative payee.
# MI-1040CR line 22: "child support and all payments received as a foster
# parent".
# parent", paid to the claimant for the child.
- child_support_received
# MI-1040CR line 27: "the total payments made to your household by MDHHS
# and all other public assistance payments". A Family Independence
# Program grant covers the children in the case.
# Program grant is paid to the claimant and covers the children in the
# case.
- tanf
- general_assistance
metadata:
Expand All @@ -22,9 +22,9 @@ metadata:
reference:
- title: MCL 206.508(3) and (4), household and total household resources
href: https://www.legislature.mi.gov/Laws/MCL?objectName=mcl-206-508
- title: Michigan 2025 Individual Income Tax Instructions, MI-1040CR lines 21, 22 and 27
- title: Michigan 2025 Individual Income Tax Instructions, MI-1040CR lines 22 and 27
href: https://www.michigan.gov/taxes/-/media/Project/Websites/taxes/Forms/IIT/TY2025/MI-1040-Book.pdf#page=32
- title: Michigan 2024 Home Heating Credit Instructions, MI-1040CR-7 lines 26, 27 and 32
- title: Michigan 2024 Home Heating Credit Instructions, MI-1040CR-7 lines 27 and 32
href: https://web.archive.org/web/20250202150154/https://www.michigan.gov/taxes/-/media/Project/Websites/taxes/Forms/IIT/TY2024/BOOK_MI-1040CR-7.pdf#page=8
- title: Michigan 2025 Home Heating Credit Instructions, MI-1040CR-7 lines 24, 25 and 30
- title: Michigan 2025 Home Heating Credit Instructions, MI-1040CR-7 lines 25 and 30
href: https://web.archive.org/web/20260218211009/https://www.michigan.gov/taxes/-/media/Project/Websites/taxes/Forms/IIT/TY2025/MI-1040CR-7-Book.pdf?rev=e4ba4fedc63942e48442037517312d4a&hash=AF396E577B1932DF55BFD7F22D7EF06A#page=9
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@
units without dependents it equals `add`.
2. Outside STATES_WITH_INTENDED_RETIREMENT_TAX_DECREASES, giving the
dependents retirement income never lowers the filer's state income tax.
Michigan is an intended exception: a dependent adult's pension can lower
their SSI and increase the claimant's refundable credit. Outside
Michigan is an intended exception: a dependent's pension can lower the
household's Family Independence Program grant, which counts in household
resources, and so raise the claimant's refundable credit. Outside
STATES_COUNTING_DEPENDENT_INCOME it changes neither the state AGI nor the
state taxable income. (State income tax itself may still rise: credits
keyed to household income, such as Oklahoma's sales tax relief credit,
Expand Down Expand Up @@ -371,13 +372,12 @@ def test_tax_unit_non_dep_add_edge_cases():
# subtracting income that never entered AGI; property 2 checks only that it
# never lowers tax there.
STATES_COUNTING_DEPENDENT_INCOME = {"AL", "AR", "IA", "MS", "NJ"}
# Intended exception per ruling d1143 (2026-10-09): follow MI-1040CR lines
# 18 and 21 (2025 MI-1040 booklet, PDF page 28 / printed page 32):
# https://www.michigan.gov/taxes/-/media/Project/Websites/taxes/Forms/IIT/TY2025/MI-1040-Book.pdf#page=28
# Line 18 counts pensions only for the claimant and spouse; line 21 counts
# SSI received for dependent adults who live with them. A dependent adult's
# pension can reduce SSI, lower household resources and raise refundable
# credits, while the claimant's pension subtractions and tax base stay fixed.
# Michigan: a dependent's own pension and SSI are not household resources
# (MCL 206.508(3) defines the household as "a claimant and spouse"), but the
# Family Independence Program grant paid to the claimant counts in full
# (MI-1040CR line 27). A dependent's pension can lower that grant, lower
# household resources and raise the claimant's refundable credits, while the
# claimant's pension subtractions and tax base stay fixed.
STATES_WITH_INTENDED_RETIREMENT_TAX_DECREASES = {"MI"}
YEARS = [2025, 2026]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,11 +185,11 @@
output:
mi_home_heating_credit: 0

# Ruling d1143 (2026-10-09): follow MI-1040CR lines 18 and 21.
# 2025 MI-1040 book, PDF page 28 (printed page 32):
# https://www.michigan.gov/taxes/-/media/Project/Websites/taxes/Forms/IIT/TY2025/MI-1040-Book.pdf#page=28
# Line 18 excludes a dependent adult's pension; line 21 includes their SSI.
- name: Dependent adult pension lowers Michigan tax through SSI (d1143)
# MCL 206.508(3) defines the household as "a claimant and spouse", so a
# dependent adult's own pension and SSI are both left out of household
# resources. The MI-1040CR line 21 instructions, which count amounts
# received for dependent adults, give way to the statute.
- name: A dependent adult's pension and SSI both stay out of household resources
period: 2025
absolute_error_margin: 0.01
input:
Expand Down Expand Up @@ -263,18 +263,18 @@
# Annual SSI: 12 * $967 = $11,604. Countable annual pension:
# $2,400 - 12 * $20 general exclusion = $2,160; $11,604 - $2,160 = $9,444.
ssi: [0, 11_604, 0, 9_444]
# Claimant wages + dependent SSI; the dependent's pension is excluded.
mi_household_resources: [21_604, 19_444]
# Claimant wages only; the dependent's SSI and pension are the
# dependent's own.
mi_household_resources: [10_000, 10_000]
adjusted_gross_income: [10_000, 10_000]
mi_pension_benefit: [0, 0]
mi_subtractions: [0, 0]
mi_taxable_income: [0, 0]
mi_income_tax_before_refundable_credits: [0, 0]
# Two exemptions: $815 - 3.5% * household resources.
mi_standard_home_heating_credit: [58.86, 134.46]
# Apply the 2025 60% funding factor: $58.86 * .60; $134.46 * .60.
mi_home_heating_credit: [35.316, 80.676]
# Only the heating credit changes: tax falls by $45.36,
# equal to $2,160 * 3.5% * 60% = $80.676 - $35.316.
mi_income_tax: [-35.316, -80.676]
state_income_tax: [-35.316, -80.676]
# Two exemptions: $815 - 3.5% * $10,000 = $465.
mi_standard_home_heating_credit: [465, 465]
# Apply the 2025 60% funding factor: $465 * .60 = $279. The pension no
# longer changes the credit through the dependent's SSI.
mi_home_heating_credit: [279, 279]
mi_income_tax: [-279, -279]
state_income_tax: [-279, -279]
Original file line number Diff line number Diff line change
Expand Up @@ -791,7 +791,7 @@
# Line 33: 50,500.
mi_household_resources: 50_500

- name: Social Security survivors benefits paid for a child count on line 21
- name: Social Security survivors benefits paid for a child are the child's, not the claimant's
period: 2025
input:
people:
Expand All @@ -812,12 +812,14 @@
output:
# Line 14: 30,000. Line 15: 0; the child's 400 of interest is the
# child's own income.
# Line 21: "Include death benefits and amounts received for minor
# children or other dependent adults who live with you": 9,000.
# Line 33: 30,000 + 9,000 = 39,000.
mi_household_resources: 39_000

- name: SSI and child support received for a child count on lines 21 and 22
# Line 21: 0. MCL 206.508(3) defines the household as "a claimant and
# spouse"; the child's benefit is received by the child, even with the
# claimant as representative payee. The statute governs RAB 2015-18 and
# the line 21 instructions, which count benefits for minor children.
# Line 33: 30,000.
mi_household_resources: 30_000

- name: Child support received for a child counts on line 22 but the child's SSI does not
period: 2025
input:
people:
Expand All @@ -836,13 +838,13 @@
members: [person1, person2]
state_code: MI
output:
# Line 14: 20,000. Line 21: SSI received for a minor child, 6,000.
# Line 22: "child support and all payments received as a foster
# parent", 4,800.
# Line 33: 20,000 + 6,000 + 4,800 = 30,800.
mi_household_resources: 30_800
# Line 14: 20,000. Line 21: 0; the child's SSI is the child's own
# (MCL 206.508(3)). Line 22: "child support and all payments received
# as a foster parent", paid to the claimant, 4,800.
# Line 33: 20,000 + 4,800 = 24,800.
mi_household_resources: 24_800

- name: A dependent adult's Social Security counts but the dependent's pension does not
- name: Neither a dependent adult's Social Security nor the dependent's pension counts
period: 2025
input:
people:
Expand Down Expand Up @@ -874,10 +876,10 @@
output:
# Line 14: 50,000. Line 18: 0; the dependent parent's pension is the
# parent's own income.
# Line 21: amounts received for "other dependent adults who live with
# you", 15,000.
# Line 33: 50,000 + 15,000 = 65,000.
mi_household_resources: 65_000
# Line 21: 0; the dependent parent's Social Security is the parent's
# own (MCL 206.508(3)).
# Line 33: 50,000.
mi_household_resources: 50_000

- name: A dependent's capital loss does not reduce the claimant's line 19
period: 2025
Expand Down Expand Up @@ -956,14 +958,14 @@
# Line 33: 10,000 + 6,000 = 16,000.
mi_household_resources: 16_000

- name: Premiums paid for a child's coverage reduce household resources on line 31
- name: Premiums the claimant paid for family coverage reduce line 31 but a child's own premium does not
period: 2025
input:
people:
person1:
age: 40
employment_income_before_lsr: 40_000
health_insurance_premiums: 2_400
health_insurance_premiums: 3_600
person2:
age: 9
health_insurance_premiums: 1_200
Expand All @@ -975,9 +977,9 @@
members: [person1, person2]
state_code: MI
output:
# Line 31: "insurance premiums you paid for yourself and your family",
# 2,400 + 1,200 = 3,600, reading the child's premium as one the claimant
# paid for the child's coverage.
# Line 31: "insurance premiums you paid for yourself and your family":
# the claimant's 3,600, which covers the child (MCL 206.510(1)). The
# 1,200 on the child's record is a premium the child paid.
# Line 33: 40,000 - 3,600 = 36,400.
mi_household_resources: 36_400

Expand Down Expand Up @@ -1473,3 +1475,102 @@
output:
charitable_deduction_for_non_itemizers: 300
mi_household_resources: 40_000

- name: A dependent adult's own SSI and personally paid premiums are excluded
period: 2025
input:
people:
claimant:
age: 40
is_tax_unit_head: true
is_tax_unit_spouse: false
is_tax_unit_dependent: false
employment_income: 10_000
dependent:
age: 75
is_tax_unit_head: false
is_tax_unit_spouse: false
is_tax_unit_dependent: true
ssi: 9_444
health_insurance_premiums: 1_000
tax_units:
tax_unit:
members: [claimant, dependent]
spm_units:
spm_unit:
members: [claimant, dependent]
tanf: 0
households:
household:
members: [claimant, dependent]
state_code: MI
output:
# MCL 206.508(3)-(4) and 206.510(1): the claimant's 10,000 of earnings;
# the dependent's own 9,444 SSI and the 1,000 of premiums the dependent
# paid are not the claimant's.
mi_household_resources: 10_000

- name: Claimant-paid family premiums come off once while a dependent adult's SSI is excluded
period: 2025
input:
people:
claimant:
age: 40
is_tax_unit_head: true
is_tax_unit_spouse: false
is_tax_unit_dependent: false
employment_income: 10_000
health_insurance_premiums: 1_000
dependent:
age: 75
is_tax_unit_head: false
is_tax_unit_spouse: false
is_tax_unit_dependent: true
ssi: 9_444
tax_units:
tax_unit:
members: [claimant, dependent]
spm_units:
spm_unit:
members: [claimant, dependent]
tanf: 0
households:
household:
members: [claimant, dependent]
state_code: MI
output:
# 10,000 earnings - 1,000 claimant-paid family premiums (MCL 206.510(1))
# = 9,000. The dependent's 9,444 SSI is the dependent's own.
mi_household_resources: 9_000

- name: A spouse's own Social Security and SSI count in full
period: 2025
input:
people:
head:
age: 70
is_tax_unit_head: true
is_tax_unit_spouse: false
social_security_retirement: 12_000
spouse:
age: 68
is_tax_unit_head: false
is_tax_unit_spouse: true
ssi: 3_000
social_security_retirement: 6_000
child:
age: 15
is_tax_unit_dependent: true
social_security_survivors: 5_000
tax_units:
tax_unit:
members: [head, spouse, child]
filing_status: JOINT
households:
household:
members: [head, spouse, child]
state_code: MI
output:
# Line 21: the claimant's and spouse's own benefits, 12,000 + 6,000 +
# 3,000 = 21,000. The child's 5,000 is the child's own.
mi_household_resources: 21_000
14 changes: 9 additions & 5 deletions policyengine_us/tests/test_mi_household_resources_exclusions.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
Schedule 1", which include the self-employed health insurance deduction
(Schedule 1 line 17). Line 31 subtracts "insurance premiums you paid for
yourself and your family", but "Do not include any insurance premiums deducted
on lines 21 or 30" (2025 MI-1040 book, page 33).
on lines 21 or 30" (2025 MI-1040 book, page 33). health_insurance_premiums
records the premiums each person paid, so only the head's and spouse's count
(MCL 206.510(1)); theirs may cover the family, and a dependent's own premium
is not one the claimant or spouse paid.

MCL 206.510(1) excludes from income "(a) The first $300.00 of gifts in cash or
kind from nongovernmental sources" and "(b) The first $300.00 received from
Expand All @@ -16,8 +19,9 @@

So for every household:

1. Each premium dollar is subtracted once. Zeroing every member's premiums
raises household resources by between 0 and the household's total
1. Each premium dollar the head or spouse paid is subtracted once, and a
dependent's is not subtracted. Zeroing every member's premiums raises
household resources by between 0 and the head's and spouse's total
premiums, and by exactly that total when household resources were
positive.
2. Household resources are non-decreasing in the head's gambling winnings.
Expand Down Expand Up @@ -155,7 +159,7 @@ def assert_premiums_subtracted_once(households):
n = len(households)
for i, h in enumerate(households):
tol = tolerance(h)
premiums = total(members(h), PREMIUMS)
premiums = total(filers(h), PREMIUMS)
subtracted = float(result[n + i]) - float(result[i])
assert -tol <= subtracted <= premiums + tol, h
if result[i] > tol:
Expand Down Expand Up @@ -193,7 +197,7 @@ def test_self_employed_premiums_subtracted_once():
"""The self-employed health insurance deduction (line 30) and line 31
together subtract each premium once: for a self-employed claimant, a
self-employed couple, premiums above the deduction's earnings limit, and
a self-employed dependent whose premium the claimant is read to pay."""
a self-employed dependent whose own premium is not subtracted."""
households = [
{"head": person(self_employment_income=50_000, **{PREMIUMS: 5_000})},
{
Expand Down
Loading
Loading