diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 1afe1bd48fd..ac39f490bce 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +1,4 @@ - bump: minor changes: added: - - North Dakota 2023 tax rules. \ No newline at end of file + - North Dakota 2023 tax rules. diff --git a/policyengine_us/parameters/gov/states/nd/tax/income/credits/nonrefundable.yaml b/policyengine_us/parameters/gov/states/nd/tax/income/credits/nonrefundable.yaml index 567176dde38..f4f6ff5e5d6 100644 --- a/policyengine_us/parameters/gov/states/nd/tax/income/credits/nonrefundable.yaml +++ b/policyengine_us/parameters/gov/states/nd/tax/income/credits/nonrefundable.yaml @@ -14,3 +14,5 @@ metadata: href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2021-iit/2021-individual-income-tax-booklet.pdf#page=16 - title: 2022 ND income tax form and instruction booklet, lines 20 and 22 href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2022-iit/2022-individual-income-tax-booklet.pdf#page=16 + - title: 2023 ND income tax form and instruction booklet, Marriage Penalty Credit Worksheet line 22 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2023-iit/2023-individual-income-tax-booklet.pdf#page=16 diff --git a/policyengine_us/parameters/gov/states/nd/tax/income/credits/resident_tax_relief/joint_amount.yaml b/policyengine_us/parameters/gov/states/nd/tax/income/credits/resident_tax_relief/joint_amount.yaml index ee97933c3c4..e88ce968512 100644 --- a/policyengine_us/parameters/gov/states/nd/tax/income/credits/resident_tax_relief/joint_amount.yaml +++ b/policyengine_us/parameters/gov/states/nd/tax/income/credits/resident_tax_relief/joint_amount.yaml @@ -11,6 +11,6 @@ metadata: period: year reference: - title: 2021 ND income tax form and instruction booklet, line 20 - href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2021-iit/individual-income-tax-booklet-2021.pdf#page14 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2021-iit/individual-income-tax-booklet-2021.pdf#page=14 - title: 2022 ND income tax form and instruction booklet, line 20 - href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2022-iit/2022-individual-income-tax-booklet.pdf#page14 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2022-iit/2022-individual-income-tax-booklet.pdf#page=14 diff --git a/policyengine_us/parameters/gov/states/nd/tax/income/credits/resident_tax_relief/other_amount.yaml b/policyengine_us/parameters/gov/states/nd/tax/income/credits/resident_tax_relief/other_amount.yaml index 33725a3b982..7f789f7cb93 100644 --- a/policyengine_us/parameters/gov/states/nd/tax/income/credits/resident_tax_relief/other_amount.yaml +++ b/policyengine_us/parameters/gov/states/nd/tax/income/credits/resident_tax_relief/other_amount.yaml @@ -11,6 +11,6 @@ metadata: period: year reference: - title: 2021 ND income tax form and instruction booklet, line 20 - href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2021-iit/individual-income-tax-booklet-2021.pdf#page14 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2021-iit/individual-income-tax-booklet-2021.pdf#page=14 - title: 2022 ND income tax form and instruction booklet, line 20 - href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2022-iit/2022-individual-income-tax-booklet.pdf#page14 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2022-iit/2022-individual-income-tax-booklet.pdf#page=14 diff --git a/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/ltcg_fraction.yaml b/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/ltcg_fraction.yaml index c3ab55c7785..d0a1f440c90 100644 --- a/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/ltcg_fraction.yaml +++ b/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/ltcg_fraction.yaml @@ -2,6 +2,7 @@ description: North Dakota subtracts this fraction of long-term capital gains fro values: 2021-01-01: 0.40 2022-01-01: 0.40 + 2023-01-01: 0.40 metadata: label: fraction of long-term capital gains that can be subtracted from taxable income @@ -9,8 +10,8 @@ metadata: period: year reference: - title: 2021 ND income tax form and instruction booklet, line 7 - href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2021-iit/individual-income-tax-booklet-2021.pdf#page12 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2021-iit/individual-income-tax-booklet-2021.pdf#page=12 - title: 2022 ND income tax form and instruction booklet, line 7 - href: https://www.tax.nd.gov/sites/www/files/documents/forms/2022-individual-income-tax-booklet.pdf#page12 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/2022-individual-income-tax-booklet.pdf#page=12 - title: 2023 ND income tax form and instruction booklet, line 6 - href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2023-iit/2023-individual-income-tax-booklet.pdf#page14 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2023-iit/2023-individual-income-tax-booklet.pdf#page=14 diff --git a/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/qdiv_fraction.yaml b/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/qdiv_fraction.yaml index beecefe8a4b..646cca0c88a 100644 --- a/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/qdiv_fraction.yaml +++ b/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/qdiv_fraction.yaml @@ -9,8 +9,8 @@ metadata: period: year reference: - title: 2021 ND income tax form and instruction booklet, line 13 - href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2021-iit/individual-income-tax-booklet-2021.pdf#page13 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2021-iit/individual-income-tax-booklet-2021.pdf#page=13 - title: 2022 ND income tax form and instruction booklet, line 13 - href: https://www.tax.nd.gov/sites/www/files/documents/forms/2022-individual-income-tax-booklet.pdf#page13 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/2022-individual-income-tax-booklet.pdf#page=13 - title: 2023 ND income tax form and instruction booklet, line 13 - href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2023-iit/2023-individual-income-tax-booklet.pdf#page15 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2023-iit/2023-individual-income-tax-booklet.pdf#page=15 diff --git a/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/sources.yaml b/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/sources.yaml index 1025434a080..db6894a2595 100644 --- a/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/sources.yaml +++ b/policyengine_us/parameters/gov/states/nd/tax/income/taxable_income/subtractions/sources.yaml @@ -6,6 +6,12 @@ values: - nd_qdiv_subtraction # qualified dividends - taxable_social_security + 2023-01-01: + - us_govt_interest + - nd_ltcg_subtraction # long-term capital gains + - nd_qdiv_subtraction # qualified dividends + - nd_military_pay_exclusion + metadata: unit: variable label: ND subtractions from US taxable income @@ -19,4 +25,4 @@ metadata: - title: 2022 ND income tax instructions, lines 6, 7, 13, 15 href: https://www.tax.nd.gov/sites/www/files/documents/forms/2022-individual-income-tax-booklet.pdf#page=14 - title: 2023 ND income tax form and instruction booklet, line 5,6,13, 15 - href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2023-iit/2023-individual-income-tax-booklet.pdf#page15 + href: https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2023-iit/2023-individual-income-tax-booklet.pdf#page=15 diff --git a/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_income_tax_before_credits.yaml b/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_income_tax_before_credits.yaml index efd5e56580c..4e91d81333f 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_income_tax_before_credits.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_income_tax_before_credits.yaml @@ -15,3 +15,142 @@ state_code: ND output: # hand calculated to avoid whole-dollar rounding problems nd_income_tax_before_credits: 11_316.07 + +- name: ND income tax before credits unit test 3 (JOINT) + period: 2023 + input: + filing_status: JOINT + nd_taxable_income: 74_750 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + nd_income_tax_before_credits: 0 + +- name: ND income tax before credits unit test 4 (JOINT) + period: 2023 + input: + filing_status: JOINT + nd_taxable_income: 84_750 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + #(84750-74750)*0.0195 = 195 + nd_income_tax_before_credits: 195 + +- name: ND income tax before credits unit test 5 (JOINT) + period: 2023 + input: + filing_status: JOINT + nd_taxable_income: 275_200 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + #(275200-275100)*0.0250 + 3906.83 = 3909.33 + nd_income_tax_before_credits: 3_909.33 + +- name: ND income tax before credits unit test 6 (SINGLE) + period: 2023 + input: + filing_status: SINGLE + nd_taxable_income: 44_724 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + nd_income_tax_before_credits: 0 + +- name: ND income tax before credits unit test 7 (SINGLE) + period: 2023 + input: + filing_status: SINGLE + nd_taxable_income: 45_725 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + nd_income_tax_before_credits: 19.5 + +- name: ND income tax before credits unit test 8 (SINGLE) + period: 2023 + input: + filing_status: SINGLE + nd_taxable_income: 226_975 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + nd_income_tax_before_credits: 3_559.38 + +- name: ND income tax before credits unit test 9 (SEPARATE) + period: 2023 + input: + filing_status: SEPARATE + nd_taxable_income: 37_374 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + nd_income_tax_before_credits: 0 + +- name: ND income tax before credits unit test 10 (SEPARATE) + period: 2023 + input: + filing_status: SEPARATE + nd_taxable_income: 47_375 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + nd_income_tax_before_credits: 1_950 + +- name: ND income tax before credits unit test 11 (SEPARATE) + period: 2023 + input: + filing_status: SEPARATE + nd_taxable_income: 147_550 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + nd_income_tax_before_credits: 4_453.41 + +- name: ND income tax before credits unit test 12 (HEAD) + period: 2023 + input: + filing_status: HEAD_OF_HOUSEHOLD + nd_taxable_income: 59_949 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + nd_income_tax_before_credits: 0 + +- name: ND income tax before credits unit test 13 (HEAD) + period: 2023 + input: + filing_status: HEAD_OF_HOUSEHOLD + nd_taxable_income: 69_950 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + nd_income_tax_before_credits: 1_950 + +- name: ND income tax before credits unit test 14 (HEAD) + period: 2023 + input: + filing_status: HEAD_OF_HOUSEHOLD + nd_taxable_income: 260_550 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + nd_income_tax_before_credits: 6_216.7 + +- name: ND income tax before credits unit test 15 (WIDOW) + period: 2023 + input: + filing_status: WIDOW + nd_taxable_income: 74_750 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + nd_income_tax_before_credits: 0 + +- name: ND income tax before credits unit test 16 (WIDOW) + period: 2023 + input: + filing_status: WIDOW + nd_taxable_income: 84_750 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + #(84750-74750)*0.0195 = 195 + nd_income_tax_before_credits: 195 + +- name: ND income tax before credits unit test 17 (WIDOW) + period: 2023 + input: + filing_status: WIDOW + nd_taxable_income: 275_200 + state_code: ND + output: # hand calculated to avoid whole-dollar rounding problems + #(275200-275100)*0.0250 + 3906.83 = 3909.33 + nd_income_tax_before_credits: 3_909.33 \ No newline at end of file diff --git a/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_income_tax_before_refundable_credits.yaml b/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_income_tax_before_refundable_credits.yaml index 0947567d533..2090fa544d0 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_income_tax_before_refundable_credits.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_income_tax_before_refundable_credits.yaml @@ -15,3 +15,12 @@ state_code: ND output: nd_income_tax_before_refundable_credits: 0 + +- name: ND income tax before refundable credits unit test 3 + period: 2023 + input: + nd_income_tax_before_credits: 900 + nd_nonrefundable_credits: 950 + state_code: ND + output: + nd_income_tax_before_refundable_credits: 0 \ No newline at end of file diff --git a/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_mpc.yaml b/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_mpc.yaml index 65a0c5e927c..8318800fc65 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_mpc.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/nd/tax/income/nd_mpc.yaml @@ -51,3 +51,56 @@ nd_taxable_income: 354_100 nd_income_tax_before_credits: 7_356.02 nd_mpc: 208 # capped at maximum credit amount + + +- name: ND marriage-penalty credit unit test 3 + absolute_error_margin: 0.01 + period: 2023 + input: + people: + person1: + is_tax_unit_head: true + age: 41 + irs_employment_income: 200_000 + person2: + is_tax_unit_spouse: true + age: 41 + irs_employment_income: 180_000 + spm_units: + spm_unit: + members: [person1, person2] + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: ND + output: + nd_mpc: 0 + +- name: ND marriage-penalty credit unit test 4 + absolute_error_margin: 0.01 + period: 2023 + input: + people: + person1: + is_tax_unit_head: true + age: 41 + irs_employment_income: 90_000 + person2: + is_tax_unit_spouse: true + age: 41 + irs_employment_income: 80_000 + spm_units: + spm_unit: + members: [person1, person2] + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: ND + output: + nd_mpc: 287 # capped at maximum credit amount \ No newline at end of file diff --git a/policyengine_us/variables/gov/states/nd/tax/income/nd_military_pay_exclusion.py b/policyengine_us/variables/gov/states/nd/tax/income/nd_military_pay_exclusion.py new file mode 100644 index 00000000000..0f7a213da76 --- /dev/null +++ b/policyengine_us/variables/gov/states/nd/tax/income/nd_military_pay_exclusion.py @@ -0,0 +1,15 @@ +from policyengine_us.model_api import * + + +class nd_military_pay_exclusion(Variable): + value_type = float + entity = TaxUnit + label = "North Dakota military pay exclusion" + unit = USD + definition_period = YEAR + defined_for = StateCode.ND + reference = "https://www.tax.nd.gov/sites/www/files/documents/forms/individual/2023-iit/2023-individual-income-tax-booklet.pdf#page=15" + + def formula(tax_unit, period, parameters): + military_pay = add(tax_unit, period, ["military_service_income"]) + return military_pay \ No newline at end of file