Skip to content
Open
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/statute-bugs-ca-caleitc-itin-children.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Count qualifying children with an ITIN or SSN for California's earned income tax credit from 2020.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
absolute_error_margin: 20
input:
employment_income: 20_500
eitc_child_count: 0
ca_eitc_child_count: 0
output:
ca_eitc: 88

Expand Down Expand Up @@ -54,3 +54,115 @@
ca_income_tax_before_refundable_credits: 0
ca_eitc: 0 # too much investment income to be CalEITC eligible
ca_income_tax: 0

- name: A qualifying ITIN child uses the one-child CalEITC schedule
period: 2024
absolute_error_margin: 0.01
input:
people:
parent:
age: 35
is_tax_unit_head: true
is_eitc_qualifying_child: false
ssn_card_type: CITIZEN
has_tin: true
child:
age: 8
is_tax_unit_dependent: true
is_eitc_qualifying_child: true
ssn_card_type: NONE
has_tin: true
tax_units:
unit:
members: [parent, child]
ca_eitc_eligible: true
ca_eitc_earned_income: 1_000
adjusted_gross_income: 1_000
households:
household:
members: [parent, child]
state_code: CA
output:
eitc_child_count: 0
ca_eitc_child_count: 1
# $1,000 * .34 * .85, rather than the childless $65.025.
ca_eitc: 289

- name: A child without an SSN or ITIN does not increase CalEITC
period: 2024
absolute_error_margin: 0.01
input:
people:
parent:
age: 35
is_tax_unit_head: true
is_eitc_qualifying_child: false
ssn_card_type: CITIZEN
has_tin: true
child:
age: 8
is_tax_unit_dependent: true
is_eitc_qualifying_child: true
ssn_card_type: NONE
has_tin: false
tax_units:
unit:
members: [parent, child]
ca_eitc_eligible: true
ca_eitc_earned_income: 1_000
adjusted_gross_income: 1_000
households:
household:
members: [parent, child]
state_code: CA
output:
eitc_child_count: 0
ca_eitc_child_count: 0
ca_eitc: 65.025

- name: Four ITIN qualifying children use the three-or-more-child CalEITC schedule
period: 2024
absolute_error_margin: 0.01
input:
people:
parent:
age: 35
is_tax_unit_head: true
is_eitc_qualifying_child: false
ssn_card_type: CITIZEN
has_tin: true
child1:
age: 12
is_eitc_qualifying_child: true
ssn_card_type: NONE
has_tin: true
child2:
age: 10
is_eitc_qualifying_child: true
ssn_card_type: NONE
has_tin: true
child3:
age: 8
is_eitc_qualifying_child: true
ssn_card_type: NONE
has_tin: true
child4:
age: 6
is_eitc_qualifying_child: true
ssn_card_type: NONE
has_tin: true
tax_units:
unit:
members: [parent, child1, child2, child3, child4]
ca_eitc_eligible: true
ca_eitc_earned_income: 1_000
adjusted_gross_income: 1_000
households:
household:
members: [parent, child1, child2, child3, child4]
state_code: CA
output:
eitc_child_count: 0
ca_eitc_child_count: 4
# $1,000 * .45 * .85; the count itself is not capped at three.
ca_eitc: 382.5
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
- name: An ITIN qualifying child does not count before the 2020 extension
period: 2019
input:
people:
parent:
age: 35
is_eitc_qualifying_child: false
ssn_card_type: CITIZEN
has_tin: true
child:
age: 8
is_eitc_qualifying_child: true
ssn_card_type: NONE
has_tin: true
tax_units:
unit:
members: [parent, child]
households:
household:
members: [parent, child]
state_code: CA
output:
eitc_child_count: 0
ca_eitc_child_count: 0

- name: An ITIN qualifying child counts starting in 2020 without changing the federal count
period: 2020
input:
people:
parent:
age: 35
is_eitc_qualifying_child: false
ssn_card_type: CITIZEN
has_tin: true
child:
age: 8
is_eitc_qualifying_child: true
ssn_card_type: NONE
has_tin: true
tax_units:
unit:
members: [parent, child]
households:
household:
members: [parent, child]
state_code: CA
output:
eitc_child_count: 0
ca_eitc_child_count: 1

