Skip to content

Commit

Permalink
Puerto Rico Earned Income Credit
Browse files Browse the repository at this point in the history
Fixes #5467
  • Loading branch information
llennemann committed Feb 4, 2025
1 parent a5ba904 commit f50bd4e
Show file tree
Hide file tree
Showing 10 changed files with 42 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
description: Puerto Rico limits EITC eligibility to filers below or equal to this age.
description: Puerto Rico limits the Earned Income Tax Credit to filers of this age or below.
values:
2023-01-01: 65
metadata:
unit: year
label: EITC maximum age
period: year
label: Puerto Rico earned income credit maximum age
reference:
- title: Schedule CT Individual, Earned Income Credit, 2023
href: https://hacienda.pr.gov/sites/default/files/schedule_ct_rev._jul_5_23_informative_-_instructions.pdf#page=1
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
description: Puerto Rico limits EITC eligibility to people of this age or older.
description: Puerto Rico limits the Earned Income Tax Credit to filers of this age or older.
values:
2023-01-01: 19
metadata:
unit: year
label: EITC minimum age
period: year
label: Puerto Rico earned income Credit minimum age
reference:
- title: Schedule CT Individual, Earned Income Credit, 2023
href: https://hacienda.pr.gov/sites/default/files/schedule_ct_rev._jul_5_23_informative_-_instructions.pdf#page=1
href: https://hacienda.pr.gov/sites/default/files/schedule_ct_rev._jul_5_23_informative_-_instructions.pdf#page=1
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
description: Puerto Rico makes married filing separate filers eligible for the EITC when this is true.
values:
2023-01-01: false
metadata:
unit: bool
label: Puerto Rico earned income credit separate filers eligible
reference:
- title:
href:
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
description: Puerto Rico limits the earned income credit to filers with investment income below this threshold.
values:
2010-12-31: 2_200
2023-01-01: 10_000
metadata:
unit: currency-USD
label: Puerto Rico earned income credit investment income limit
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
description: Puerto Rico provides this maximum earned income credit.
brackets:
- threshold:
2010-12-31: 0
2023-01-01: 0
amount:
2010-12-31: 1656
2023-01-01: 1_656
- threshold:
2010-12-31: 1
2023-01-01: 1
amount:
2010-12-31: 3864
2023-01-01: 3_864
- threshold:
2010-12-31: 2
2023-01-01: 2
amount:
2010-12-31: 6072
2023-01-01: 6_072
- threshold:
2010-12-31: 3
2023-01-01: 3
amount:
2010-12-31: 7173
2023-01-01: 7_173

metadata:
threshold_unit: child
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ values:
metadata:
rate_unit: /1
threshold_unit:
type_marginal: marginal_rate
type: marginal_rate
label: Puerto Rico earned income credit phase in rate
period: year
reference:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# TODO: phase-in folder, 0 child, 1 child, etc. for phase-out-rate
# phase-out: based on children, based on income
# non-married vs. married threshold based on number of kids, file for rate
# pull those values separately in the variables
description: Puerto Rico phases the earned income credit out at this rate of state gross income.
brackets:
# if below the threshold, no phase out
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
class pr_earned_income_child_count(Variable):
value_type = int
entity = TaxUnit
label = "EITC-qualifying children"
label = "Puerto Rico EITC-qualifying children"
definition_period = YEAR
reference =

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,12 @@ def formula(person, period, parameters):
period
).gov.territories.pr.tax.income.credits.earned_income

# calculate # children
num_children = person.tax_unit("pr_earned_income_child_count", period)

# compute credit amount
gross_income = person("pr_gross_income_person", period)
# if in the lower bracket: gross_income * rate. if higher, use max credit
phase_in = min_(gross_income * p.phase_in_rate, p.max_amount)
phase_out = p.phase_out_rate.calc(gross_income)

return phase_in - phase_out
return phase_in - phase_out
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ class pr_earned_income_credit_eligible(Variable):
reference = "https://casetext.com/statute/laws-of-puerto-rico/title-thirteen-taxation-and-finance/subtitle-17-internal-revenue-code-of-2011/part-ii-income-taxes/chapter-1007-credits-against-tax/subchapter-b-refundable-credits/30211-earned-income-credit"

def formula(person, period, parameters):
# workflow:
# WRITE ME:
# taxpayer or spouse must be 19 or older, not a dependent, not filing as married filing separately
p = parameters(
period
).gov.territories.pr.tax.income.credits.earned_income.investment_income
).gov.territories.pr.tax.income.credits.earned_income
head_or_spouse = person("is_tax_unit_head_or_spouse", period)
investment_income = person(
"pr_earned_income_credit_investment_income", period
)
investment_income_amount_under_limit = investment_income <= p.limit
return head_or_spouse & investment_income_amount_under_limit
investment_income_amount_under_limit = investment_income <= p.investment_income.limit
age = person("age", period)
age_within_range = age >= p.eligibility.min & age <= p.eligibility.max

return head_or_spouse & investment_income_amount_under_limit & age_within_range

0 comments on commit f50bd4e

Please sign in to comment.