Skip to content
Draft
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/8317.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Added Utah Homeowner's/Renter's Relief.
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,26 @@ values:
- wi_homestead_credit
- wi_property_tax_credit
- wv_homestead_excess_property_tax_credit
2025-01-01:
- az_property_tax_credit
- ct_property_tax_credit
- dc_ptc
- il_property_tax_credit
- ma_senior_circuit_breaker
- me_property_tax_fairness_credit
- mi_homestead_property_tax_credit
- mo_property_tax_credit
- mt_elderly_homeowner_or_renter_credit
- mt_property_tax_rebate
- nj_property_tax_credit
- nm_property_tax_rebate
- ny_real_property_tax_credit
- ok_ptc
- ri_property_tax_credit
- ut_homeowner_renter_relief
- wi_homestead_credit
- wi_property_tax_credit
- wv_homestead_excess_property_tax_credit

metadata:
unit: list
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
description: Utah limits age to this threshold under the Homeowner's/Renter's Relief program.
values:
2025-01-01: 66
2026-01-01: 67
metadata:
unit: year
period: year
label: Utah homeowner's/renter's relief age threshold
reference:
- title: Utah State Tax Commission Renter's Credit eligibility
href: https://tax.utah.gov/relief/renter-refund/
- title: Utah Code Section 59-2a-101
href: https://le.utah.gov/xcode/Title59/Chapter2A/C59-2a_2026010120250507.pdf#page=1
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
description: Utah limits household income to this amount under the Homeowner's/Renter's Relief program.
values:
2025-01-01: 44_221
metadata:
unit: currency-USD
period: year
label: Utah homeowner's/renter's relief income limit
reference:
- title: Utah State Tax Commission Homeowner's or Renter's Relief 2025 Household Income Schedule
href: https://tax.utah.gov/relief/homeowner-renter-relief/
- title: 2025 Utah TC-90CB Renter Refund Application
href: https://files.tax.utah.gov/tax/forms/current/tc-90cb.pdf#page=1
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
description: Utah provides this maximum credit amount under the Homeowner's/Renter's Relief program.
metadata:
type: single_amount
threshold_unit: currency-USD
amount_unit: currency-USD
period: year
label: Utah homeowner's/renter's relief maximum amount
reference:
- title: Utah State Tax Commission Homeowner's or Renter's Relief 2025 Household Income Schedule
href: https://tax.utah.gov/relief/homeowner-renter-relief/
- title: Utah Code Section 59-2a-305
href: https://le.utah.gov/xcode/Title59/Chapter2A/C59-2a_2026010120250507.pdf#page=14
brackets:
- threshold:
2025-01-01: 0
amount:
2025-01-01: 1_412
- threshold:
2025-01-01: 15_034
amount:
2025-01-01: 1_245
- threshold:
2025-01-01: 20_049
amount:
2025-01-01: 1_082
- threshold:
2025-01-01: 25_058
amount:
2025-01-01: 835
- threshold:
2025-01-01: 30_070
amount:
2025-01-01: 674
- threshold:
2025-01-01: 35_084
amount:
2025-01-01: 429
- threshold:
2025-01-01: 39_797
amount:
2025-01-01: 262
- threshold:
2025-01-01: 44_222
amount:
2025-01-01: 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
description: Utah provides this percentage of gross rent under the Homeowner's/Renter's Relief program.
metadata:
type: single_amount
threshold_unit: currency-USD
amount_unit: /1
period: year
label: Utah homeowner's/renter's relief renter rate
reference:
- title: 2025 Utah TC-90CB Renter Refund Application
href: https://files.tax.utah.gov/tax/forms/current/tc-90cb.pdf#page=4
- title: Utah Code Section 59-2a-205
href: https://le.utah.gov/xcode/Title59/Chapter2A/C59-2a_2026010120250507.pdf#page=11
brackets:
- threshold:
2025-01-01: 0
amount:
2025-01-01: 0.095
- threshold:
2025-01-01: 15_034
amount:
2025-01-01: 0.085
- threshold:
2025-01-01: 20_049
amount:
2025-01-01: 0.07
- threshold:
2025-01-01: 25_058
amount:
2025-01-01: 0.055
- threshold:
2025-01-01: 30_070
amount:
2025-01-01: 0.04
- threshold:
2025-01-01: 35_084
amount:
2025-01-01: 0.03
- threshold:
2025-01-01: 39_797
amount:
2025-01-01: 0.025
- threshold:
2025-01-01: 44_222
amount:
2025-01-01: 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
- name: Case 1, renter credit based on gross rent.
period: 2025
absolute_error_margin: 0.01
input:
age_head: 66
adjusted_gross_income: 10_000
rent: 12_000
state_code: UT
output:
ut_homeowner_renter_relief: 1_140

- name: Case 2, renter credit capped by maximum amount.
period: 2025
absolute_error_margin: 0.01
input:
age_head: 66
adjusted_gross_income: 10_000
rent: 20_000
state_code: UT
output:
ut_homeowner_renter_relief: 1_412

- name: Case 3, renter credit in a middle income bracket.
period: 2025
absolute_error_margin: 0.01
input:
age_head: 66
adjusted_gross_income: 25_058
rent: 10_000
state_code: UT
output:
ut_homeowner_renter_relief: 550

