Skip to content
Merged
1 change: 1 addition & 0 deletions changelog.d/al-misc-deduction-own-floor.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Compute Alabama's miscellaneous itemized deduction from its own list of expenses (unreimbursed employee business expenses and tax preparation fees) above 2% of Alabama AGI in every modeled year, counting only the head's and spouse's expenses, instead of applying a second floor to the federal deduction, which is zero from 2018.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
description: Alabama counts these expenses toward the miscellaneous itemized deduction, which applies only above a percentage of Alabama adjusted gross income.
values:
2017-01-01:
# Section (a)(1): unreimbursed employee business expenses.
- unreimbursed_business_employee_expenses
# Section (a)(14): expenses in connection with the determination, collection, or refund of any tax (26 U.S.C. 212(3)).
- tax_preparation_fees
metadata:
unit: list
period: year
label: Alabama miscellaneous itemized deduction sources
reference:
- title: Code of Alabama Section 40-18-15(a)(1), (14), (23) (2017 edition)
href: https://law.justia.com/codes/alabama/2017/title-40/chapter-18/article-1/section-40-18-15/
- title: "Act 2026-604, Section 1, amending Code of Alabama Section 40-18-15 #page 2,6-8"
href: https://alison.legislature.state.al.us/files/pdf/SearchableInstruments/2026RS/HB527-enr.pdf#page=2
- title: "2017 Alabama Form 40 instructions, Schedule A lines 20-24 #page 20-21"
href: https://www.revenue.alabama.gov/wp-content/uploads/2021/10/17f40bk.pdf#page=20
- title: "2024 Alabama Form 40 instructions, Schedule A lines 20-24 #page 20-21"
href: https://www.revenue.alabama.gov/wp-content/uploads/2025/01/24f40bk.pdf#page=20
- title: 2025 Alabama Form 40 instructions, Schedule A lines 20-24
href: https://www.revenue.alabama.gov/wp-content/uploads/2026/01/25f40bk.pdf#page=21
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
description: Alabama deducts work-related expense over this percentage of adjusted gross income.
description: Alabama allows the total of the subdivision (1) unreimbursed employee business expenses and the subdivision (14) expenses only above this percentage of adjusted gross income.
values:
2021-01-01: 0.02
2017-01-01: 0.02

metadata:
label: Alabama work-related expense deduction rate
label: Alabama miscellaneous itemized deduction floor rate
period: year
unit: /1
reference:
- title: Code of Alabama Section 40-18-15, (a) (3) (h) (23)
href: https://law.justia.com/codes/alabama/2022/title-40/chapter-18/article-1/section-40-18-15/
- title: Code of Alabama Section 40-18-15(a)(23) (2017 edition)
href: https://law.justia.com/codes/alabama/2017/title-40/chapter-18/article-1/section-40-18-15/
- title: Code of Alabama Section 40-18-15(a)(23) (2021 edition)
href: https://law.justia.com/codes/alabama/2021/title-40/chapter-18/article-1/section-40-18-15/
- title: "Act 2026-604, Section 1, amending Code of Alabama Section 40-18-15 #page 7-8"
href: https://alison.legislature.state.al.us/files/pdf/SearchableInstruments/2026RS/HB527-enr.pdf#page=7
- title: 2021 Schedule A (Form 1040)
href: https://www.revenue.alabama.gov/ultraviewer/viewer/basic_viewer/index.html?form=2022/06/21f40schabdc_blk.pdf#page=1
- title: 2022 Schedule A (Form 1040)
Expand All @@ -17,3 +21,9 @@ metadata:
href: https://www.revenue.alabama.gov/ultraviewer/viewer/basic_viewer/index.html?form=2024/01/23f40schabdc_blk.pdf#page=1
- title: 2024 Schedule A (Form 1040)
href: https://www.revenue.alabama.gov/ultraviewer/viewer/basic_viewer/index.html?form=2025/01/24f40schabdc_blk.pdf#page=20
- title: "2017 Alabama Form 40 instructions, Schedule A lines 20-24 #page 20-21"
href: https://www.revenue.alabama.gov/wp-content/uploads/2021/10/17f40bk.pdf#page=20
- title: "2024 Alabama Form 40 instructions, Schedule A lines 20-24 #page 20-21"
href: https://www.revenue.alabama.gov/wp-content/uploads/2025/01/24f40bk.pdf#page=20
- title: 2025 Alabama Form 40 instructions, Schedule A lines 20-24
href: https://www.revenue.alabama.gov/wp-content/uploads/2026/01/25f40bk.pdf#page=21
18 changes: 14 additions & 4 deletions policyengine_us/tests/core/test_al_agi_dependent_invariants.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@
with the dependents' income and deduction inputs as drawn and with them set
to zero. For every tax unit:

1. The dependents' inputs never change Alabama AGI, the standard deduction
or the personal and dependent exemptions. Alabama income tax is unchanged
1. The dependents' inputs never change Alabama AGI, the standard deduction,
the personal and dependent exemptions or the miscellaneous itemized
deduction. Alabama income tax is unchanged
too wherever the itemized deductions and the federal income tax deduction
are. Two leaks outside AGI remain, and are left out here: Alabama
itemized deductions still count a dependent's FICA and self-employment
Expand Down Expand Up @@ -57,24 +58,29 @@
"rental_income",
"long_term_capital_gains",
"taxable_public_pension_income",
# Alabama miscellaneous itemized deduction sources.
"unreimbursed_business_employee_expenses",
"tax_preparation_fees",
]
UNIT_OUTPUTS = [
"al_agi",
"al_standard_deduction",
"al_personal_exemption",
"al_dependent_exemption",
"al_misc_deduction",
"al_itemized_deductions",
"al_federal_income_tax_deduction",
"al_income_tax",
"tax_unit_dependents",
]
# Outputs that depend on Alabama AGI but not on federal tax or itemized
# deductions.
# Outputs that depend on Alabama AGI but not on federal tax, and on no
# itemized deduction that still leaks a dependent's items (#9941).
INVARIANT_OUTPUTS = [
"al_agi",
"al_standard_deduction",
"al_personal_exemption",
"al_dependent_exemption",
"al_misc_deduction",
]

