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/8315.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Added the Pennsylvania Property Tax/Rent Rebate standard rebate.
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
- pa_property_tax_or_rent_rebate
- ri_property_tax_credit
- 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,10 @@
description: Pennsylvania limits age-based eligibility to filers at or above this age under the Property Tax/Rent Rebate program.
values:
2025-01-01: 65
metadata:
unit: year
period: year
label: Pennsylvania Property Tax/Rent Rebate age threshold
reference:
- title: Pennsylvania Department of Revenue | Property Tax/Rent Rebate Program
href: https://www.pa.gov/agencies/revenue/ptrr
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
description: Pennsylvania provides this rebate amount under the Property Tax/Rent Rebate program.
metadata:
threshold_unit: currency-USD
rate_unit: currency-USD
type: single_amount
period: year
label: Pennsylvania Property Tax/Rent Rebate amount
reference:
- title: Pennsylvania Department of Revenue | Property Tax/Rent Rebate Program
href: https://www.pa.gov/agencies/revenue/ptrr
brackets:
- threshold:
2025-01-01: 0
amount:
2025-01-01: 1_000
- threshold:
2025-01-01: 8_551
amount:
2025-01-01: 770
- threshold:
2025-01-01: 16_041
amount:
2025-01-01: 460
- threshold:
2025-01-01: 19_241
amount:
2025-01-01: 380
- threshold:
2025-01-01: 48_111
amount:
2025-01-01: 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: Pennsylvania limits disability-based eligibility to filers at or above this age under the Property Tax/Rent Rebate program.
values:
2025-01-01: 18
metadata:
unit: year
period: year
label: Pennsylvania Property Tax/Rent Rebate disability age threshold
reference:
- title: Pennsylvania Department of Revenue | Property Tax/Rent Rebate Program
href: https://www.pa.gov/agencies/revenue/ptrr
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: Pennsylvania limits income to this amount under the Property Tax/Rent Rebate program.
values:
2025-01-01: 48_110
metadata:
unit: currency-USD
period: year
label: Pennsylvania Property Tax/Rent Rebate income limit
reference:
- title: Pennsylvania Department of Revenue | Property Tax/Rent Rebate Program
href: https://www.pa.gov/agencies/revenue/ptrr
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: Pennsylvania limits widow and widower eligibility to filers at or above this age under the Property Tax/Rent Rebate program.
values:
2025-01-01: 50
metadata:
unit: year
period: year
label: Pennsylvania Property Tax/Rent Rebate widow and widower age threshold
reference:
- title: Pennsylvania Department of Revenue | Property Tax/Rent Rebate Program
href: https://www.pa.gov/agencies/revenue/ptrr
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
- name: Case 1, lowest income bracket receives the maximum standard rebate.
period: 2025
input:
people:
person1:
age: 65
real_estate_taxes: 2_000
tax_units:
tax_unit:
members: [person1]
adjusted_gross_income: 8_550
households:
household:
members: [person1]
state_code: PA
output:
pa_property_tax_or_rent_rebate: 1_000

- name: Case 2, rebate follows the second income bracket.
period: 2025
input:
people:
person1:
age: 65
real_estate_taxes: 2_000
tax_units:
tax_unit:
members: [person1]
adjusted_gross_income: 8_551
households:
household:
members: [person1]
state_code: PA
output:
pa_property_tax_or_rent_rebate: 770

- name: Case 3, rebate follows the top income bracket.
period: 2025
input:
people:
person1:
age: 65
rent: 9_600
tax_units:
tax_unit:
members: [person1]
adjusted_gross_income: 48_110
households:
household:
members: [person1]
state_code: PA
output:
pa_property_tax_or_rent_rebate: 380

- name: Case 4, rebate is limited by rent and property tax paid.
period: 2025
input:
people:
person1:
age: 65
real_estate_taxes: 300
tax_units:
tax_unit:
members: [person1]
adjusted_gross_income: 8_000
households:
household:
members: [person1]
state_code: PA
output:
pa_property_tax_or_rent_rebate: 300
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
- name: Case 1, senior homeowner under the income limit is eligible.
period: 2025
input:
people:
person1:
age: 65
real_estate_taxes: 2_000
tax_units:
tax_unit:
members: [person1]
adjusted_gross_income: 48_110
households:
household:
members: [person1]
state_code: PA
output:
pa_property_tax_or_rent_rebate_eligible: true

- name: Case 2, surviving spouse age 50 is eligible.
period: 2025
input:
people:
person1:
age: 50
rent: 9_600
tax_units:
tax_unit:
members: [person1]
filing_status: SURVIVING_SPOUSE
adjusted_gross_income: 30_000
households:
household:
members: [person1]
state_code: PA
output:
pa_property_tax_or_rent_rebate_eligible: true

- name: Case 3, disabled adult is eligible.
period: 2025
input:
people:
person1:
age: 18
is_disabled: true
rent: 9_600
tax_units:
tax_unit:
members: [person1]
adjusted_gross_income: 30_000
households:
household:
members: [person1]
state_code: PA
output:
pa_property_tax_or_rent_rebate_eligible: true

- name: Case 4, income above the limit is ineligible.
period: 2025
input:
people:
person1:
age: 65
real_estate_taxes: 2_000
tax_units:
tax_unit:
members: [person1]
adjusted_gross_income: 48_111
households:
household:
members: [person1]
state_code: PA
output:
pa_property_tax_or_rent_rebate_eligible: false

- name: Case 5, filer without rent or property tax is ineligible.
period: 2025
input:
people:
person1:
age: 65
tax_units:
tax_unit:
members: [person1]
adjusted_gross_income: 30_000
households:
household:
members: [person1]
state_code: PA
output:
pa_property_tax_or_rent_rebate_eligible: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from policyengine_us.model_api import *


class pa_property_tax_or_rent_rebate(Variable):
value_type = float
entity = TaxUnit
label = "Pennsylvania Property Tax/Rent Rebate"
unit = USD
definition_period = YEAR
reference = "https://www.pa.gov/agencies/revenue/ptrr"
defined_for = "pa_property_tax_or_rent_rebate_eligible"

def formula(tax_unit, period, parameters):
p = parameters(period).gov.states.pa.tax.property.property_tax_or_rent_rebate
income = tax_unit("adjusted_gross_income", period)
rent_and_property_tax = add(tax_unit, period, ["rent", "real_estate_taxes"])
return min_(p.amount.calc(income), rent_and_property_tax)
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from policyengine_us.model_api import *


class pa_property_tax_or_rent_rebate_eligible(Variable):
value_type = bool
entity = TaxUnit
label = "Eligible for the Pennsylvania Property Tax/Rent Rebate"
definition_period = YEAR
reference = "https://www.pa.gov/agencies/revenue/ptrr"
defined_for = StateCode.PA

def formula(tax_unit, period, parameters):
p = parameters(period).gov.states.pa.tax.property.property_tax_or_rent_rebate
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_eligible = tax_unit.any((age >= p.age_threshold) & head_or_spouse)
widow_eligible = (
filing_status == filing_status.possible_values.SURVIVING_SPOUSE
) & tax_unit.any(
(age >= p.widow_age_threshold) & head_or_spouse,
)
disabled_eligible = tax_unit.any(
(age >= p.disability_age_threshold) & is_disabled & head_or_spouse,
)

return (
(age_eligible | widow_eligible | disabled_eligible)
& (tax_unit("adjusted_gross_income", period) <= p.income_limit)
& (add(tax_unit, period, ["rent", "real_estate_taxes"]) > 0)
)
Loading