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/8312.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Added the Texas school district residence homestead exemptions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: Texas limits age-based eligibility to filers at or above this age under the Age 65 or Older or Disabled Persons program.
values:
2025-01-01: 65
metadata:
unit: year
period: year
label: Texas age 65 or older residence homestead exemption age threshold
reference:
- title: Texas Comptroller | Property Tax Exemptions
href: https://comptroller.texas.gov/taxes/property-tax/exemptions/
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
description: Texas provides this amount as a school district residence homestead exemption under the Residence Homestead Exemption program.
values:
2025-01-01: 140_000
metadata:
unit: currency-USD
period: year
label: Texas school district residence homestead exemption amount
reference:
- title: Texas Comptroller | Property Tax Exemptions
href: https://comptroller.texas.gov/taxes/property-tax/exemptions/
- title: Texas Education Agency | Tax Year 2025 Maximum Compressed Tax Rates
href: https://tea.texas.gov/sites/default/files/taa-2025-06-12-tax-year-2025-maximum-compressed-tax-rates.pdf#page=2
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
description: Texas provides this amount as an additional school district residence homestead exemption under the Age 65 or Older or Disabled Persons program.
values:
2025-01-01: 60_000
metadata:
unit: currency-USD
period: year
label: Texas additional school district residence homestead exemption amount for age 65 or older or disabled homeowners
reference:
- title: Texas Comptroller | Property Tax Exemptions
href: https://comptroller.texas.gov/taxes/property-tax/exemptions/
- title: Texas Education Agency | Tax Year 2025 Maximum Compressed Tax Rates
href: https://tea.texas.gov/sites/default/files/taa-2025-06-12-tax-year-2025-maximum-compressed-tax-rates.pdf#page=2
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: Texas limits surviving spouse eligibility to filers at or above this age under the Age 65 or Older or Disabled Persons program.
values:
2025-01-01: 55
metadata:
unit: year
period: year
label: Texas age 65 or older residence homestead exemption surviving spouse age threshold
reference:
- title: Texas Comptroller | Property Tax Exemptions
href: https://comptroller.texas.gov/taxes/property-tax/exemptions/
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
- name: Case 1, additional exemption is capped at the statutory amount.
period: 2025
input:
people:
person1:
age: 65
assessed_property_value: 300_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: TX
output:
tx_over_65_or_disabled_school_district_homestead_exemption: 60_000
tx_total_school_district_homestead_exemption: 200_000

- name: Case 2, additional exemption is limited to remaining assessed property value.
period: 2025
input:
people:
person1:
age: 65
assessed_property_value: 180_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: TX
output:
tx_over_65_or_disabled_school_district_homestead_exemption: 40_000
tx_total_school_district_homestead_exemption: 180_000

- name: Case 3, ineligible filer gets no additional exemption.
period: 2025
input:
people:
person1:
age: 64
assessed_property_value: 300_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: TX
output:
tx_over_65_or_disabled_school_district_homestead_exemption: 0
tx_total_school_district_homestead_exemption: 140_000
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
- name: Case 1, age 65 homeowner is eligible for the additional exemption.
period: 2025
input:
people:
person1:
age: 65
assessed_property_value: 300_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: TX
output:
tx_over_65_or_disabled_school_district_homestead_exemption_eligible: true

- name: Case 2, disabled homeowner under age 65 is eligible for the additional exemption.
period: 2025
input:
people:
person1:
age: 40
is_disabled: true
assessed_property_value: 300_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: TX
output:
tx_over_65_or_disabled_school_district_homestead_exemption_eligible: true

- name: Case 3, non-senior homeowner without disability is ineligible for the additional exemption.
period: 2025
input:
people:
person1:
age: 64
assessed_property_value: 300_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: TX
output:
tx_over_65_or_disabled_school_district_homestead_exemption_eligible: false

- name: Case 4, surviving spouse at the age threshold is eligible.
period: 2025
input:
people:
person1:
age: 55
assessed_property_value: 300_000
tax_units:
tax_unit:
members: [person1]
filing_status: SURVIVING_SPOUSE
households:
household:
members: [person1]
state_code: TX
output:
tx_over_65_or_disabled_school_district_homestead_exemption_eligible: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
- name: Case 1, general exemption is capped at the statutory amount.
period: 2025
input:
people:
person1:
age: 40
assessed_property_value: 300_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: TX
output:
tx_school_district_homestead_exemption: 140_000

