diff --git a/changelog.d/fix-tip-deduction-sstb-mixed.fixed.md b/changelog.d/fix-tip-deduction-sstb-mixed.fixed.md new file mode 100644 index 00000000000..15c4f3a5578 --- /dev/null +++ b/changelog.d/fix-tip-deduction-sstb-mixed.fixed.md @@ -0,0 +1,5 @@ +Extend `tip_income_deduction_occupation_requirement_met` to recognize +SSTB status from the per-category `sstb_self_employment_income` input, +not only the legacy all-or-nothing `business_is_sstb` flag. This keeps +the ยง224 SSTB exclusion in force for self-employed tipped workers who +populate the new SSTB inputs added in #7944. diff --git a/policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction.yaml b/policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction.yaml index a3212b4f2b0..de676f0d455 100644 --- a/policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction.yaml +++ b/policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction.yaml @@ -139,3 +139,24 @@ output: tip_income_deduction_occupation_requirement_met: false tip_income_deduction: 0 + +- name: SSTB self-employment income blocks tip deduction even without legacy flag + period: 2025 + input: + people: + worker: + ssn_card_type: CITIZEN + is_tax_unit_head: true + is_tax_unit_spouse: false + tip_income: 5_000 + treasury_tipped_occupation_code: 102 + business_is_sstb: false + sstb_self_employment_income: 50_000 + tax_units: + tax_unit: + adjusted_gross_income: 100_000 + filing_status: SINGLE + members: [worker] + output: + tip_income_deduction_occupation_requirement_met: false + tip_income_deduction: 0 diff --git a/policyengine_us/variables/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction_occupation_requirement_met.py b/policyengine_us/variables/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction_occupation_requirement_met.py index ddc54de28e5..fd4695d056e 100644 --- a/policyengine_us/variables/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction_occupation_requirement_met.py +++ b/policyengine_us/variables/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction_occupation_requirement_met.py @@ -20,5 +20,9 @@ def formula(person, period, _parameters): treasury_tipped_occupation_code = person( "treasury_tipped_occupation_code", period ) - is_sstb = person("business_is_sstb", period) + is_sstb_legacy = person("business_is_sstb", period) + has_sstb_self_employment_income = ( + person("sstb_self_employment_income", period) > 0 + ) + is_sstb = is_sstb_legacy | has_sstb_self_employment_income return (treasury_tipped_occupation_code > 0) & ~is_sstb