Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/az-standard-deduction-2026-indexing.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Index the Arizona standard deduction for 2026 and later under A.R.S. 43-1041(H): set the 2026 amounts to $16,100 single and separate, $24,150 head of household and $32,200 joint, and move the inert parent-level uprating onto each filing-status amount.
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,18 @@ metadata:
href: https://azdor.gov/forms/individual/form-140-arizona-resident-personal-income-tax-booklet
- title: 2021 Arizona Form 140 Resident Personal Income Tax Booklet
href: https://azdor.gov/sites/default/files/2023-03/FORMS_INDIVIDUAL_2021_140BOOKLET.pdf#page=43
# Arizona standard deduction is uprated mirroring federal standard deduction
# This parent uprating remains inactive pending selective propagation in PolicyEngine/policyengine-core#537.
uprating: gov.irs.uprating
- title: A.R.S. 43-1041(A) and (H)
href: https://www.azleg.gov/ars/43/01041.htm
- title: Laws 2026, ch. 140 (HB 4168), secs. 16 and 35(A)
href: https://www.azleg.gov/legtext/57leg/2R/laws/0140.htm
# 2026: 43-1041(H) indexes the subsection A amounts "in the same manner in
# which the federal basic standard deduction is adjusted for inflation
# pursuant to section 63". The Arizona and federal 2025 bases are equal, so
# the 2026 amounts equal the federal ones.
- title: Rev. Proc. 2025-32, sec. 4.14(1) (2026 federal standard deduction)
href: https://www.irs.gov/pub/irs-drop/rp-25-32.pdf#page=18
# Each filing-status amount below carries its own uprating, because
# policyengine-core uprates only parameters whose own metadata names one.

JOINT:
values:
Expand All @@ -27,36 +36,64 @@ JOINT:
2023-01-01: 27_700
2024-01-01: 29_200
2025-01-01: 31_500
2026-01-01: 32_200
metadata:
unit: currency-USD
period: year
# The federal method makes the joint amount twice the single amount
# (26 U.S.C. 63(c)(2)(A)). With a 2026 joint amount of twice the single
# amount, a $100 round-down equals twice the single amount's $50
# round-down.
uprating:
parameter: gov.irs.uprating
rounding:
type: downwards
interval: 100
HEAD_OF_HOUSEHOLD:
values:
2021-01-01: 18_800
2022-01-01: 19_400
2023-01-01: 20_800
2024-01-01: 21_900
2025-01-01: 23_625
2026-01-01: 24_150
metadata:
unit: currency-USD
period: year
uprating:
parameter: gov.irs.uprating
rounding:
type: downwards
interval: 50
SINGLE:
values:
2021-01-01: 12_550
2022-01-01: 12_950
2023-01-01: 13_850
2024-01-01: 14_600
2025-01-01: 15_750
2026-01-01: 16_100
metadata:
unit: currency-USD
period: year
uprating:
parameter: gov.irs.uprating
rounding:
type: downwards
interval: 50
SEPARATE:
values:
2021-01-01: 12_550
2022-01-01: 12_950
2023-01-01: 13_850
2024-01-01: 14_600
2025-01-01: 15_750
2026-01-01: 16_100
metadata:
unit: currency-USD
period: year
uprating:
parameter: gov.irs.uprating
rounding:
type: downwards
interval: 50
43 changes: 43 additions & 0 deletions policyengine_us/tests/core/test_state_uprating_rounding.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,3 +265,46 @@ def test_mt_old_age_subtraction_uses_published_2025():
assert amount.brackets[0].amount("2025-01-01") == 0
assert amount.brackets[1].amount("2024-01-01") == 5_500
assert amount.brackets[1].amount("2025-01-01") == 5_660


AZ_STANDARD_DEDUCTION_STATUSES = ("SINGLE", "SEPARATE", "HEAD_OF_HOUSEHOLD")


@pytest.mark.parametrize("status", AZ_STANDARD_DEDUCTION_STATUSES)
def test_az_standard_deduction_is_indexed_like_the_federal_basic_amount(status):
# A.R.S. 43-1041(H): the subsection A amounts are adjusted "in the same
# manner in which the federal basic standard deduction is adjusted for
# inflation pursuant to section 63". Laws 2026, ch. 140 set those amounts
# to the federal 2025 amounts, so under current law the Arizona amounts
# equal the federal ones in every later year. A parent-level uprating key
# used to leave Arizona at its 2025 amounts from 2026 on. After 2026 this
# checks the model's projection, which uprates the rounded 2026 amount.
arizona = getattr(
SYSTEM.parameters.gov.states.az.tax.income.deductions.standard.amount, status
)
federal = getattr(SYSTEM.parameters.gov.irs.deductions.standard.amount, status)
uprating = SYSTEM.parameters.gov.irs.uprating
base_2026 = arizona("2026-01-01")
previous = arizona("2025-01-01")
for year in range(2025, 2036):
period = f"{year}-01-01"
amount = arizona(period)
assert amount == federal(period), (status, year)
assert amount >= previous, (status, year)
previous = amount
if year > 2026:
# 26 U.S.C. 63(c)(7)(B)(ii): round increases down to a multiple
# of $50.
factor = uprating(period) / uprating("2026-01-01")
assert amount == base_2026 * factor // 50 * 50, (status, year)
assert arizona("2035-01-01") > base_2026