- name: Case 2, general exemption is limited to assessed property value.
period: 2025
input:
people:
person1:
age: 40
assessed_property_value: 100_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: TX
output:
tx_school_district_homestead_exemption: 100_000
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
- name: Case 1, homeowner is eligible for the general school district exemption.
period: 2025
input:
people:
person1:
age: 40
assessed_property_value: 300_000
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: TX
output:
tx_school_district_homestead_exemption_eligible: true

- name: Case 2, filer without assessed property is ineligible.
period: 2025
input:
people:
person1:
age: 40
tax_units:
tax_unit:
members: [person1]
households:
household:
members: [person1]
state_code: TX
output:
tx_school_district_homestead_exemption_eligible: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from policyengine_us.model_api import *


class tx_over_65_or_disabled_school_district_homestead_exemption(Variable):
value_type = float
entity = TaxUnit
label = "Texas age 65 or older or disabled school district residence homestead exemption"
unit = USD
definition_period = YEAR
reference = "https://comptroller.texas.gov/taxes/property-tax/exemptions/"
defined_for = "tx_over_65_or_disabled_school_district_homestead_exemption_eligible"

def formula(tax_unit, period, parameters):
remaining_value = max_(
add(tax_unit, period, ["assessed_property_value"])
- tax_unit("tx_school_district_homestead_exemption", period),
0,
)
return min_(
remaining_value,
parameters(
period
).gov.states.tx.tax.property.school_district_homestead_exemption.over_65_or_disabled_amount,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from policyengine_us.model_api import *


class tx_over_65_or_disabled_school_district_homestead_exemption_eligible(Variable):
value_type = bool
entity = TaxUnit
label = "Eligible for the Texas age 65 or older or disabled school district residence homestead exemption"
definition_period = YEAR
reference = "https://comptroller.texas.gov/taxes/property-tax/exemptions/"
defined_for = StateCode.TX

def formula(tax_unit, period, parameters):
p = parameters(
period
).gov.states.tx.tax.property.school_district_homestead_exemption
filing_status = tax_unit("filing_status", period)
person = tax_unit.members
head_or_spouse = person("is_tax_unit_head_or_spouse", period)
age = person("age", period.this_year)
is_disabled = person("is_disabled", period)
age_or_disability_eligible = tax_unit.any(
((age >= p.age_threshold) | is_disabled) & head_or_spouse,
)
surviving_spouse = (
filing_status == filing_status.possible_values.SURVIVING_SPOUSE
) & tax_unit.any(
(age >= p.surviving_spouse_age_threshold) & head_or_spouse,
)

return (age_or_disability_eligible | surviving_spouse) & tax_unit(
"tx_school_district_homestead_exemption_eligible", period
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from policyengine_us.model_api import *


class tx_school_district_homestead_exemption(Variable):
value_type = float
entity = TaxUnit
label = "Texas school district residence homestead exemption"
unit = USD
definition_period = YEAR
reference = "https://comptroller.texas.gov/taxes/property-tax/exemptions/"
defined_for = "tx_school_district_homestead_exemption_eligible"

def formula(tax_unit, period, parameters):
return min_(
add(tax_unit, period, ["assessed_property_value"]),
parameters(
period
).gov.states.tx.tax.property.school_district_homestead_exemption.general_amount,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from policyengine_us.model_api import *


class tx_school_district_homestead_exemption_eligible(Variable):
value_type = bool
entity = TaxUnit
label = "Eligible for the Texas school district residence homestead exemption"
definition_period = YEAR
reference = "https://comptroller.texas.gov/taxes/property-tax/exemptions/"
defined_for = StateCode.TX

def formula(tax_unit, period, parameters):
return add(tax_unit, period, ["assessed_property_value"]) > 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from policyengine_us.model_api import *


class tx_total_school_district_homestead_exemption(Variable):
value_type = float
entity = TaxUnit
label = "Texas total school district residence homestead exemption"
unit = USD
definition_period = YEAR
reference = "https://comptroller.texas.gov/taxes/property-tax/exemptions/"
defined_for = "tx_school_district_homestead_exemption_eligible"
adds = [
"tx_school_district_homestead_exemption",
"tx_over_65_or_disabled_school_district_homestead_exemption",
]
Loading