Skip to content

Self-employed pension deduction: compensation from Schedule C profit, no section 404 percentage limit, catch-ups under 415(c) #10529

Open

Description

@MaxGhenis

What the model does

At 035a1570, the self-employed pension deduction is min(desired contributions, the section 415(c) limit, Schedule C profit):

  • self_employed_pension_contribution_limit.py lines 18-21 return min_(p.limit.annual_additions, max_(0, total_self_employment_income)). That's $72,000 in 2026, or Schedule C profit if smaller.
  • self_employed_pension_contributions.py lines 16-19 take the smaller of self_employed_pension_contributions_desired and that limit.
  • self_employed_pension_contribution_ald_person.py lines 16-19 cap the result again at max_(0, total_self_employment_income).
  • total_self_employment_income adds only the two Schedule C inputs, self_employment_income and sstb_self_employment_income.

#3889 asked for statutory limits here, noting that "different pension types have different limits", and is closed. #8419 added the 415(c) cap. The limits below are still missing.

What the law says

  • Compensation is earned income from the plan's business. 26 USC 404(a)(8)(C) allows contributions for a self-employed individual up to "the earned income of such individual (determined without regard to the deductions allowed by this section) derived from the trade or business with respect to which such plan is established". 404(a)(8)(D) makes every reference to compensation a reference to that earned income. 401(c)(2)(A) builds earned income from net earnings from self-employment: after the deductible half of SE tax (clause (vi)), after the section 404 deduction itself (clause (v)), and only for a business in which the taxpayer's personal services are a material income-producing factor (clause (i)). A farm or a partnership can establish the plan; the model counts only Schedule C.
  • Profit-sharing plans and SEPs: 25% of compensation. 404(a)(3)(A)(i)(I) caps the deduction at 25% of compensation. With compensation net of the deduction, that's 20% of (net profit − deductible SE tax). The model has no percentage limit.
  • Elective deferrals sit outside that limit. 404(n) exempts them from 404(a)(3). Catch-up contributions sit outside 415(c): 414(v)(3)(A)(i) says they aren't "subject to any otherwise applicable limitation contained in" 415(c). The model applies 415(c) to the whole desired amount.
  • Defined benefit plans have funding-based deductions under 404(a)(1), not the 415(c) defined-contribution limit.

Hand-computed cases

Each is one unmarried adult in 2026 with no wages. Half of SE tax is gross SE earnings × 0.9235 × 0.153 / 2 below the wage base.

  1. A SEP, Schedule C $10,000, $5,000 contributed.
    • Half of SE tax: 10,000 × 0.9235 × 0.153 / 2 = $706.48.
    • Law: 20% × (10,000 − 706.48) = $1,858.70.
    • Model: min(5,000, 72,000, 10,000) = $5,000, which is $3,141.30 too much.
  2. Schedule C $1,000, $1,380 desired (any plan type).
    • Half of SE tax: 1,000 × 0.0706 = $70.65, so earned income is at most $929.35, the most any plan can take.
    • Model: $1,000, and AGI is −$70.65.
  3. Schedule C $1,000 plus a $50,000 partnership share; $5,000 to the partnership's profit-sharing plan.
    • Half of SE tax: 51,000 × 0.9235 × 0.153 / 2 = $3,603.04; the partnership's share is 50/51 of it, $3,532.39.
    • Law: 20% × (50,000 − 3,532.39) = $9,293.52 ≥ 5,000, so $5,000 is deductible.
    • Model: capped at Schedule C profit, $1,000.
  4. Farm profit only, $1,000 to a SEP. The model deducts 0; the law allows up to 20% of the farm's earned income.
  5. Age 55, Schedule C $300,000; $80,000 to a solo 401(k) ($24,500 deferral, $8,000 catch-up, $47,500 employer).
    • Half of SE tax: (0.124 × 184,500 + 0.029 × 277,050) / 2 = $15,456.23.
    • Law: the employer part is within 20% × (300,000 − 15,456.23) = $56,908.75, the deferral is within 402(g), and the catch-up sits outside 415(c), so all $80,000 is deductible.
    • Model: $72,000.

So the error runs both ways: too much where the plan's earned income or the 25% limit binds, and too little for a plan under a farm or partnership, for catch-ups and for defined benefit plans.

What's missing

The model has no input for the plan type or the plan's business. Options:

Related

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions