From e757110bda823c80535863f8358f2cb71da32269 Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Tue, 14 Jul 2026 10:48:00 -0400 Subject: [PATCH 1/4] Raise Virginia standard deduction (2026 Appropriation Act, HB 30) The 2026 Appropriation Act (HB 30, Special Session I, Chapter 1), Item 4-14 #1c, raises Virginia's standard deduction to $9,200 (single) / $18,400 (joint) for tax year 2027 and $9,300 / $18,600 for tax years 2028-2029, and moves the sunset to the pre-2019 amounts ($3,000 / $6,000) to tax year 2030. Co-Authored-By: Claude Opus 4.8 --- ...-standard-deduction-2026-budget.changed.md | 1 + .../va/tax/income/deductions/standard.yaml | 24 +++++++-- .../deductions/va_standard_deduction.yaml | 53 +++++++++++++++++++ 3 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 changelog.d/va-standard-deduction-2026-budget.changed.md diff --git a/changelog.d/va-standard-deduction-2026-budget.changed.md b/changelog.d/va-standard-deduction-2026-budget.changed.md new file mode 100644 index 00000000000..4defde056db --- /dev/null +++ b/changelog.d/va-standard-deduction-2026-budget.changed.md @@ -0,0 +1 @@ +Raise Virginia's standard deduction under the 2026 Appropriation Act (HB 30) to $9,200 single / $18,400 joint for tax year 2027 and $9,300 / $18,600 for tax years 2028-2029, with the sunset to $3,000 / $6,000 moved to tax year 2030. diff --git a/policyengine_us/parameters/gov/states/va/tax/income/deductions/standard.yaml b/policyengine_us/parameters/gov/states/va/tax/income/deductions/standard.yaml index 82e906d2fbf..716a06bb9d6 100644 --- a/policyengine_us/parameters/gov/states/va/tax/income/deductions/standard.yaml +++ b/policyengine_us/parameters/gov/states/va/tax/income/deductions/standard.yaml @@ -22,34 +22,48 @@ metadata: href: https://www.tax.virginia.gov/sites/default/files/inline-files/2023-legislative-summary.pdf#page=10 - title: House Bill 1600 (2025 Appropriations Act) href: https://legiscan.com/VA/text/HB1600/id/3262750/Virginia-2025-HB1600-Chaptered.pdf#page=780 + - title: House Bill 30 (2026 Appropriation Act, Special Session I, Chapter 1), Item 4-14 #1c - $9,200/$18,400 for TY2027 and $9,300/$18,600 for TY2028-2029, sunset TY2030 + href: https://budget.lis.virginia.gov/amendment/2026/2/HB30/Introduced/CR/4-14/1c + - title: Virginia Department of Taxation 2026 Legislative Summary - standard deduction + href: https://www.tax.virginia.gov/sites/default/files/inline-files/2026-legislative-summary.pdf JOINT: 2021-01-01: 9_000 2022-01-01: 16_000 2024-01-01: 17_000 2025-01-01: 17_500 - 2027-01-01: 6_000 + 2027-01-01: 18_400 + 2028-01-01: 18_600 + 2030-01-01: 6_000 SINGLE: 2021-01-01: 4_500 2022-01-01: 8_000 2024-01-01: 8_500 2025-01-01: 8_750 - 2027-01-01: 3_000 + 2027-01-01: 9_200 + 2028-01-01: 9_300 + 2030-01-01: 3_000 SEPARATE: 2021-01-01: 4_500 2022-01-01: 8_000 2024-01-01: 8_500 2025-01-01: 8_750 - 2027-01-01: 3_000 + 2027-01-01: 9_200 + 2028-01-01: 9_300 + 2030-01-01: 3_000 HEAD_OF_HOUSEHOLD: 2021-01-01: 4_500 2022-01-01: 8_000 2024-01-01: 8_500 2025-01-01: 8_750 - 2027-01-01: 3_000 + 2027-01-01: 9_200 + 2028-01-01: 9_300 + 2030-01-01: 3_000 SURVIVING_SPOUSE: 2021-01-01: 4_500 2022-01-01: 8_000 2024-01-01: 8_500 2025-01-01: 8_750 - 2027-01-01: 3_000 + 2027-01-01: 9_200 + 2028-01-01: 9_300 + 2030-01-01: 3_000 diff --git a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/va_standard_deduction.yaml b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/va_standard_deduction.yaml index a5970286d55..21fe9bc48b1 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/va_standard_deduction.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/va_standard_deduction.yaml @@ -46,3 +46,56 @@ state_code: VA output: va_standard_deduction: 8_750 + +# 2027 tests - HB 30 (2026 Appropriation Act) raises the standard deduction +# by $450 (single) and $900 (joint) for taxable years 2027. +- name: VA 2027 Standard deduction if single filer + period: 2027 + input: + filing_status: SINGLE + state_code: VA + output: + va_standard_deduction: 9_200 + +- name: VA 2027 Standard deduction if married filing jointly + period: 2027 + input: + filing_status: JOINT + state_code: VA + output: + va_standard_deduction: 18_400 + +# 2028 tests - HB 30 further raises the standard deduction for TY2028-2029. +- name: VA 2028 Standard deduction if single filer + period: 2028 + input: + filing_status: SINGLE + state_code: VA + output: + va_standard_deduction: 9_300 + +- name: VA 2028 Standard deduction if married filing jointly + period: 2028 + input: + filing_status: JOINT + state_code: VA + output: + va_standard_deduction: 18_600 + +# 2030 tests - the increased amounts sunset after TY2029 and revert to the +# pre-2019 amounts ($3,000 single / $6,000 joint). +- name: VA 2030 Standard deduction sunsets for single filer + period: 2030 + input: + filing_status: SINGLE + state_code: VA + output: + va_standard_deduction: 3_000 + +- name: VA 2030 Standard deduction sunsets for married filing jointly + period: 2030 + input: + filing_status: JOINT + state_code: VA + output: + va_standard_deduction: 6_000 From 6b780e3946a644652cc582e7dd0adac71408091c Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Tue, 14 Jul 2026 11:10:45 -0400 Subject: [PATCH 2/4] Add VA 2026 budget EITC extension and educator deduction (HB 30) - Refundable EITC: extend the 20% match through TY2029 and expire (0%) for TY2030+, per HB 30's third enactment clause. This also corrects the prior 2027 value (0.15): the statute and legislative summary state the refundable credit expires, it does not revert to 15%. - Eligible educator expense deduction (Va. Code 58.1-322.03): add a VA subtraction of up to $500 for expenses not claimed federally, reinstated for TY2026+. Modeled as an explicit input (defaults to $0) because the excess- over-federal amount is not identified in the baseline data, matching the Ohio educator-deduction treatment. Co-Authored-By: Claude Opus 4.8 --- .../va-educator-expense-deduction.added.md | 1 + .../va-refundable-eitc-2026-budget.changed.md | 1 + .../income/credits/eitc/match/refundable.yaml | 7 ++++- .../tax/income/subtractions/subtractions.yaml | 1 + .../eitc/va_refundable_eitc_if_claimed.yaml | 18 ++++++++++++ .../va_educator_expense_deduction_person.yaml | 29 +++++++++++++++++++ .../va_educator_expense_deduction_person.py | 24 +++++++++++++++ 7 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 changelog.d/va-educator-expense-deduction.added.md create mode 100644 changelog.d/va-refundable-eitc-2026-budget.changed.md create mode 100644 policyengine_us/tests/policy/baseline/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.yaml create mode 100644 policyengine_us/variables/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.py diff --git a/changelog.d/va-educator-expense-deduction.added.md b/changelog.d/va-educator-expense-deduction.added.md new file mode 100644 index 00000000000..844d6a44c9c --- /dev/null +++ b/changelog.d/va-educator-expense-deduction.added.md @@ -0,0 +1 @@ +Add Virginia's eligible educator expense deduction (up to $500), reinstated for tax year 2026 and after by the 2026 Appropriation Act (HB 30). diff --git a/changelog.d/va-refundable-eitc-2026-budget.changed.md b/changelog.d/va-refundable-eitc-2026-budget.changed.md new file mode 100644 index 00000000000..e225f9fbca9 --- /dev/null +++ b/changelog.d/va-refundable-eitc-2026-budget.changed.md @@ -0,0 +1 @@ +Extend Virginia's 20% refundable EITC through tax year 2029 under the 2026 Appropriation Act (HB 30); it expires (0%) for tax years beginning on or after January 1, 2030. diff --git a/policyengine_us/parameters/gov/states/va/tax/income/credits/eitc/match/refundable.yaml b/policyengine_us/parameters/gov/states/va/tax/income/credits/eitc/match/refundable.yaml index 85a83757384..41290b1a7fd 100644 --- a/policyengine_us/parameters/gov/states/va/tax/income/credits/eitc/match/refundable.yaml +++ b/policyengine_us/parameters/gov/states/va/tax/income/credits/eitc/match/refundable.yaml @@ -3,7 +3,7 @@ values: 2021-01-01: 0 2022-01-01: 0.15 2025-01-01: 0.2 - 2027-01-01: 0.15 + 2030-01-01: 0 metadata: period: year @@ -26,4 +26,9 @@ metadata: # 2025 EITC reflected in statute - title: House Bill 1600 (2025 Appropriations Act) href: https://legiscan.com/VA/text/HB1600/id/3262750/Virginia-2025-HB1600-Chaptered.pdf#page=783 + # HB 30 (2026) 3rd enactment clause extends the 20% refundable EITC through TY2029; it expires (0%) for TY2030+ + - title: House Bill 30 (2026 Appropriation Act, Special Session I, Chapter 1), third enactment clause + href: https://budget.lis.virginia.gov/bill/2026/2/HB30/Introduced/ + - title: Virginia Department of Taxation 2026 Legislative Summary - refundable EITC + href: https://www.tax.virginia.gov/sites/default/files/inline-files/2026-legislative-summary.pdf diff --git a/policyengine_us/parameters/gov/states/va/tax/income/subtractions/subtractions.yaml b/policyengine_us/parameters/gov/states/va/tax/income/subtractions/subtractions.yaml index 72db59b04dc..0cf201f90da 100644 --- a/policyengine_us/parameters/gov/states/va/tax/income/subtractions/subtractions.yaml +++ b/policyengine_us/parameters/gov/states/va/tax/income/subtractions/subtractions.yaml @@ -14,6 +14,7 @@ values: - va_529_plan_deduction_person # Certification Number 34 - va_age_deduction_person # Certification Number 4 - taxable_social_security # Certification Number 5 + - va_educator_expense_deduction_person # Eligible educator expenses (TY2022-2024, TY2026+) metadata: diff --git a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/credits/eitc/va_refundable_eitc_if_claimed.yaml b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/credits/eitc/va_refundable_eitc_if_claimed.yaml index 48a430872a6..742ef1f6410 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/credits/eitc/va_refundable_eitc_if_claimed.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/credits/eitc/va_refundable_eitc_if_claimed.yaml @@ -31,3 +31,21 @@ eitc: 0 output: va_refundable_eitc_if_claimed: 0 + +# HB 30 (2026) extends the 20% refundable rate through TY2029. +- name: VA 2029 Refundable EITC still at 20% + period: 2029 + input: + state_code: VA + eitc: 5_000 + output: + va_refundable_eitc_if_claimed: 1_000 + +# The refundable EITC expires for taxable years beginning on/after 2030. +- name: VA 2030 Refundable EITC has expired + period: 2030 + input: + state_code: VA + eitc: 5_000 + output: + va_refundable_eitc_if_claimed: 0 diff --git a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.yaml b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.yaml new file mode 100644 index 00000000000..7ca7c6af310 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.yaml @@ -0,0 +1,29 @@ +# Virginia eligible educator expense deduction (Va. Code 58.1-322.03), +# reinstated for TY2026+ by the 2026 Appropriation Act (HB 30). Modeled as an +# explicit input (defaults to $0) because the excess-over-federal amount is not +# identified in the baseline data. + +- name: VA educator expense deduction defaults to zero + period: 2026 + input: + state_code: VA + output: + va_educator_expense_deduction_person: 0 + +- name: VA educator expense deduction input flows into Virginia subtractions + period: 2026 + input: + people: + person1: + age: 40 + va_educator_expense_deduction_person: 400 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: VA + output: + va_educator_expense_deduction_person: 400 + va_subtractions: 400 diff --git a/policyengine_us/variables/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.py b/policyengine_us/variables/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.py new file mode 100644 index 00000000000..6a6eda880de --- /dev/null +++ b/policyengine_us/variables/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.py @@ -0,0 +1,24 @@ +from policyengine_us.model_api import * + + +class va_educator_expense_deduction_person(Variable): + value_type = float + entity = Person + label = "Virginia eligible educator expense deduction" + unit = USD + definition_period = YEAR + default_value = 0 + defined_for = StateCode.VA + # Va. Code 58.1-322.03 allows a deduction of the lesser of $500 or the + # eligible educator qualifying expenses that were NOT reimbursed nor claimed + # as a deduction on the federal return. Available for TY2022-2024 and, + # reinstated by the 2026 Appropriation Act (HB 30), for TY2026 and after; + # it did not apply for TY2025. Because the baseline data do not identify + # eligible-educator status or the amount of expenses not already claimed + # federally (the federal educator deduction is above-the-line and thus + # already reflected in federal AGI), this remains an explicit input that + # defaults to $0, matching the Ohio educator-deduction treatment. + reference = ( + "https://law.lis.virginia.gov/vacodefull/title58.1/chapter3/article2/", # Va. Code 58.1-322.03 - eligible educator expense deduction + "https://www.tax.virginia.gov/sites/default/files/inline-files/2026-legislative-summary.pdf", # 2026 Legislative Summary - reinstatement for TY2026+ + ) From 9148f0046f952204f18b27e92977725890263c89 Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Tue, 14 Jul 2026 15:09:42 -0400 Subject: [PATCH 3/4] Address Daphne's review on VA 2026 budget PR Educator deduction (should-address #1, #4; suggestions #1, #2): - Reclassify as a deduction (Va. Code 58.1-322.03), not a subtraction: move from subtractions.yaml into va_taxable_income atop itemized (like the CDCC deduction), so it no longer reduces VAGI. - Enforce the $500 per-educator cap and year-gate it (0 for TY2025 and pre- 2022) via a cap parameter, with eligible expenses as a raw input. Tests (should-address #2; suggestion #5): add refundable EITC TY2027/TY2028 (20%), standard deduction TY2026 regression and TY2029, other filing statuses for TY2027, and educator cap/year-gate/per-educator/non-VA/va_taxable_income integration cases. References (should-address #3, #6; suggestion #4): precise section URLs, #page anchors on the 2026 legislative summary, better HB 30 amendment link, trimmed the standard-deduction title, removed trailing whitespace. Changelog fragments kept at changelog.d root per CLAUDE.md (top-level files, no type subdirectories), which supersedes the review's move-to-subdir note. Co-Authored-By: Claude Opus 4.8 --- .../income/credits/eitc/match/refundable.yaml | 7 +- .../deductions/educator_expense/cap.yaml | 16 +++ .../va/tax/income/deductions/standard.yaml | 6 +- .../tax/income/subtractions/subtractions.yaml | 1 - .../eitc/va_refundable_eitc_if_claimed.yaml | 19 ++- .../va_educator_expense_deduction.yaml | 113 ++++++++++++++++++ .../deductions/va_standard_deduction.yaml | 59 +++++++++ .../va_educator_expense_deduction_person.yaml | 29 ----- .../va_educator_expense_deduction.py | 26 ++++ .../educator_expense/va_educator_expenses.py | 16 +++ .../va_educator_expense_deduction_person.py | 24 ---- .../states/va/tax/income/va_taxable_income.py | 7 +- 12 files changed, 260 insertions(+), 63 deletions(-) create mode 100644 policyengine_us/parameters/gov/states/va/tax/income/deductions/educator_expense/cap.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.yaml delete mode 100644 policyengine_us/tests/policy/baseline/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.yaml create mode 100644 policyengine_us/variables/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.py create mode 100644 policyengine_us/variables/gov/states/va/tax/income/deductions/educator_expense/va_educator_expenses.py delete mode 100644 policyengine_us/variables/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.py diff --git a/policyengine_us/parameters/gov/states/va/tax/income/credits/eitc/match/refundable.yaml b/policyengine_us/parameters/gov/states/va/tax/income/credits/eitc/match/refundable.yaml index 41290b1a7fd..17ede9d0209 100644 --- a/policyengine_us/parameters/gov/states/va/tax/income/credits/eitc/match/refundable.yaml +++ b/policyengine_us/parameters/gov/states/va/tax/income/credits/eitc/match/refundable.yaml @@ -27,8 +27,7 @@ metadata: - title: House Bill 1600 (2025 Appropriations Act) href: https://legiscan.com/VA/text/HB1600/id/3262750/Virginia-2025-HB1600-Chaptered.pdf#page=783 # HB 30 (2026) 3rd enactment clause extends the 20% refundable EITC through TY2029; it expires (0%) for TY2030+ - - title: House Bill 30 (2026 Appropriation Act, Special Session I, Chapter 1), third enactment clause - href: https://budget.lis.virginia.gov/bill/2026/2/HB30/Introduced/ + - title: House Bill 30 (2026 Appropriation Act, Special Session I, Chapter 1), Item 4-14 #1c (third enactment clause) + href: https://budget.lis.virginia.gov/amendment/2026/2/HB30/Introduced/CR/4-14/1c - title: Virginia Department of Taxation 2026 Legislative Summary - refundable EITC - href: https://www.tax.virginia.gov/sites/default/files/inline-files/2026-legislative-summary.pdf - + href: https://www.tax.virginia.gov/sites/default/files/inline-files/2026-legislative-summary.pdf#page=9 diff --git a/policyengine_us/parameters/gov/states/va/tax/income/deductions/educator_expense/cap.yaml b/policyengine_us/parameters/gov/states/va/tax/income/deductions/educator_expense/cap.yaml new file mode 100644 index 00000000000..44a19b939b4 --- /dev/null +++ b/policyengine_us/parameters/gov/states/va/tax/income/deductions/educator_expense/cap.yaml @@ -0,0 +1,16 @@ +description: Virginia caps the eligible educator expense deduction at this amount per eligible educator. The deduction did not apply for tax year 2025. +values: + 2022-01-01: 500 + 2025-01-01: 0 + 2026-01-01: 500 +metadata: + unit: currency-USD + period: year + label: Virginia eligible educator expense deduction cap + reference: + - title: Code of Virginia § 58.1-322.03.14 + href: https://law.lis.virginia.gov/vacode/title58.1/section58.1-322.03/ + - title: House Bill 30 (2026 Appropriation Act, Special Session I, Chapter 1), third enactment clause - reinstates the deduction for tax year 2026 and after + href: https://budget.lis.virginia.gov/amendment/2026/2/HB30/Introduced/CR/4-14/1c + - title: Virginia Department of Taxation 2026 Legislative Summary - eligible educator expenses deduction + href: https://www.tax.virginia.gov/sites/default/files/inline-files/2026-legislative-summary.pdf#page=10 diff --git a/policyengine_us/parameters/gov/states/va/tax/income/deductions/standard.yaml b/policyengine_us/parameters/gov/states/va/tax/income/deductions/standard.yaml index 716a06bb9d6..c140c185a6a 100644 --- a/policyengine_us/parameters/gov/states/va/tax/income/deductions/standard.yaml +++ b/policyengine_us/parameters/gov/states/va/tax/income/deductions/standard.yaml @@ -7,7 +7,7 @@ metadata: - filing_status reference: - title: Code of Virginia § 58.1-322.03.(1)(b) - href: https://law.lis.virginia.gov/vacodefull/title58.1/chapter3/article2/ + href: https://law.lis.virginia.gov/vacode/title58.1/section58.1-322.03/ - title: Virginia 2025 Form 760 Resident Individual Income Tax Instructions href: https://www.tax.virginia.gov/sites/default/files/vatax-pdf/2025-760-instructions.pdf#page=17 - title: Virginia 2024 Form 760 Resident Individual Income Tax Instructions @@ -22,10 +22,10 @@ metadata: href: https://www.tax.virginia.gov/sites/default/files/inline-files/2023-legislative-summary.pdf#page=10 - title: House Bill 1600 (2025 Appropriations Act) href: https://legiscan.com/VA/text/HB1600/id/3262750/Virginia-2025-HB1600-Chaptered.pdf#page=780 - - title: House Bill 30 (2026 Appropriation Act, Special Session I, Chapter 1), Item 4-14 #1c - $9,200/$18,400 for TY2027 and $9,300/$18,600 for TY2028-2029, sunset TY2030 + - title: House Bill 30 (2026 Appropriation Act, Special Session I, Chapter 1), Item 4-14 #1c href: https://budget.lis.virginia.gov/amendment/2026/2/HB30/Introduced/CR/4-14/1c - title: Virginia Department of Taxation 2026 Legislative Summary - standard deduction - href: https://www.tax.virginia.gov/sites/default/files/inline-files/2026-legislative-summary.pdf + href: https://www.tax.virginia.gov/sites/default/files/inline-files/2026-legislative-summary.pdf#page=9 JOINT: 2021-01-01: 9_000 diff --git a/policyengine_us/parameters/gov/states/va/tax/income/subtractions/subtractions.yaml b/policyengine_us/parameters/gov/states/va/tax/income/subtractions/subtractions.yaml index 0cf201f90da..72db59b04dc 100644 --- a/policyengine_us/parameters/gov/states/va/tax/income/subtractions/subtractions.yaml +++ b/policyengine_us/parameters/gov/states/va/tax/income/subtractions/subtractions.yaml @@ -14,7 +14,6 @@ values: - va_529_plan_deduction_person # Certification Number 34 - va_age_deduction_person # Certification Number 4 - taxable_social_security # Certification Number 5 - - va_educator_expense_deduction_person # Eligible educator expenses (TY2022-2024, TY2026+) metadata: diff --git a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/credits/eitc/va_refundable_eitc_if_claimed.yaml b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/credits/eitc/va_refundable_eitc_if_claimed.yaml index 742ef1f6410..ca129272ab9 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/credits/eitc/va_refundable_eitc_if_claimed.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/credits/eitc/va_refundable_eitc_if_claimed.yaml @@ -32,7 +32,24 @@ output: va_refundable_eitc_if_claimed: 0 -# HB 30 (2026) extends the 20% refundable rate through TY2029. +# HB 30 (2026) extends the 20% refundable rate through TY2029. Under prior law +# the rate reverted after TY2026; these years now stay at 20%. +- name: VA 2027 Refundable EITC still at 20% + period: 2027 + input: + state_code: VA + eitc: 5_000 + output: + va_refundable_eitc_if_claimed: 1_000 + +- name: VA 2028 Refundable EITC still at 20% + period: 2028 + input: + state_code: VA + eitc: 5_000 + output: + va_refundable_eitc_if_claimed: 1_000 + - name: VA 2029 Refundable EITC still at 20% period: 2029 input: diff --git a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.yaml b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.yaml new file mode 100644 index 00000000000..2035a7c021e --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.yaml @@ -0,0 +1,113 @@ +# Virginia eligible educator expense deduction (Va. Code 58.1-322.03): the lesser +# of $500 or eligible educator expenses not claimed federally, per eligible +# educator. Reinstated for TY2026+ by the 2026 Appropriation Act (HB 30); it did +# not apply for TY2025. Eligible expenses are an explicit input (default $0). + +- name: 2026 educator deduction defaults to zero with no expenses + period: 2026 + input: + state_code: VA + output: + va_educator_expense_deduction: 0 + +- name: 2026 educator deduction is the lesser of expenses and the $500 cap + period: 2026 + input: + people: + person1: + va_educator_expenses: 800 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: VA + output: + va_educator_expense_deduction: 500 + +- name: 2026 educator deduction below the cap equals the expenses + period: 2026 + input: + people: + person1: + va_educator_expenses: 300 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: VA + output: + va_educator_expense_deduction: 300 + +- name: 2025 educator deduction is unavailable even with expenses + period: 2025 + input: + people: + person1: + va_educator_expenses: 400 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: VA + output: + va_educator_expense_deduction: 0 + +- name: 2026 non-Virginia filer receives no educator deduction + period: 2026 + input: + people: + person1: + va_educator_expenses: 400 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: MD + output: + va_educator_expense_deduction: 0 + +- name: 2026 the $500 cap applies per eligible educator + period: 2026 + input: + people: + person1: + va_educator_expenses: 500 + person2: + va_educator_expenses: 500 + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: VA + output: + va_educator_expense_deduction: 1_000 + +- name: 2026 educator deduction reduces Virginia taxable income + period: 2026 + input: + people: + person1: + va_educator_expenses: 400 + tax_units: + tax_unit: + members: [person1] + va_agi: 50_000 + va_deductions: 0 + va_total_exemptions: 0 + households: + household: + members: [person1] + state_code: VA + output: + va_educator_expense_deduction: 400 + va_taxable_income: 49_600 diff --git a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/va_standard_deduction.yaml b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/va_standard_deduction.yaml index 21fe9bc48b1..37d5f9a3f43 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/va_standard_deduction.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/va_standard_deduction.yaml @@ -99,3 +99,62 @@ state_code: VA output: va_standard_deduction: 6_000 + +# 2026 regression - HB 30 leaves TY2026 unchanged at $8,750 / $17,500. +- name: VA 2026 Standard deduction unchanged for single filer + period: 2026 + input: + filing_status: SINGLE + state_code: VA + output: + va_standard_deduction: 8_750 + +- name: VA 2026 Standard deduction unchanged for married filing jointly + period: 2026 + input: + filing_status: JOINT + state_code: VA + output: + va_standard_deduction: 17_500 + +# 2029 - last year of the increased amounts before the TY2030 sunset. +- name: VA 2029 Standard deduction for single filer + period: 2029 + input: + filing_status: SINGLE + state_code: VA + output: + va_standard_deduction: 9_300 + +- name: VA 2029 Standard deduction for married filing jointly + period: 2029 + input: + filing_status: JOINT + state_code: VA + output: + va_standard_deduction: 18_600 + +# 2027 - the remaining filing statuses take the single amount ($9,200). +- name: VA 2027 Standard deduction if married filing separately + period: 2027 + input: + filing_status: SEPARATE + state_code: VA + output: + va_standard_deduction: 9_200 + +- name: VA 2027 Standard deduction if head of household + period: 2027 + input: + filing_status: HEAD_OF_HOUSEHOLD + state_code: VA + output: + va_standard_deduction: 9_200 + +- name: VA 2027 Standard deduction if surviving spouse + period: 2027 + input: + filing_status: SURVIVING_SPOUSE + state_code: VA + output: + va_standard_deduction: 9_200 diff --git a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.yaml b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.yaml deleted file mode 100644 index 7ca7c6af310..00000000000 --- a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# Virginia eligible educator expense deduction (Va. Code 58.1-322.03), -# reinstated for TY2026+ by the 2026 Appropriation Act (HB 30). Modeled as an -# explicit input (defaults to $0) because the excess-over-federal amount is not -# identified in the baseline data. - -- name: VA educator expense deduction defaults to zero - period: 2026 - input: - state_code: VA - output: - va_educator_expense_deduction_person: 0 - -- name: VA educator expense deduction input flows into Virginia subtractions - period: 2026 - input: - people: - person1: - age: 40 - va_educator_expense_deduction_person: 400 - tax_units: - tax_unit: - members: [person1] - households: - household: - members: [person1] - state_code: VA - output: - va_educator_expense_deduction_person: 400 - va_subtractions: 400 diff --git a/policyengine_us/variables/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.py b/policyengine_us/variables/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.py new file mode 100644 index 00000000000..4693ffd0858 --- /dev/null +++ b/policyengine_us/variables/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.py @@ -0,0 +1,26 @@ +from policyengine_us.model_api import * + + +class va_educator_expense_deduction(Variable): + value_type = float + entity = TaxUnit + label = "Virginia eligible educator expense deduction" + unit = USD + definition_period = YEAR + defined_for = StateCode.VA + reference = ( + "https://law.lis.virginia.gov/vacode/title58.1/section58.1-322.03/", + "https://www.tax.virginia.gov/sites/default/files/inline-files/2026-legislative-summary.pdf#page=10", + ) + + def formula(tax_unit, period, parameters): + # Va. Code 58.1-322.03: the lesser of $500 or eligible educator expenses + # (not claimed federally) per eligible educator. Available for TY2022-2024 + # and, reinstated by the 2026 Appropriation Act (HB 30), TY2026+; the cap + # is 0 for TY2025 (and before TY2022), so the deduction is gated by year. + cap = parameters( + period + ).gov.states.va.tax.income.deductions.educator_expense.cap + person = tax_unit.members + capped = min_(person("va_educator_expenses", period), cap) + return tax_unit.sum(capped) diff --git a/policyengine_us/variables/gov/states/va/tax/income/deductions/educator_expense/va_educator_expenses.py b/policyengine_us/variables/gov/states/va/tax/income/deductions/educator_expense/va_educator_expenses.py new file mode 100644 index 00000000000..6a49c5d0a74 --- /dev/null +++ b/policyengine_us/variables/gov/states/va/tax/income/deductions/educator_expense/va_educator_expenses.py @@ -0,0 +1,16 @@ +from policyengine_us.model_api import * + + +class va_educator_expenses(Variable): + value_type = float + entity = Person + label = "Virginia eligible educator expenses" + unit = USD + definition_period = YEAR + defined_for = StateCode.VA + # Eligible educator qualifying expenses that were NOT reimbursed nor claimed + # as a deduction on the federal return (Va. Code 58.1-322.03). The federal + # educator deduction is above-the-line and already reflected in federal AGI, + # and the baseline data do not identify this excess amount, so this is an + # explicit input that defaults to $0 (as with the Ohio educator deduction). + reference = "https://law.lis.virginia.gov/vacode/title58.1/section58.1-322.03/" diff --git a/policyengine_us/variables/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.py b/policyengine_us/variables/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.py deleted file mode 100644 index 6a6eda880de..00000000000 --- a/policyengine_us/variables/gov/states/va/tax/income/subtractions/educator_expense/va_educator_expense_deduction_person.py +++ /dev/null @@ -1,24 +0,0 @@ -from policyengine_us.model_api import * - - -class va_educator_expense_deduction_person(Variable): - value_type = float - entity = Person - label = "Virginia eligible educator expense deduction" - unit = USD - definition_period = YEAR - default_value = 0 - defined_for = StateCode.VA - # Va. Code 58.1-322.03 allows a deduction of the lesser of $500 or the - # eligible educator qualifying expenses that were NOT reimbursed nor claimed - # as a deduction on the federal return. Available for TY2022-2024 and, - # reinstated by the 2026 Appropriation Act (HB 30), for TY2026 and after; - # it did not apply for TY2025. Because the baseline data do not identify - # eligible-educator status or the amount of expenses not already claimed - # federally (the federal educator deduction is above-the-line and thus - # already reflected in federal AGI), this remains an explicit input that - # defaults to $0, matching the Ohio educator-deduction treatment. - reference = ( - "https://law.lis.virginia.gov/vacodefull/title58.1/chapter3/article2/", # Va. Code 58.1-322.03 - eligible educator expense deduction - "https://www.tax.virginia.gov/sites/default/files/inline-files/2026-legislative-summary.pdf", # 2026 Legislative Summary - reinstatement for TY2026+ - ) diff --git a/policyengine_us/variables/gov/states/va/tax/income/va_taxable_income.py b/policyengine_us/variables/gov/states/va/tax/income/va_taxable_income.py index c77f458de9a..991181b87e2 100644 --- a/policyengine_us/variables/gov/states/va/tax/income/va_taxable_income.py +++ b/policyengine_us/variables/gov/states/va/tax/income/va_taxable_income.py @@ -23,4 +23,9 @@ def formula(tax_unit, period, parameters): cdcc_expense_deduction = tax_unit( "va_child_dependent_care_expense_deduction", period ) - return max_(agi - total_deductions - cdcc_expense_deduction, 0) + # Virginia also allows the eligible educator expense deduction. + educator_deduction = tax_unit("va_educator_expense_deduction", period) + return max_( + agi - total_deductions - cdcc_expense_deduction - educator_deduction, + 0, + ) From 07e1fcc22e56edfea21a720eda923c5607e26180 Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Tue, 14 Jul 2026 15:29:43 -0400 Subject: [PATCH 4/4] Fix VA educator cap: pre-2022 floor and correct statute subdivision - Add 2021-01-01: 0 to the educator cap so VA taxable-income calculations before 2022 do not hit min_(expenses, None) and error (va_taxable_income now computes the deduction unconditionally). Adds 2021 and 2024 regression tests. - Correct the cap reference subdivision: the eligible educator expense deduction is Va. Code 58.1-322.03 subdivision 18, not 14. Co-Authored-By: Claude Opus 4.8 --- .../deductions/educator_expense/cap.yaml | 3 +- .../va_educator_expense_deduction.yaml | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/policyengine_us/parameters/gov/states/va/tax/income/deductions/educator_expense/cap.yaml b/policyengine_us/parameters/gov/states/va/tax/income/deductions/educator_expense/cap.yaml index 44a19b939b4..a97ca5b7247 100644 --- a/policyengine_us/parameters/gov/states/va/tax/income/deductions/educator_expense/cap.yaml +++ b/policyengine_us/parameters/gov/states/va/tax/income/deductions/educator_expense/cap.yaml @@ -1,5 +1,6 @@ description: Virginia caps the eligible educator expense deduction at this amount per eligible educator. The deduction did not apply for tax year 2025. values: + 2021-01-01: 0 2022-01-01: 500 2025-01-01: 0 2026-01-01: 500 @@ -8,7 +9,7 @@ metadata: period: year label: Virginia eligible educator expense deduction cap reference: - - title: Code of Virginia § 58.1-322.03.14 + - title: Code of Virginia § 58.1-322.03.18 href: https://law.lis.virginia.gov/vacode/title58.1/section58.1-322.03/ - title: House Bill 30 (2026 Appropriation Act, Special Session I, Chapter 1), third enactment clause - reinstates the deduction for tax year 2026 and after href: https://budget.lis.virginia.gov/amendment/2026/2/HB30/Introduced/CR/4-14/1c diff --git a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.yaml b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.yaml index 2035a7c021e..abf1288137a 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/va/tax/income/deductions/educator_expense/va_educator_expense_deduction.yaml @@ -111,3 +111,41 @@ output: va_educator_expense_deduction: 400 va_taxable_income: 49_600 + +- name: 2024 educator deduction was available under prior law + period: 2024 + input: + people: + person1: + va_educator_expenses: 800 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: VA + output: + va_educator_expense_deduction: 500 + +# Regression: the cap is defined before 2022 (0), so pre-2022 VA taxable-income +# calculations do not error on a missing parameter value. +- name: 2021 educator deduction is zero and taxable income still computes + period: 2021 + input: + people: + person1: + va_educator_expenses: 400 + tax_units: + tax_unit: + members: [person1] + va_agi: 50_000 + va_deductions: 0 + va_total_exemptions: 0 + households: + household: + members: [person1] + state_code: VA + output: + va_educator_expense_deduction: 0 + va_taxable_income: 50_000