PolicyEngine / PolicyEngine/policyengine-us
2026 QBID applies the §199A(i) $400 minimum to all QBI, not active-business QBI
- Dominant language
- Python
- Stars
- 162
- Forks
- 212
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 97
Description
## Summary
For 2026, `qualified_business_income_deduction` applies the new §199A(i) $400 minimum deduction (OBBBA, Pub. L. 119-21) whenever **total** QBI ≥ $1,000. The statute conditions the minimum on the taxpayer's aggregate qualified business income from **active qualified trades or businesses**. Because the model exposes no separate active-business QBI aggregate, a taxpayer whose ordinary §199A(a) deduction is $0 (e.g., above the phase-in band with zero W-2 wages and zero UBIA, no active business) still receives $400.
## Reproduction (policyengine-us 1.767.3, policyengine-core 3.30.3)
```python
from policyengine_us import Simulation
YEAR = 2026
sim = Simulation(situation={
"people": {"head": {
"age": {YEAR: 45},
"qualified_business_income": {YEAR: 300_000},
"w2_wages_from_qualified_business": {YEAR: 0},
"unadjusted_basis_qualified_property": {YEAR: 0},
}},
"tax_units": {"tax_unit": {
"members": ["head"],
"taxable_income_less_qbid": {YEAR: 300_000},
"filing_status": {YEAR: "SINGLE"},
}},
"families": {"family": {"members": ["head"]}},
"spm_units": {"spm_unit": {"members": ["head"]}},
"households": {"household": {"members": ["head"], "state_name": {YEAR: "TX"}}},
})
print(sim.calculate("qualified_business_income_deduction", YEAR))
```
Output: `[400.]`
Expected: `[0.]` — single filer, taxable income $300,000 is above the 2026 phase-in band top ($201,750 + $75,000), so the §199A(b)(2)(B) wage/UBIA limit is $0, and with no active qualified business the §199A(i) minimum does not apply.
## Where
`variables/gov/irs/income/taxable_income/deductions/qualified_business_income_deduction/qualified_business_income_deduction.py` (lines 20–34 at 49d19b2): the floor test reads `qualified_business_income + sstb_qualified_business_income` rather than an active-business aggregate.
## Suggested fix
Either add a distinct input/derived aggregate for active-qualified-business QBI and key the §199A(i) floor to it, or document the approximation in the variable's metadata. Found via cross-validation against an independent RuleSpec encoding of §199A as amended.
Contributor guide
Research direction
Start with variables/gov/irs/income/taxable_income/deductions/qualified_business_income_deduction/qualified_business_income_deduction.py, especially lines 20–34 at commit 49d19b2, and run the supplied 2026 Simulation reproduction. Trace how the floor test aggregates QBI and how the model represents active businesses. Done means the reproduction returns $0 for the stated case, with coverage for the §199A(i) minimum behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 56/100