diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..54f73b3aea9 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: patch + changes: + changed: + - Update Kentucky income tax model for 2025, including standard deduction ($3,270), tax rate (4%), and all tax credits with official 2025 references. diff --git a/policyengine_us/parameters/gov/states/ky/tax/income/credits/dependent_care_service/match.yaml b/policyengine_us/parameters/gov/states/ky/tax/income/credits/dependent_care_service/match.yaml index 298cb21651b..c3183329096 100644 --- a/policyengine_us/parameters/gov/states/ky/tax/income/credits/dependent_care_service/match.yaml +++ b/policyengine_us/parameters/gov/states/ky/tax/income/credits/dependent_care_service/match.yaml @@ -14,3 +14,5 @@ metadata: href: https://revenue.ky.gov/Forms/740%20Packet%20Instructions%202023.pdf#page=9 - title: 2024 Kentucky Individual Income Tax Forms href: https://revenue.ky.gov/Forms/740%20instructions%20packet%20(2025).pdf#page=9 + - title: 2025 Kentucky Form 740 Instructions + href: https://revenue.ky.gov/Forms/740%20Packet%20Instructions%20(2025).pdf#page=9 diff --git a/policyengine_us/parameters/gov/states/ky/tax/income/credits/family_size/family_size_cap.yaml b/policyengine_us/parameters/gov/states/ky/tax/income/credits/family_size/family_size_cap.yaml index 2dbe410749e..2d2a12796c1 100644 --- a/policyengine_us/parameters/gov/states/ky/tax/income/credits/family_size/family_size_cap.yaml +++ b/policyengine_us/parameters/gov/states/ky/tax/income/credits/family_size/family_size_cap.yaml @@ -14,3 +14,5 @@ metadata: href: https://revenue.ky.gov/Forms/Schedule%20ITC%202023.pdf#page=2 - title: 2024 Kentucky Individual Income Tax Forms href: https://revenue.ky.gov/Forms/740%20instructions%20packet%20(2025).pdf#page=11 + - title: 2025 Kentucky Schedule ITC + href: https://revenue.ky.gov/Forms/Schedule%20ITC%20(2025).pdf#page=2 diff --git a/policyengine_us/parameters/gov/states/ky/tax/income/credits/family_size/rate.yaml b/policyengine_us/parameters/gov/states/ky/tax/income/credits/family_size/rate.yaml index 0f8ec41238e..4d6d8bd346b 100644 --- a/policyengine_us/parameters/gov/states/ky/tax/income/credits/family_size/rate.yaml +++ b/policyengine_us/parameters/gov/states/ky/tax/income/credits/family_size/rate.yaml @@ -13,6 +13,8 @@ metadata: href: https://revenue.ky.gov/Forms/Schedule%20ITC%202023.pdf#page=2 - title: 2024 Kentucky individual tax credit schedule, ITC href: https://revenue.ky.gov/Forms/Schedule%20ITC%20(2025).pdf#page=2 + - title: 2025 Kentucky Schedule ITC + href: https://revenue.ky.gov/Forms/Schedule%20ITC%20(2025).pdf#page=2 brackets: - threshold: diff --git a/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/aged.yaml b/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/aged.yaml index d5ba6e00b4e..6932706f888 100644 --- a/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/aged.yaml +++ b/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/aged.yaml @@ -15,7 +15,9 @@ metadata: - title: Schedule ITC Section B 2021 href: https://revenue.ky.gov/Forms/Schedule%20ITC-2021.pdf#page=2 - title: Kentucky Revised Statutes Chapter 141.020 (3)(a) 4. - href: https://apps.legislature.ky.gov/law/statutes/statute.aspx?id=53500#page=4 + href: https://apps.legislature.ky.gov/law/statutes/statute.aspx?id=53500 + - title: 2025 Kentucky Schedule ITC Section B + href: https://revenue.ky.gov/Forms/Schedule%20ITC%20(2025).pdf#page=2 brackets: - threshold: 2021-01-01: 0 diff --git a/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/blind.yaml b/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/blind.yaml index 43c96dc8bf6..91e55a52fb6 100644 --- a/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/blind.yaml +++ b/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/blind.yaml @@ -2,7 +2,7 @@ description: Kentucky provides this personal tax credit for blind filers. values: 2021-01-01: 40 metadata: - unit: year + unit: currency-USD period: year label: Kentucky personal tax credits blind amount reference: @@ -15,4 +15,6 @@ metadata: - title: Schedule ITC Section B 2021 href: https://revenue.ky.gov/Forms/Schedule%20ITC-2021.pdf#page=2 - title: Kentucky Revised Statutes Chapter 141.020 (3)(a) 6. - href: https://apps.legislature.ky.gov/law/statutes/statute.aspx?id=53500#page=4 + href: https://apps.legislature.ky.gov/law/statutes/statute.aspx?id=53500 + - title: 2025 Kentucky Schedule ITC Section B + href: https://revenue.ky.gov/Forms/Schedule%20ITC%20(2025).pdf#page=2 diff --git a/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/military.yaml b/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/military.yaml index 46e1d91c585..0d679e5175a 100644 --- a/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/military.yaml +++ b/policyengine_us/parameters/gov/states/ky/tax/income/credits/personal/amount/military.yaml @@ -2,7 +2,7 @@ description: Kentucky provides this personal tax credit for filers who served in values: 2021-01-01: 20 metadata: - unit: year + unit: currency-USD period: year label: Kentucky personal tax credits military service amount reference: @@ -15,4 +15,6 @@ metadata: - title: Schedule ITC Section B 2021 href: https://revenue.ky.gov/Forms/Schedule%20ITC-2021.pdf#page=2 - title: Kentucky Revised Statutes Chapter 141.020 (3)(a) 8. - href: https://apps.legislature.ky.gov/law/statutes/statute.aspx?id=53500#page=4 + href: https://apps.legislature.ky.gov/law/statutes/statute.aspx?id=53500 + - title: 2025 Kentucky Schedule ITC Section B + href: https://revenue.ky.gov/Forms/Schedule%20ITC%20(2025).pdf#page=2 diff --git a/policyengine_us/parameters/gov/states/ky/tax/income/credits/tuition_tax/rate.yaml b/policyengine_us/parameters/gov/states/ky/tax/income/credits/tuition_tax/rate.yaml index 22081f3243c..a25dadfdc6b 100644 --- a/policyengine_us/parameters/gov/states/ky/tax/income/credits/tuition_tax/rate.yaml +++ b/policyengine_us/parameters/gov/states/ky/tax/income/credits/tuition_tax/rate.yaml @@ -13,3 +13,5 @@ metadata: href: https://revenue.ky.gov/Forms/Form%208863-K%202023.pdf#page=2 - title: 2024 Kentucky Individual Income Tax Forms href: https://revenue.ky.gov/Forms/740%20instructions%20packet%20(2025).pdf#page=36 + - title: 2025 Kentucky Form 8863-K + href: https://revenue.ky.gov/Forms/8863-K%20(2025).pdf#page=1 diff --git a/policyengine_us/parameters/gov/states/ky/tax/income/deductions/standard.yaml b/policyengine_us/parameters/gov/states/ky/tax/income/deductions/standard.yaml index bf77eff8c1c..af076e4620b 100644 --- a/policyengine_us/parameters/gov/states/ky/tax/income/deductions/standard.yaml +++ b/policyengine_us/parameters/gov/states/ky/tax/income/deductions/standard.yaml @@ -24,3 +24,5 @@ metadata: href: https://www.taxformfinder.org/forms/2021/2021-kentucky-form-740.pdf - title: 2025 KENTUCKY Standard Deduction Press Release href: https://revenue.ky.gov/News/Pages/Kentucky-DOR-Announces-2025-Standard-Deduction.aspx + - title: 2025 Kentucky Form 740 Instructions + href: https://revenue.ky.gov/Forms/740%20Packet%20Instructions%20(2025).pdf#page=2 diff --git a/policyengine_us/parameters/gov/states/ky/tax/income/exclusions/pension_income/threshold.yaml b/policyengine_us/parameters/gov/states/ky/tax/income/exclusions/pension_income/threshold.yaml index e9f9da68995..50ca0a0b67e 100644 --- a/policyengine_us/parameters/gov/states/ky/tax/income/exclusions/pension_income/threshold.yaml +++ b/policyengine_us/parameters/gov/states/ky/tax/income/exclusions/pension_income/threshold.yaml @@ -9,8 +9,8 @@ values: 2005-01-01: 41_110 2018-01-01: 31_110 metadata: - type: currency-USD - label: Kentucky income tax rate + unit: currency-USD + label: Kentucky pension income exclusion threshold reference: - title: Kentucky Pension Income Schedule P (1999) href: https://revenue.ky.gov/Forms/1999_42a740p.pdf @@ -36,3 +36,5 @@ metadata: href: https://revenue.ky.gov/Forms/Schedule%20P%20(2025).pdf#page=1 - title: Kentucky Revised Statutes 141.019 (1)(g) href: https://law.justia.com/codes/kentucky/2022/chapter-141/section-141-019/ # (1)(g) + - title: 2025 Kentucky Schedule P + href: https://revenue.ky.gov/Forms/Schedule%20P%20(2025).pdf#page=1 diff --git a/policyengine_us/parameters/gov/states/ky/tax/income/rate.yaml b/policyengine_us/parameters/gov/states/ky/tax/income/rate.yaml index 2ea1dca5b0a..5e8795b6c0a 100644 --- a/policyengine_us/parameters/gov/states/ky/tax/income/rate.yaml +++ b/policyengine_us/parameters/gov/states/ky/tax/income/rate.yaml @@ -26,3 +26,5 @@ metadata: # Statutes don't yet reflect the signed legislation - title: Kentucky Statutes 141.020 href: https://apps.legislature.ky.gov/law/statutes/statute.aspx?id=54585 + - title: 2025 Kentucky Form 740 Instructions + href: https://revenue.ky.gov/Forms/740%20Packet%20Instructions%20(2025).pdf#page=2 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ky/tax/income/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/ky/tax/income/integration.yaml index 89cc40329a4..f985c8fb41e 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ky/tax/income/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ky/tax/income/integration.yaml @@ -94,7 +94,7 @@ output: ky_agi: [20_000, 25_000] # If filing a joint return, only one standard deduction is allowed. - # default: older perpon is head + # default: older person is head ky_standard_deduction_joint: [0, 2_770] ky_itemized_deductions_joint: [0, 0] ky_taxable_income_joint: [0, 42_230] @@ -164,7 +164,7 @@ output: ky_agi: [20_000, 25_000, 0] # If filing a joint return, only one standard deduction is allowed. - # default: older perpon is head + # default: older person is head ky_standard_deduction_joint: [0, 2_770, 0] ky_itemized_deductions_joint: [0, 0, 0] ky_taxable_income_joint: [0, 42_230, 0] @@ -295,3 +295,134 @@ ky_itemized_deductions_indiv: [4_800 , 1_200] ky_standard_deduction_indiv: [2_690 , 2_690] ky_deductions_indiv: [4_800 , 1_200] # this is the correct result + +# ============================================================================== +# 2025 TAX YEAR TESTS +# Parameters: Tax rate 4%, Standard deduction $3,270 +# ============================================================================== + +- name: 2025 KY single filer standard deduction + period: 2025 + absolute_error_margin: 1 + input: + people: + person1: + age: 35 + employment_income: 50_000 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: KY + output: + ky_standard_deduction_indiv: [3_270] + ky_taxable_income_indiv: [46_730] + ky_income_tax: 1_869.20 + +- name: 2025 KY MFJ optimization picks separate filing + period: 2025 + absolute_error_margin: 1 + input: + people: + person1: + age: 42 + employment_income: 60_000 + is_tax_unit_head: true + person2: + age: 40 + employment_income: 40_000 + is_tax_unit_spouse: true + tax_units: + tax_unit: + members: [person1, person2] + filing_status: JOINT + households: + household: + members: [person1, person2] + state_code: KY + output: + # KY optimizes: separate ($3,738.40) < joint ($3,869.20) + ky_income_tax: 3_738.40 + +- name: 2025 KY FSTC at 100% of threshold + period: 2025 + absolute_error_margin: 1 + input: + people: + person1: + age: 30 + employment_income: 15_650 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: KY + output: + ky_family_size_tax_credit_rate: 1.0 + ky_family_size_tax_credit: 495.20 + ky_income_tax: 0 + +- name: 2025 KY aged personal credit + period: 2025 + absolute_error_margin: 1 + input: + people: + person1: + age: 67 + employment_income: 40_000 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: KY + output: + ky_aged_personal_tax_credits: [40] + ky_personal_tax_credits: 40 + ky_income_tax: 1_429.20 + +- name: 2025 KY pension exclusion over threshold + period: 2025 + absolute_error_margin: 1 + input: + people: + person1: + age: 70 + taxable_private_pension_income: 45_000 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: KY + output: + ky_pension_income_exclusion: [31_110] + +- name: 2025 KY dependent care credit + period: 2025 + absolute_error_margin: 1 + input: + people: + person1: + age: 35 + employment_income: 60_000 + is_tax_unit_head: true + child1: + age: 4 + is_tax_unit_dependent: true + tax_units: + tax_unit: + members: [person1, child1] + cdcc: 1_000 + households: + household: + members: [person1, child1] + state_code: KY + output: + ky_cdcc: 200 diff --git a/uv.lock b/uv.lock index 96f38a064ed..294deda103b 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 3 +revision = 2 requires-python = ">=3.10, <3.14" resolution-markers = [ "python_full_version >= '3.12'", @@ -718,7 +718,7 @@ name = "importlib-metadata" version = "8.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "zipp" }, + { name = "zipp", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } wheels = [