- name: California counts qualifying SSN and ITIN children but excludes missing IDs and nonqualifying dependents
period: 2024
input:
people:
parent:
age: 35
is_eitc_qualifying_child: false
ssn_card_type: CITIZEN
has_tin: true
ssn_child:
age: 12
is_eitc_qualifying_child: true
ssn_card_type: CITIZEN
has_tin: true
itin_child:
age: 10
is_eitc_qualifying_child: true
ssn_card_type: NONE
has_tin: true
child_without_id:
age: 8
is_eitc_qualifying_child: true
ssn_card_type: NONE
has_tin: false
nonqualifying_dependent:
age: 25
is_eitc_qualifying_child: false
ssn_card_type: NONE
has_tin: true
tax_units:
unit:
members: [parent, ssn_child, itin_child, child_without_id, nonqualifying_dependent]
households:
household:
members: [parent, ssn_child, itin_child, child_without_id, nonqualifying_dependent]
state_code: CA
output:
eitc_child_count: 1
ca_eitc_child_count: 2

- name: A qualifying child with an SSN not valid for employment counts for California
period: 2024
input:
people:
parent:
age: 35
is_eitc_qualifying_child: false
ssn_card_type: CITIZEN
has_tin: true
child:
age: 8
is_eitc_qualifying_child: true
ssn_card_type: OTHER_NON_CITIZEN
has_tin: true
tax_units:
unit:
members: [parent, child]
households:
household:
members: [parent, child]
state_code: CA
output:
eitc_child_count: 0
ca_eitc_child_count: 1
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
age: [35, 35, 35, 35]
state_code: [CA, CA, CA, CA]
employment_income: [31_950, 31_950, 31_950, 31_950]
eitc_child_count: [0, 1, 2, 3]
ca_eitc_child_count: [0, 1, 2, 3]
output:
ca_eitc_eligible: [true, true, true, true]
ca_eitc: [0.009155, 0.030057, 0.041937, 0.042520]
Expand All @@ -49,7 +49,7 @@
state_code: [CA, CA, CA, CA]
employment_income: [31_951, 31_951, 31_951, 31_951]
adjusted_gross_income: [10_000, 10_000, 10_000, 10_000]
eitc_child_count: [0, 1, 2, 3]
ca_eitc_child_count: [0, 1, 2, 3]
output:
ca_eitc_eligible: [true, true, true, true]
ca_eitc: [0, 0, 0, 0]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
absolute_error_margin: 20
input:
state_code: CA
eitc_child_count: 3
ca_eitc_child_count: 3
employment_income: 8_000
# AGI equals earned income so the worksheet's earned-income/AGI credit
# comparison isolates the table value.
Expand All @@ -18,7 +18,7 @@
absolute_error_margin: 6
input:
state_code: CA
eitc_child_count: 1
ca_eitc_child_count: 1
employment_income: 6_400
adjusted_gross_income: 6_400
output:
Expand All @@ -30,7 +30,7 @@
absolute_error_margin: 2
input:
state_code: CA
eitc_child_count: 0
ca_eitc_child_count: 0
employment_income: 9_951
adjusted_gross_income: 9_951
output:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class ca_eitc(Variable):
def formula(tax_unit, period, parameters):
p = parameters(period).gov.states.ca.tax.income.credits.earned_income

child_count = tax_unit("eitc_child_count", period)
child_count = tax_unit("ca_eitc_child_count", period)

phase_in_rate = p.phase_in.rate.calc(child_count) * p.adjustment.factor
phase_in_max_income = p.earned_income_amount.calc(child_count)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from policyengine_us.model_api import *


class ca_eitc_child_count(Variable):
value_type = int
entity = TaxUnit
label = "CalEITC qualifying children"
definition_period = YEAR
documentation = """
Number of otherwise qualifying children who meet the CalEITC
identification requirement. Beginning in 2020, California accepts an
ITIN or SSN rather than requiring a work-valid SSN. Earlier years use
the federal EITC child count.
"""
reference = (
# AB 1876, section 1, R&TC 17052(p): ITIN or SSN from 2020.
"https://leginfo.legislature.ca.gov/faces/billTextClient.xhtml?bill_id=201920200AB1876",
# FTB 3514, Step 1 question 3 and Line 7: qualifying children's IDs.
"https://www.ftb.ca.gov/forms/2020/2020-3514-instructions.html",
)

def formula(tax_unit, period, parameters):
return tax_unit("eitc_child_count", period)

def formula_2020(tax_unit, period, parameters):
person = tax_unit.members
is_child = person("is_eitc_qualifying_child", period)
has_tin = person("has_tin", period)
return tax_unit.sum(is_child & has_tin)
Loading