def test_az_joint_standard_deduction_is_twice_the_single_amount():
# 26 U.S.C. 63(c)(2)(A): the federal basic standard deduction for a joint
# return is 200% of the single amount, so the Arizona joint amount,
# indexed in the same manner, is twice the Arizona single amount.
amount = SYSTEM.parameters.gov.states.az.tax.income.deductions.standard.amount
for year in range(2025, 2036):
period = f"{year}-01-01"
assert amount.JOINT(period) == 2 * amount.SINGLE(period), year
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,45 @@
output:
# Per 2025 Form 140 Instructions: HOH standard deduction is $23,625
az_base_standard_deduction: 23_625

# 2026 tax year tests
# A.R.S. 43-1041(A), as amended by Laws 2026, ch. 140 (HB 4168), sec. 16 and
# made retroactive to tax year 2025 by sec. 35(A), sets $15,750 / $23,625 /
# $31,500 "subject to subsection H". 43-1041(H) indexes those amounts "in the
# same manner in which the federal basic standard deduction is adjusted for
# inflation pursuant to section 63". 26 U.S.C. 63(c)(7)(B)(ii) indexes the same
# $15,750 and $23,625 bases from 2024, and Rev. Proc. 2025-32 sec. 4.14(1) gives
# the 2026 results: $16,100 single and separate, $24,150 head of household and
# $32,200 joint. PolicyBench reference audit 2026-10-05, scenario_018.

- name: Single filer 2026 indexed under A.R.S. 43-1041(H)
period: 2026
input:
state_code: AZ
az_filing_status: SINGLE
output:
az_base_standard_deduction: 16_100

- name: Joint filer 2026 indexed under A.R.S. 43-1041(H)
period: 2026
input:
state_code: AZ
az_filing_status: JOINT
output:
az_base_standard_deduction: 32_200

- name: Separate filer 2026 indexed under A.R.S. 43-1041(H)
period: 2026
input:
state_code: AZ
az_filing_status: SEPARATE
output:
az_base_standard_deduction: 16_100

- name: Head of household filer 2026 indexed under A.R.S. 43-1041(H)
period: 2026
input:
state_code: AZ
az_filing_status: HEAD_OF_HOUSEHOLD
output:
az_base_standard_deduction: 24_150
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,9 @@
az_dependent_tax_credit: 125
# Charitable add-on: min($1,500, $1,000 HOH cap) = $1,000
az_increased_standard_deduction_for_charitable_contributions: 1_000
# Standard deduction: $23,625 base + $1,000 add-on = $24,625
az_standard_deduction: 24_625
# Standard deduction: $24,150 base (2026 head of household amount under
# A.R.S. 43-1041(H)) + $1,000 add-on = $25,150
az_standard_deduction: 25_150
# Dependent care: cdcc_relevant_expenses = min($5,000, $3,000 §21 cap for
# 1 QI, $80,000 earnings) = $3,000; subtraction = max($3,000 - $1,200, 0)
# = $1,800
Expand All @@ -74,12 +75,12 @@
az_subtractions: 2_800
# AZ AGI = $80,000 - $2,800 = $77,200
az_agi: 77_200
# Taxable income = $77,200 - $24,625 = $52,575
az_taxable_income: 52_575
# Tax before credits = $52,575 * 2.5% = $1,314.375
az_income_tax_before_non_refundable_credits: 1_314.375
# AZ income tax = $1,314.375 - $125 dependent credit = $1,189.375
az_income_tax: 1_189.375
# Taxable income = $77,200 - $25,150 = $52,050
az_taxable_income: 52_050
# Tax before credits = $52,050 * 2.5% = $1,301.25
az_income_tax_before_non_refundable_credits: 1_301.25
# AZ income tax = $1,301.25 - $125 dependent credit = $1,176.25
az_income_tax: 1_176.25

# Confirms the pre-2026 regime is UNCHANGED for the identical household.
# In 2025: dependent credit is $100, charitable add-on uses the 0.34 rate
Expand Down Expand Up @@ -124,3 +125,32 @@
az_income_tax_before_non_refundable_credits: 1_396.625
# AZ income tax = $1,396.625 - $100 dependent credit = $1,296.625
az_income_tax: 1_296.625

# PolicyBench reference audit 2026-10-05, scenario_018: a single wage earner
# in tax year 2026. AZ AGI equals federal AGI (no Arizona additions or
# subtractions apply). The standard deduction is $16,100 under A.R.S.
# 43-1041(A)(1) and (H) (Rev. Proc. 2025-32 sec. 4.14(1)), not the
# unindexed 2025 amount of $15,750.
- name: AZ 2026 single filer uses the inflation-indexed standard deduction
period: 2026
absolute_error_margin: 0.01
input:
people:
person1:
age: 53
employment_income: 61_592
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: AZ
output:
az_filing_status: SINGLE
az_agi: 61_592
az_standard_deduction: 16_100
# Taxable income = $61,592 - $16,100 = $45,492
az_taxable_income: 45_492
# Tax = $45,492 * 2.5% = $1,137.30
az_income_tax_before_non_refundable_credits: 1_137.30
Loading