From 7adf6894226e54745edb5ebb961eadddacc1224b Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 6 Oct 2026 19:10:29 -0400 Subject: [PATCH] Compute New York's 2026 child and dependent care credit under Tax Law 606(c-2) L.2026, ch. 59 (S.9009-C), Part A, signed 2026-05-28, limited the 606(c)(1) credit (a percentage of the federal section 21 credit) to taxable years beginning before 2026 and added 606(c-2) for later years: qualifying expenses, capped at $3,000 / $6,000 / $7,500 / $8,500 / $9,000 for one to five or more qualifying individuals and at earned income (the lesser spouse's on a joint return), times an applicable percentage of 55% less 0.00025 percentage points per dollar of New York AGI above $15,000, never below 4%, less $20 for each $1,000 of New York AGI above $750,000. policyengine-us kept applying the 606(c) formula in 2026. Add the (c-2) parameters under gov.states.ny.tax.income.credits.cdcc .decoupled, ny_cdcc_qualifying_expenses and ny_cdcc_applicable_percentage, and branch ny_cdcc on decoupled.in_effect. The credit stays in the 2026 refundable list, and nyc_cdcc keeps deriving from ny_cdcc, as Part A sec. 4 amends NYC Admin. Code 11-1706(e)(1) to reference (c) and (c-2). Tests: the PolicyBench scenario_082 household (reference audit 2026-10-05: ny_cdcc $880.61, ny_refundable_credits $1,187.61 instead of $667), the 2025 credit unchanged, rate endpoints and the 4% floor, expense caps, the earned-income limit, dependent care accounts, the high-income reduction, married filing separately and dependent filers. Co-Authored-By: Claude Opus 5.5 --- changelog.d/ny-cdcc-2026-new-credit.fixed.md | 1 + .../credits/cdcc/decoupled/expense_cap.yaml | 33 +++++ .../credits/cdcc/decoupled/in_effect.yaml | 17 +++ .../credits/cdcc/decoupled/rate/max.yaml | 12 ++ .../credits/cdcc/decoupled/rate/min.yaml | 12 ++ .../cdcc/decoupled/rate/phase_down_rate.yaml | 14 ++ .../decoupled/rate/phase_down_threshold.yaml | 12 ++ .../cdcc/decoupled/reduction/amount.yaml | 12 ++ .../cdcc/decoupled/reduction/increment.yaml | 12 ++ .../cdcc/decoupled/reduction/threshold.yaml | 12 ++ .../ny/tax/income/credits/ny_cdcc_2026.yaml | 128 +++++++++++++++++ .../ny_cdcc_applicable_percentage.yaml | 65 +++++++++ .../credits/ny_cdcc_qualifying_expenses.yaml | 134 ++++++++++++++++++ .../ny/tax/income/credits/cdcc/ny_cdcc.py | 18 ++- .../cdcc/ny_cdcc_applicable_percentage.py | 17 +++ .../cdcc/ny_cdcc_qualifying_expenses.py | 34 +++++ 16 files changed, 532 insertions(+), 1 deletion(-) create mode 100644 changelog.d/ny-cdcc-2026-new-credit.fixed.md create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/expense_cap.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/in_effect.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/max.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/min.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/phase_down_rate.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/phase_down_threshold.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/amount.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/increment.yaml create mode 100644 policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/threshold.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_2026.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_applicable_percentage.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_qualifying_expenses.yaml create mode 100644 policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc_applicable_percentage.py create mode 100644 policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc_qualifying_expenses.py diff --git a/changelog.d/ny-cdcc-2026-new-credit.fixed.md b/changelog.d/ny-cdcc-2026-new-credit.fixed.md new file mode 100644 index 00000000000..b68a973a560 --- /dev/null +++ b/changelog.d/ny-cdcc-2026-new-credit.fixed.md @@ -0,0 +1 @@ +Compute New York's 2026 child and dependent care credit under Tax Law 606(c-2), added by L.2026, ch. 59, Part A: qualifying expenses times a 55%-to-4% applicable percentage, less $20 per $1,000 of New York AGI above $750,000. The 606(c) percentage-of-federal credit now applies only before 2026. diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/expense_cap.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/expense_cap.yaml new file mode 100644 index 00000000000..1bd95c843da --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/expense_cap.yaml @@ -0,0 +1,33 @@ +description: New York caps qualifying expenses for the child and dependent care credit at this amount, based on the number of qualifying individuals. +brackets: + - threshold: + 2026-01-01: 1 + amount: + 2026-01-01: 3_000 + - threshold: + 2026-01-01: 2 + amount: + 2026-01-01: 6_000 + - threshold: + 2026-01-01: 3 + amount: + 2026-01-01: 7_500 + - threshold: + 2026-01-01: 4 + amount: + 2026-01-01: 8_500 + - threshold: + 2026-01-01: 5 + amount: + 2026-01-01: 9_000 +metadata: + type: single_amount + threshold_unit: person + amount_unit: currency-USD + period: year + label: New York expense-based child and dependent care credit expense cap + reference: + - title: N.Y. Tax Law 606(c-2)(2)(D)(iii) + href: https://www.nysenate.gov/legislation/laws/TAX/606 + - title: L.2026, ch. 59 (S.9009-C), Part A, sec. 2 + href: https://www.nysenate.gov/legislation/bills/2025/S9009/amendment/C diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/in_effect.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/in_effect.yaml new file mode 100644 index 00000000000..d8a1e11ef37 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/in_effect.yaml @@ -0,0 +1,17 @@ +description: New York computes the child and dependent care credit from qualifying care expenses under Tax Law 606(c-2), rather than as a percentage of the federal credit under 606(c), if this is true. +values: + 2000-01-01: false + # 606(c)(1) applies to "taxable years beginning before January first, two + # thousand twenty-six"; 606(c-2)(1) to taxable years beginning on or after. + 2026-01-01: true +metadata: + unit: bool + period: year + label: New York expense-based child and dependent care credit in effect + reference: + - title: N.Y. Tax Law 606(c-2) + href: https://www.nysenate.gov/legislation/laws/TAX/606 + - title: L.2026, ch. 59 (S.9009-C), Part A, secs. 1 and 2 + href: https://www.nysenate.gov/legislation/bills/2025/S9009/amendment/C + - title: N.Y. Tax Law 606(c)(1) + href: https://www.nysenate.gov/legislation/laws/TAX/606 diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/max.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/max.yaml new file mode 100644 index 00000000000..4bfe35c8a24 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/max.yaml @@ -0,0 +1,12 @@ +description: New York sets the child and dependent care credit applicable percentage at this rate for filers with New York adjusted gross income at or below the phase-down threshold. +values: + 2026-01-01: 0.55 +metadata: + unit: /1 + period: year + label: New York expense-based child and dependent care credit maximum rate + reference: + - title: N.Y. Tax Law 606(c-2)(2)(E)(i) + href: https://www.nysenate.gov/legislation/laws/TAX/606 + - title: L.2026, ch. 59 (S.9009-C), Part A, sec. 2 + href: https://www.nysenate.gov/legislation/bills/2025/S9009/amendment/C diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/min.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/min.yaml new file mode 100644 index 00000000000..429b7a82d6e --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/min.yaml @@ -0,0 +1,12 @@ +description: New York does not reduce the child and dependent care credit applicable percentage below this rate. +values: + 2026-01-01: 0.04 +metadata: + unit: /1 + period: year + label: New York expense-based child and dependent care credit minimum rate + reference: + - title: N.Y. Tax Law 606(c-2)(2)(E) + href: https://www.nysenate.gov/legislation/laws/TAX/606 + - title: L.2026, ch. 59 (S.9009-C), Part A, sec. 2 + href: https://www.nysenate.gov/legislation/bills/2025/S9009/amendment/C diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/phase_down_rate.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/phase_down_rate.yaml new file mode 100644 index 00000000000..b1a353001ab --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/phase_down_rate.yaml @@ -0,0 +1,14 @@ +description: New York reduces the child and dependent care credit applicable percentage by this rate for each dollar of New York adjusted gross income above the phase-down threshold. +values: + # "twenty-five hundred thousandths of a percentage point for each dollar": + # 0.00025 percentage points, or 0.0000025 as a decimal rate. + 2026-01-01: 0.0000025 +metadata: + unit: /1 + period: year + label: New York expense-based child and dependent care credit rate phase-down rate + reference: + - title: N.Y. Tax Law 606(c-2)(2)(E)(ii) + href: https://www.nysenate.gov/legislation/laws/TAX/606 + - title: L.2026, ch. 59 (S.9009-C), Part A, sec. 2 + href: https://www.nysenate.gov/legislation/bills/2025/S9009/amendment/C diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/phase_down_threshold.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/phase_down_threshold.yaml new file mode 100644 index 00000000000..4de84ed817c --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/rate/phase_down_threshold.yaml @@ -0,0 +1,12 @@ +description: New York reduces the child and dependent care credit applicable percentage for each dollar of New York adjusted gross income above this threshold. +values: + 2026-01-01: 15_000 +metadata: + unit: currency-USD + period: year + label: New York expense-based child and dependent care credit rate phase-down threshold + reference: + - title: N.Y. Tax Law 606(c-2)(2)(E) + href: https://www.nysenate.gov/legislation/laws/TAX/606 + - title: L.2026, ch. 59 (S.9009-C), Part A, sec. 2 + href: https://www.nysenate.gov/legislation/bills/2025/S9009/amendment/C diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/amount.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/amount.yaml new file mode 100644 index 00000000000..51cb37d3040 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/amount.yaml @@ -0,0 +1,12 @@ +description: New York reduces the child and dependent care credit by this amount for each increment of New York adjusted gross income above the reduction threshold. +values: + 2026-01-01: 20 +metadata: + unit: currency-USD + period: year + label: New York expense-based child and dependent care credit reduction amount + reference: + - title: N.Y. Tax Law 606(c-2)(3) + href: https://www.nysenate.gov/legislation/laws/TAX/606 + - title: L.2026, ch. 59 (S.9009-C), Part A, sec. 2 + href: https://www.nysenate.gov/legislation/bills/2025/S9009/amendment/C diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/increment.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/increment.yaml new file mode 100644 index 00000000000..ccf5d2d7f54 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/increment.yaml @@ -0,0 +1,12 @@ +description: New York reduces the child and dependent care credit for each increment of this size of New York adjusted gross income above the reduction threshold. +values: + 2026-01-01: 1_000 +metadata: + unit: currency-USD + period: year + label: New York expense-based child and dependent care credit reduction increment + reference: + - title: N.Y. Tax Law 606(c-2)(3) + href: https://www.nysenate.gov/legislation/laws/TAX/606 + - title: L.2026, ch. 59 (S.9009-C), Part A, sec. 2 + href: https://www.nysenate.gov/legislation/bills/2025/S9009/amendment/C diff --git a/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/threshold.yaml b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/threshold.yaml new file mode 100644 index 00000000000..7aff8f1ec57 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ny/tax/income/credits/cdcc/decoupled/reduction/threshold.yaml @@ -0,0 +1,12 @@ +description: New York reduces the child and dependent care credit for New York adjusted gross income above this threshold. +values: + 2026-01-01: 750_000 +metadata: + unit: currency-USD + period: year + label: New York expense-based child and dependent care credit reduction threshold + reference: + - title: N.Y. Tax Law 606(c-2)(3) + href: https://www.nysenate.gov/legislation/laws/TAX/606 + - title: L.2026, ch. 59 (S.9009-C), Part A, sec. 2 + href: https://www.nysenate.gov/legislation/bills/2025/S9009/amendment/C diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_2026.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_2026.yaml new file mode 100644 index 00000000000..6adacc0a1c5 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_2026.yaml @@ -0,0 +1,128 @@ +# From tax year 2026 the New York child and dependent care credit is the +# refundable N.Y. Tax Law 606(c-2) credit, added by L.2026, ch. 59 (S.9009-C), +# Part A, signed 2026-05-28: qualifying expenses times the applicable +# percentage, less $20 for each $1,000 of New York AGI above $750,000. The +# pre-2026 606(c)(1) credit (a percentage of the federal credit) applies only to +# "taxable years beginning before January first, two thousand twenty-six". + +- name: Case 1, PolicyBench scenario_082, head of household with a one-year-old. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 23 + employment_income: 100_195 + person2: + age: 1 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_childcare_expenses: 9_600 + ny_agi: 117_585.15 + adjusted_gross_income: 117_652.65 + households: + household: + members: [person1, person2] + state_code: NY + output: + ny_cdcc_qualifying_expenses: 3_000 + # 3,000 x (0.55 - 0.0000025 x 102,585.15) = 3,000 x 0.293537125 + ny_cdcc: 880.61 + # Empire State child credit: $1,000 for a child under four, less $16.50 + # for each of 42 whole $1,000 steps of federal AGI above $75,000. + ny_ctc: 307 + # PolicyBench reference audit 2026-10-05: $307 + $880.61, not $667. + ny_refundable_credits: 1_187.61 + +- name: Case 2, the same household in 2025 keeps the 606(c) credit. + period: 2025 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 23 + employment_income: 100_195 + person2: + age: 1 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_childcare_expenses: 9_600 + ny_agi: 117_585.15 + adjusted_gross_income: 117_652.65 + households: + household: + members: [person1, person2] + state_code: NY + output: + # 3,000 x (606(c) percentage 0.2 x 3.0 (1-a) factor) x 20% federal rate + ny_cdcc: 360 + +- name: Case 3, New York AGI at or below $15,000 earns 55% of qualifying expenses. + period: 2026 + input: + state_code: NY + ny_agi: 12_000 + ny_cdcc_qualifying_expenses: 6_000 + output: + ny_cdcc: 3_300 + +- name: Case 4, the credit is 4% of qualifying expenses at high incomes. + period: 2026 + input: + state_code: NY + ny_agi: 300_000 + ny_cdcc_qualifying_expenses: 3_000 + output: + ny_cdcc: 120 + +- name: Case 5, New York AGI less than $1,000 above $750,000 brings no reduction. + period: 2026 + input: + state_code: NY + ny_agi: 750_999 + ny_cdcc_qualifying_expenses: 9_000 + output: + # 9,000 x 0.04; no whole $1,000 above $750,000 + ny_cdcc: 360 + +- name: Case 6, $20 reduction for each $1,000 of New York AGI above $750,000. + period: 2026 + input: + state_code: NY + ny_agi: 760_000 + ny_cdcc_qualifying_expenses: 9_000 + output: + # 9,000 x 0.04 - 20 x 10 + ny_cdcc: 160 + +- name: Case 7, the reduction does not take the credit below zero. + period: 2026 + input: + state_code: NY + ny_agi: 800_000 + ny_cdcc_qualifying_expenses: 3_000 + output: + # max(0, 3,000 x 0.04 - 20 x 50) + ny_cdcc: 0 + +- name: Case 8, a married taxpayer filing separately who lives with the spouse gets no credit. + period: 2026 + input: + state_code: NY + filing_status: SEPARATE + ny_agi: 40_000 + ny_cdcc_qualifying_expenses: 3_000 + output: + ny_cdcc: 0 + +- name: Case 9, a taxpayer claimed as another taxpayer's dependent gets no credit. + period: 2026 + input: + state_code: NY + head_is_dependent_elsewhere: true + ny_agi: 20_000 + ny_cdcc_qualifying_expenses: 3_000 + output: + ny_cdcc: 0 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_applicable_percentage.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_applicable_percentage.yaml new file mode 100644 index 00000000000..566c93c5cff --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_applicable_percentage.yaml @@ -0,0 +1,65 @@ +# N.Y. Tax Law 606(c-2)(2)(E), added by L.2026, ch. 59, Part A: 55% at New York +# AGI of $15,000 or less, reduced by 0.00025 percentage points for each dollar +# above $15,000, and never below 4%. +- name: Case 1, New York AGI below $15,000 gets 55%. + period: 2026 + input: + state_code: NY + ny_agi: 12_000 + output: + ny_cdcc_applicable_percentage: 0.55 + +- name: Case 2, New York AGI of exactly $15,000 gets 55%. + period: 2026 + input: + state_code: NY + ny_agi: 15_000 + output: + ny_cdcc_applicable_percentage: 0.55 + +- name: Case 3, New York AGI of $100,000. + period: 2026 + absolute_error_margin: 0.000001 + input: + state_code: NY + ny_agi: 100_000 + output: + # 0.55 - 0.0000025 * 85,000 = 0.3375 (OSC SFY 2027 Executive Budget + # report, Figure 11: 33.8% at $100,000) + ny_cdcc_applicable_percentage: 0.3375 + +- name: Case 4, PolicyBench scenario_082 New York AGI. + period: 2026 + absolute_error_margin: 0.000001 + input: + state_code: NY + ny_agi: 117_585.15 + output: + # 0.55 - 0.0000025 * 102,585.15 = 0.293537125 + ny_cdcc_applicable_percentage: 0.293537125 + +- name: Case 5, the 4% floor is reached exactly at $219,000. + period: 2026 + absolute_error_margin: 0.000001 + input: + state_code: NY + ny_agi: 219_000 + output: + # 0.55 - 0.0000025 * 204,000 = 0.04 + ny_cdcc_applicable_percentage: 0.04 + +- name: Case 6, New York AGI above $219,000 stays at the 4% floor. + period: 2026 + input: + state_code: NY + ny_agi: 300_000 + output: + ny_cdcc_applicable_percentage: 0.04 + +- name: Case 7, negative New York AGI gets 55%. + period: 2026 + input: + state_code: NY + ny_agi: -10_000 + output: + ny_cdcc_applicable_percentage: 0.55 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_qualifying_expenses.yaml b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_qualifying_expenses.yaml new file mode 100644 index 00000000000..3a41d224047 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/ny/tax/income/credits/ny_cdcc_qualifying_expenses.yaml @@ -0,0 +1,134 @@ +# N.Y. Tax Law 606(c-2)(2)(D), added by L.2026, ch. 59, Part A: care expenses, +# less amounts paid from a dependent care account, capped at $3,000 / $6,000 / +# $7,500 / $8,500 / $9,000 for one to five or more qualifying individuals and at +# earned income (the lesser spouse's on a joint return). +- name: Case 1, one qualifying individual caps expenses at $3,000. + period: 2026 + input: + state_code: NY + count_cdcc_eligible: 1 + tax_unit_childcare_expenses: 9_600 + head_earned: 100_195 + output: + ny_cdcc_qualifying_expenses: 3_000 + +- name: Case 2, three qualifying individuals use the $7,500 New York cap, not the $6,000 federal limit. + period: 2026 + input: + state_code: NY + count_cdcc_eligible: 3 + tax_unit_childcare_expenses: 12_000 + head_earned: 50_000 + output: + ny_cdcc_qualifying_expenses: 7_500 + +- name: Case 3, four qualifying individuals with expenses exactly at the $8,500 cap. + period: 2026 + input: + state_code: NY + count_cdcc_eligible: 4 + tax_unit_childcare_expenses: 8_500 + head_earned: 100_000 + output: + ny_cdcc_qualifying_expenses: 8_500 + +- name: Case 4, five or more qualifying individuals cap expenses at $9,000. + period: 2026 + input: + state_code: NY + count_cdcc_eligible: 6 + tax_unit_childcare_expenses: 20_000 + head_earned: 500_000 + output: + ny_cdcc_qualifying_expenses: 9_000 + +- name: Case 5, expenses capped at earned income. + period: 2026 + input: + state_code: NY + count_cdcc_eligible: 1 + tax_unit_childcare_expenses: 3_000 + head_earned: 2_000 + output: + ny_cdcc_qualifying_expenses: 2_000 + +- name: Case 6, no qualifying individual means no qualifying expenses. + period: 2026 + input: + state_code: NY + count_cdcc_eligible: 0 + tax_unit_childcare_expenses: 5_000 + head_earned: 40_000 + output: + ny_cdcc_qualifying_expenses: 0 + +- name: Case 7, joint return caps expenses at the lesser spouse's earned income. + period: 2026 + input: + people: + person1: + age: 35 + employment_income: 50_000 + person2: + age: 35 + employment_income: 4_000 + person3: + age: 3 + person4: + age: 6 + tax_units: + tax_unit: + members: [person1, person2, person3, person4] + tax_unit_childcare_expenses: 7_000 + households: + household: + members: [person1, person2, person3, person4] + state_code: NY + output: + count_cdcc_eligible: 2 + ny_cdcc_qualifying_expenses: 4_000 + +- name: Case 8, a joint return with a non-earning spouse has no qualifying expenses; 606(c-2) deems no earned income. + period: 2026 + input: + people: + person1: + age: 35 + employment_income: 60_000 + person2: + age: 35 + is_full_time_student: true + person3: + age: 3 + tax_units: + tax_unit: + members: [person1, person2, person3] + tax_unit_childcare_expenses: 3_000 + households: + household: + members: [person1, person2, person3] + state_code: NY + output: + ny_cdcc_qualifying_expenses: 0 + +- name: Case 9, amounts paid from a dependent care account are not qualifying expenses. + period: 2026 + input: + people: + person1: + age: 35 + employment_income: 50_000 + dependent_care_employer_benefits: 2_000 + person2: + age: 3 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_childcare_expenses: 4_000 + households: + household: + members: [person1, person2] + state_code: NY + output: + # min(4,000 - 2,000, 3,000 cap, 50,000 earned) = 2,000 + ny_cdcc_qualifying_expenses: 2_000 diff --git a/policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc.py b/policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc.py index 702c42f3e36..b3275122379 100644 --- a/policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc.py +++ b/policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc.py @@ -8,12 +8,28 @@ class ny_cdcc(Variable): unit = USD definition_period = YEAR reference = ( - "https://www.nysenate.gov/legislation/laws/TAX/606", # (c) + "https://www.nysenate.gov/legislation/laws/TAX/606", # (c), (c-2) "https://www.tax.ny.gov/pdf/current_forms/it/it216i.pdf#page=1", ) defined_for = StateCode.NY def formula(tax_unit, period, parameters): + p = parameters(period).gov.states.ny.tax.income.credits.cdcc.decoupled + if p.in_effect: + # Tax Law 606(c-2), for taxable years beginning on or after + # 2026-01-01: qualifying expenses times the applicable percentage, + # less $20 per whole $1,000 of New York AGI above $750,000. + # (c-2)(2)(A) excludes a taxpayer who is another's dependent and, + # through IRC 21(e)(4), a married taxpayer filing separately. + expenses = tax_unit("ny_cdcc_qualifying_expenses", period) + rate = tax_unit("ny_cdcc_applicable_percentage", period) + excess = max_(tax_unit("ny_agi", period) - p.reduction.threshold, 0) + reduction = p.reduction.amount * np.floor(excess / p.reduction.increment) + eligible = tax_unit("cdcc_filing_status_eligible", period) & ~tax_unit( + "head_is_dependent_elsewhere", period + ) + return eligible * max_(expenses * rate - reduction, 0) + # Tax Law 606(c), for taxable years beginning before 2026. cdcc_max = tax_unit("ny_cdcc_max", period) expenses = tax_unit("cdcc_relevant_expenses", period) cdcc_rate = tax_unit("ny_cdcc_rate", period) * tax_unit("cdcc_rate", period) diff --git a/policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc_applicable_percentage.py b/policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc_applicable_percentage.py new file mode 100644 index 00000000000..097277fd703 --- /dev/null +++ b/policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc_applicable_percentage.py @@ -0,0 +1,17 @@ +from policyengine_us.model_api import * + + +class ny_cdcc_applicable_percentage(Variable): + value_type = float + entity = TaxUnit + label = "New York child and dependent care credit applicable percentage" + unit = "/1" + definition_period = YEAR + reference = "https://www.nysenate.gov/legislation/laws/TAX/606" # (c-2)(2)(E) + defined_for = StateCode.NY + + def formula(tax_unit, period, parameters): + p = parameters(period).gov.states.ny.tax.income.credits.cdcc.decoupled.rate + ny_agi = tax_unit("ny_agi", period) + excess = max_(ny_agi - p.phase_down_threshold, 0) + return max_(p.max - p.phase_down_rate * excess, p.min) diff --git a/policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc_qualifying_expenses.py b/policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc_qualifying_expenses.py new file mode 100644 index 00000000000..46275ff6a20 --- /dev/null +++ b/policyengine_us/variables/gov/states/ny/tax/income/credits/cdcc/ny_cdcc_qualifying_expenses.py @@ -0,0 +1,34 @@ +from policyengine_us.model_api import * + + +class ny_cdcc_qualifying_expenses(Variable): + value_type = float + entity = TaxUnit + label = "New York child and dependent care credit qualifying expenses" + unit = USD + definition_period = YEAR + reference = "https://www.nysenate.gov/legislation/laws/TAX/606" # (c-2)(2)(D) + defined_for = StateCode.NY + + def formula(tax_unit, period, parameters): + p = parameters(period).gov.states.ny.tax.income.credits.cdcc.decoupled + # (D)(i) care for qualifying individuals; childcare_expenses already + # nets out government child care subsidies. (D)(ii)(a) excludes amounts + # paid from a dependent care account. + care = tax_unit("tax_unit_childcare_expenses", period) + add( + tax_unit, period, ["care_expenses"] + ) + account = add(tax_unit, period, ["dependent_care_employer_benefits"]) + expenses = max_(care - account, 0) + # (D)(iii) caps expenses by the number of qualifying individuals and at + # earned income, the lesser of each spouse's on a joint return. Unlike + # IRC 21(d)(2), 606(c-2) deems no earned income for a student or + # incapacitated spouse. + cap = p.expense_cap.calc(tax_unit("count_cdcc_eligible", period)) + head_earned = tax_unit("head_earned", period) + earned = where( + tax_unit("tax_unit_is_joint", period), + min_(head_earned, tax_unit("spouse_earned", period)), + head_earned, + ) + return min_(expenses, min_(cap, earned))