diff --git a/changelog.d/fix-sc-obbba-addback.fixed.md b/changelog.d/fix-sc-obbba-addback.fixed.md new file mode 100644 index 00000000000..43f38f0aa41 --- /dev/null +++ b/changelog.d/fix-sc-obbba-addback.fixed.md @@ -0,0 +1 @@ +Add SC OBBBA non-conformity addition for 2025 (standard deduction increase, senior deduction, tip/overtime/auto loan deductions). diff --git a/policyengine_us/parameters/gov/states/sc/tax/income/additions/additions.yaml b/policyengine_us/parameters/gov/states/sc/tax/income/additions/additions.yaml index 38aaf717700..7a97ad0562b 100644 --- a/policyengine_us/parameters/gov/states/sc/tax/income/additions/additions.yaml +++ b/policyengine_us/parameters/gov/states/sc/tax/income/additions/additions.yaml @@ -7,6 +7,10 @@ values: # - Interest income on obligations of states and political subdivisions other than South Carolina # - Other additions to income - qualified_business_income_deduction + 2025-01-01: + - sc_state_tax_addback + - qualified_business_income_deduction + - sc_obbba_addback metadata: unit: list @@ -14,7 +18,7 @@ metadata: label: South Carolina federal taxable income additions reference: - title: SC 1040 tax form instructions (2025) - href: https://dor.sc.gov/sites/dor/files/forms/SC1040Instr_2025.pdf#page=3 + href: https://dor.sc.gov/sites/dor/files/forms/SC1040Instr_2025.pdf#page=5 - title: SC 1040 tax form (2021) href: https://dor.sc.gov/forms-site/Forms/SC1040_2021.pdf#page=2 - title: SC 1040 tax form instructions (2021) diff --git a/policyengine_us/parameters/gov/states/sc/tax/income/additions/obbba/pre_obbba_standard_deduction.yaml b/policyengine_us/parameters/gov/states/sc/tax/income/additions/obbba/pre_obbba_standard_deduction.yaml new file mode 100644 index 00000000000..41c6ad1edda --- /dev/null +++ b/policyengine_us/parameters/gov/states/sc/tax/income/additions/obbba/pre_obbba_standard_deduction.yaml @@ -0,0 +1,27 @@ +description: South Carolina uses this amount as the pre-One Big Beautiful Bill Act standard deduction for federal non-conformity additions under the individual income tax program. + +SINGLE: + 2025-01-01: 15_000 +JOINT: + 2025-01-01: 30_000 +HEAD_OF_HOUSEHOLD: + 2025-01-01: 22_500 +SEPARATE: + 2025-01-01: 15_000 +SURVIVING_SPOUSE: + 2025-01-01: 30_000 + +metadata: + unit: currency-USD + period: year + label: South Carolina pre-OBBBA conformity standard deduction + breakdown: + - filing_status + propagate_metadata_to_children: true + reference: + - title: SC DOR Internal Revenue Code Conformity Update + href: https://dor.sc.gov/income-tax-south-carolina-internal-revenue-code-conformity-update + - title: SC 1040 Instructions 2025, Line e + href: https://dor.sc.gov/sites/dor/files/forms/SC1040Instr_2025.pdf#page=5 + - title: IRS Revenue Procedure 2024-40, Section 3.01 + href: https://www.irs.gov/pub/irs-drop/rp-24-40.pdf#page=12 diff --git a/policyengine_us/tests/policy/baseline/gov/states/sc/tax/income/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/sc/tax/income/integration.yaml index 54720e34384..be00a16f91f 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/sc/tax/income/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/sc/tax/income/integration.yaml @@ -83,3 +83,49 @@ state_fips: 45 output: sc_income_tax: 117 + +- name: SC joint 2025 pension with OBBBA addback + # TaxAct adds back $7,500 on SC1040 line 2e: + # $1,500 OBBBA standard deduction increase (MFJ $30K → $31.5K) + # $6,000 OBBBA senior deduction (1 eligible person age 65) + absolute_error_margin: 5 + period: 2025 + input: + people: + person1: + age: 65 + taxable_private_pension_income: 100_000 + social_security_retirement: 5_000 + is_tax_unit_head: true + person2: + age: 54 + social_security_retirement: 5_000 + is_tax_unit_spouse: true + person3: + age: 11 + is_tax_unit_dependent: true + is_tax_unit_head: false + is_tax_unit_spouse: false + person4: + age: 4 + is_tax_unit_dependent: true + is_tax_unit_head: false + is_tax_unit_spouse: false + tax_units: + tax_unit: + members: [person1, person2, person3, person4] + premium_tax_credit: 0 + local_income_tax: 0 + state_sales_tax: 0 + spm_units: + spm_unit: + members: [person1, person2, person3, person4] + snap: 0 + tanf: 0 + households: + household: + members: [person1, person2, person3, person4] + state_fips: 45 + output: + sc_obbba_addback: 7_500 + sc_income_tax: 1_677 diff --git a/policyengine_us/variables/gov/states/sc/tax/income/additions/sc_obbba_addback.py b/policyengine_us/variables/gov/states/sc/tax/income/additions/sc_obbba_addback.py new file mode 100644 index 00000000000..d4af5a07fcc --- /dev/null +++ b/policyengine_us/variables/gov/states/sc/tax/income/additions/sc_obbba_addback.py @@ -0,0 +1,46 @@ +from policyengine_us.model_api import * + + +class sc_obbba_addback(Variable): + value_type = float + entity = TaxUnit + label = "South Carolina federal non-conformity addition for the One Big Beautiful Bill Act" + unit = USD + definition_period = YEAR + defined_for = StateCode.SC + reference = ( + "https://dor.sc.gov/income-tax-south-carolina-internal-revenue-code-conformity-update", + "https://dor.sc.gov/sites/dor/files/forms/SC1040_2025.pdf", + "https://dor.sc.gov/sites/dor/files/forms/SC1040Instr_2025.pdf#page=5", + ) + + def formula(tax_unit, period, parameters): + p = parameters(period).gov.states.sc.tax.income.additions.obbba + # SC has not conformed to the One Big Beautiful Bill Act + # (signed July 4, 2025). SC1040 line e adds back federal + # deductions SC does not recognize. + # + # 1. Standard deduction increase ($750 S/MFS, $1,125 HOH, + # $1,500 MFJ/SS). Only if taxpayer used standard deduction. + filing_status = tax_unit("filing_status", period) + itemizes = tax_unit("tax_unit_itemizes", period) + federal_std_ded = parameters(period).gov.irs.deductions.standard.amount[ + filing_status + ] + pre_obbba_std_ded = p.pre_obbba_standard_deduction[filing_status] + std_ded_addback = where( + itemizes, 0, max_(federal_std_ded - pre_obbba_std_ded, 0) + ) + # 2. Enhanced senior deduction ($6,000 for age 65+). + senior_deduction = tax_unit("additional_senior_deduction", period) + # 3. Other non-conformity deductions (tips, overtime, auto loan). + tip_deduction = tax_unit("tip_income_deduction", period) + overtime_deduction = tax_unit("overtime_income_deduction", period) + auto_loan_deduction = tax_unit("auto_loan_interest_deduction", period) + return ( + std_ded_addback + + senior_deduction + + tip_deduction + + overtime_deduction + + auto_loan_deduction + )