amount = st.integers(1, 40_000).map(float)
Expand Down Expand Up @@ -110,6 +116,8 @@ def person_amounts(draw):
# A public pension is both in pension income and subtracted from
# Alabama gross income.
"taxable_public_pension_income": public_pension,
"unreimbursed_business_employee_expenses": draw(small),
"tax_preparation_fees": draw(st.integers(0, 1_000).map(float)),
}


Expand Down Expand Up @@ -156,6 +164,8 @@ def some(low, high, p=0.5):
"rental_income": some(-5_000, 20_000, 0.3),
"long_term_capital_gains": some(1, 5_000, 0.3),
"taxable_public_pension_income": public_pension,
"unreimbursed_business_employee_expenses": some(1, 5_000, 0.3),
"tax_preparation_fees": some(1, 1_000, 0.3),
}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,138 @@
- name: Alabama work related itemized deductions unit test 1
# Ala. Code 40-18-15(a)(23) allows the subdivision (1) unreimbursed employee
# business expenses and the subdivision (14) deduction only to the extent they
# exceed 2% of Alabama AGI. Alabama applies that one floor to the expenses in
# every year; it does not start from the federal miscellaneous deduction, which
# is already net of the federal floor and is zero from 2018.

- name: Case 1, 2021 expenses above 2% of Alabama AGI.
period: 2021
input:
misc_deduction: 2_000
unreimbursed_business_employee_expenses: 2_000
al_agi: 70_000
state_code: AL
output:
# 2,000 - 0.02 * 70,000
al_misc_deduction: 600
#2000-70000*0.2=600


- name: Alabama work related itemized deductions unit test 2
- name: Case 2, 2021 expenses well above the floor.
period: 2021
input:
misc_deduction: 7_000
unreimbursed_business_employee_expenses: 7_000
al_agi: 30_000
state_code: AL
output:
# 7,000 - 0.02 * 30,000
al_misc_deduction: 6_400
#7000-30000*0.02=6400

- name: Case 3, 2017 Alabama applies one floor to the expenses, not a second floor to the federal deduction.
period: 2017
input:
unreimbursed_business_employee_expenses: 5_000
tax_preparation_fees: 0
positive_agi: 50_000
al_agi: 50_000
state_code: AL
output:
# Federal and Alabama each allow 5,000 - 0.02 * 50,000 = 4,000. Before the
# fix Alabama took a further 1,000 off the federal 4,000.
misc_deduction: 4_000
al_misc_deduction: 4_000

- name: Case 4, 2017 Alabama floors on Alabama AGI, the federal deduction on federal AGI.
period: 2017
input:
unreimbursed_business_employee_expenses: 5_000
positive_agi: 100_000
al_agi: 90_000
state_code: AL
output:
# Federal 5,000 - 0.02 * 100,000 = 3,000; Alabama 5,000 - 0.02 * 90,000.
misc_deduction: 3_000
al_misc_deduction: 3_200

- name: Case 5, 2025 Alabama keeps the deduction the federal return suspends.
period: 2025
input:
unreimbursed_business_employee_expenses: 5_000
tax_preparation_fees: 1_000
al_agi: 50_000
state_code: AL
output:
misc_deduction: 0
# 5,000 + 1,000 - 0.02 * 50,000
al_misc_deduction: 5_000

- name: Case 6, 2025 expenses equal to the floor yield no deduction.
period: 2025
input:
unreimbursed_business_employee_expenses: 1_000
al_agi: 50_000
state_code: AL
output:
# max(1,000 - 0.02 * 50,000, 0)
al_misc_deduction: 0

- name: Case 7, 2025 Alabama adds both spouses' expenses before one floor.
period: 2025
input:
people:
head:
unreimbursed_business_employee_expenses: 1_500
spouse:
tax_preparation_fees: 700
tax_units:
tax_unit:
members: [head, spouse]
al_agi: 60_000
households:
household:
members: [head, spouse]
state_code: AL
output:
# 1,500 + 700 - 0.02 * 60,000
al_misc_deduction: 1_000

- name: Case 8, 2025 Alabama reads its own expense list, not the federal total.
period: 2025
input:
total_misc_deductions: 5_000
al_agi: 50_000
state_code: AL
output:
al_misc_deduction: 0

- name: Case 9, 2025 a tax unit dependent's expenses stay off the filer's Alabama return.
period: 2025
input:
people:
head:
unreimbursed_business_employee_expenses: 1_500
child:
age: 17
is_tax_unit_dependent: true
unreimbursed_business_employee_expenses: 2_000
tax_units:
tax_unit:
members: [head, child]
al_agi: 50_000
households:
household:
members: [head, child]
state_code: AL
output:
# The child's 2,000 belongs on the child's own return.
# 1,500 - 0.02 * 50,000
al_misc_deduction: 500

- name: Case 10, 2017 Alabama floors on Alabama AGI even when federal AGI is lower.
period: 2017
input:
unreimbursed_business_employee_expenses: 5_000
positive_agi: 40_000
al_agi: 50_000
state_code: AL
output:
# Federal: 5,000 - 0.02 * 40,000
misc_deduction: 4_200
# Alabama: 5,000 - 0.02 * 50,000
al_misc_deduction: 4_000
Loading
Loading