- name: Case 4, homeowner credit capped by the income schedule.
period: 2025
absolute_error_margin: 0.01
input:
age_head: 66
adjusted_gross_income: 35_084
rent: 0
real_estate_taxes: 600
state_code: UT
output:
ut_homeowner_renter_relief: 429

- name: Case 5, homeowner credit capped by property tax paid.
period: 2025
absolute_error_margin: 0.01
input:
age_head: 66
adjusted_gross_income: 10_000
rent: 0
real_estate_taxes: 900
state_code: UT
output:
ut_homeowner_renter_relief: 900

- name: Case 6, surviving spouse renter in the top eligible bracket.
period: 2025
absolute_error_margin: 0.01
input:
age_head: 45
adjusted_gross_income: 39_797
filing_status: SURVIVING_SPOUSE
rent: 10_000
state_code: UT
output:
ut_homeowner_renter_relief: 250

- name: Case 7, renter and homeowner amounts can both apply.
period: 2025
absolute_error_margin: 0.01
input:
age_head: 66
adjusted_gross_income: 10_000
rent: 10_000
real_estate_taxes: 600
state_code: UT
output:
ut_homeowner_renter_relief: 1_550

- name: Case 8, ineligible claimant receives no relief.
period: 2025
input:
age_head: 60
adjusted_gross_income: 10_000
rent: 12_000
state_code: UT
output:
ut_homeowner_renter_relief: 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
- name: Case 1, age-eligible renter.
period: 2025
input:
age_head: 66
adjusted_gross_income: 15_000
rent: 12_000
state_code: UT
output:
ut_homeowner_renter_relief_eligible: true

- name: Case 2, surviving spouse under the age threshold.
period: 2025
input:
age_head: 45
adjusted_gross_income: 15_000
filing_status: SURVIVING_SPOUSE
rent: 12_000
state_code: UT
output:
ut_homeowner_renter_relief_eligible: true

- name: Case 3, income above the limit.
period: 2025
input:
age_head: 66
adjusted_gross_income: 44_222
rent: 12_000
state_code: UT
output:
ut_homeowner_renter_relief_eligible: false

- name: Case 4, no rent or property tax paid.
period: 2025
input:
age_head: 66
adjusted_gross_income: 15_000
rent: 0
real_estate_taxes: 0
state_code: UT
output:
ut_homeowner_renter_relief_eligible: false

- name: Case 5, age 66 after the transition year.
period: 2026
input:
age_head: 66
adjusted_gross_income: 15_000
rent: 12_000
state_code: UT
output:
ut_homeowner_renter_relief_eligible: false

- name: Case 6, age 67 after the transition year.
period: 2026
input:
age_head: 67
adjusted_gross_income: 15_000
rent: 12_000
state_code: UT
output:
ut_homeowner_renter_relief_eligible: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from policyengine_us.model_api import *


class ut_homeowner_renter_relief(Variable):
value_type = float
entity = TaxUnit
label = "Utah Homeowner's/Renter's Relief"
unit = USD
definition_period = YEAR
reference = (
"https://tax.utah.gov/relief/homeowner-renter-relief/",
"https://files.tax.utah.gov/tax/forms/current/tc-90cb.pdf#page=4",
"https://le.utah.gov/xcode/Title59/Chapter2A/C59-2a_2026010120250507.pdf#page=11",
"https://le.utah.gov/xcode/Title59/Chapter2A/C59-2a_2026010120250507.pdf#page=14",
)
defined_for = "ut_homeowner_renter_relief_eligible"

def formula(tax_unit, period, parameters):
p = parameters(period).gov.states.ut.tax.property.homeowner_renter_relief
income = tax_unit("adjusted_gross_income", period)
maximum = p.maximum.calc(income)
rent = add(tax_unit, period, ["rent"])
renter_credit = min_(rent * p.renter.rate.calc(income), maximum)
homeowner_credit = min_(add(tax_unit, period, ["real_estate_taxes"]), maximum)
return renter_credit + homeowner_credit
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from policyengine_us.model_api import *


class ut_homeowner_renter_relief_eligible(Variable):
value_type = bool
entity = TaxUnit
label = "Eligible for Utah Homeowner's/Renter's Relief"
definition_period = YEAR
reference = (
"https://tax.utah.gov/relief/homeowner-renter-relief/",
"https://tax.utah.gov/relief/renter-refund/",
"https://le.utah.gov/xcode/Title59/Chapter2A/C59-2a_2026010120250507.pdf#page=1",
)
defined_for = StateCode.UT

def formula(tax_unit, period, parameters):
p = parameters(period).gov.states.ut.tax.property.homeowner_renter_relief
age_head = tax_unit("age_head", period)
age_spouse = tax_unit("age_spouse", period)
filing_status = tax_unit("filing_status", period)
statuses = filing_status.possible_values
age_eligible = (age_head >= p.age_threshold) | (age_spouse >= p.age_threshold)
surviving_spouse = filing_status == statuses.SURVIVING_SPOUSE
income = tax_unit("adjusted_gross_income", period)
paid_rent_or_property_tax = (
add(tax_unit, period, ["rent", "real_estate_taxes"]) > 0
)
return (
(age_eligible | surviving_spouse)
& (income <= p.income_limit)
& paid_rent_or_property_tax
)
Loading