Retirement

Backdoor / mega-backdoor Roth (pro-rata rule)

Two Roth accumulation moves for earners over the direct-Roth income limits. The backdoor Roth applies the §408(d)(2) pro-rata rule: a nondeductible traditional-IRA contribution converted to Roth is taxed by basis across all traditional/SEP/SIMPLE IRAs, so a pre-tax balance makes part of the "backdoor" taxable (e.g. $93k pre-tax + $7k basis → 93% taxable). The mega-backdoor computes the after-tax 401(k) room under the §415(c) annual-additions limit (limit − elective deferrals − employer contributions, optionally capped by the plan). Returns the taxable/nontaxable split of the conversion, the basis and pre-tax left afterward, and the §415(c) room. Reuses the grounded contribution-limit tables; deterministic; not tax advice.

post/v1/retirement/backdoor-roth

Request

  • Base URL: https://api.numeratica.com
  • URL: https://api.numeratica.com/v1/retirement/backdoor-roth
  • Auth: one of:
    • HTTP bearer
    • API key in header X-API-Key

Request body

filing_status'single' | 'mfj' | 'mfs' | 'hoh' required
tax_year2025 | 2026 required
ageinteger required

Drives the IRA contribution limit (age-50 catch-up).

pretax_ira_balancenumber required

Aggregate pre-tax across all traditional/SEP/SIMPLE IRAs (deductible + earnings).

existing_basisnumber

Prior after-tax basis (Form 8606 line 14).

nondeductible_contributionnumber required

New nondeductible contribution this year.

conversion_amountnumber

Amount converted to Roth (0 ⇒ the new contribution; capped at the total IRA value).

elective_deferralsnumber

Employee 401(k) deferrals (pre-tax + Roth), excluding catch-up.

employer_contributionsnumber

Employer match + profit-sharing.

plan_after_tax_limitnumber

Optional plan cap on after-tax contributions (0 = none).

Response

The pro-rata split of the conversion + the mega-backdoor room

result_idstring
engine_versionstring
disclaimerstring

Example response

{
  "result_id": "backdoor_1a2b3c4d5e6f7a8b",
  "engine_version": "backdoor-roth-1.0.0"
}

Changes

No recorded changes to this operation across all 1 revision of this API.