The Big Decision: Pre-Tax or After-Tax?
As a tax professional and IRS Enrolled Agent, the Traditional vs. Roth 401(k) question is probably the #1 thing my clients ask me about every January. With the 2026 limit now at $24,500, and several new SECURE 2.0 Act rules taking effect, I wanted to lay out the tax implications clearly and show you how to track both types properly in Beancount.
The Fundamental Tax Difference
Let me break this down as simply as I can:
| Traditional 401(k) | Roth 401(k) | |
|---|---|---|
| Contributions | Pre-tax (reduces taxable income NOW) | After-tax (no current tax break) |
| Growth | Tax-deferred | Tax-free |
| Withdrawals | Taxed as ordinary income | Tax-free (if qualified) |
| Best if | You expect lower tax rate in retirement | You expect same or higher tax rate |
| RMDs | Required at age 73 | NO longer required (SECURE 2.0) |
That last row is a big deal. Starting in 2024, Roth 401(k) accounts are no longer subject to Required Minimum Distributions. This is a game-changer for estate planning and makes Roth even more attractive for people who don’t need the money in early retirement.
2026 Rule Change: Mandatory Roth Catch-Up for High Earners
Here’s the new wrinkle that trips people up: if your FICA wages exceeded $150,000 in the prior year (2025) and you’re age 50 or older, your catch-up contributions in 2026 must be designated as Roth. No more pre-tax catch-up for high earners. The standard catch-up is $8,000, and for ages 60-63 there’s a “super catch-up” of $11,250.
Setting Up Both in Beancount
Here’s my recommended account structure for tracking Traditional and Roth side by side:
; === Traditional 401(k) Accounts ===
2020-01-01 open Assets:Retirement:Traditional401k:Employee
2020-01-01 open Assets:Retirement:Traditional401k:Employer ; Match always goes here
2020-01-01 open Assets:Retirement:Traditional401k:Investments:VTSAX
2020-01-01 open Assets:Retirement:Traditional401k:Investments:VBTLX
; === Roth 401(k) Accounts ===
2020-01-01 open Assets:Retirement:Roth401k:Employee
2020-01-01 open Assets:Retirement:Roth401k:Investments:VTSAX
2020-01-01 open Assets:Retirement:Roth401k:Investments:VBTLX
; === Tax Impact Tracking ===
2020-01-01 open Expenses:Taxes:Federal:IncomeTax
2020-01-01 open Expenses:Taxes:Federal:IncomeTax:Deferred ; Traditional defers this
2020-01-01 open Income:Salary:Gross
Recording a Split Contribution
Many people (myself included) recommend splitting contributions between Traditional and Roth to hedge against future tax rate uncertainty. Here’s how to record a 60/40 Traditional/Roth split:
2026-01-31 * "Employer" "January Paycheck - 401k Split"
Income:Salary:Gross -6,250.00 USD
; Traditional 401(k) - reduces taxable income
Assets:Retirement:Traditional401k:Employee 565.38 USD
; Roth 401(k) - paid with after-tax dollars
Assets:Retirement:Roth401k:Employee 376.93 USD
; Combined employee deferral: $942.31/paycheck
Expenses:Taxes:Federal:IncomeTax 937.50 USD
Expenses:Taxes:State:IncomeTax 312.50 USD
Expenses:Taxes:FICA:SocialSecurity 387.50 USD
Expenses:Taxes:FICA:Medicare 90.63 USD
Assets:Bank:Checking 3,579.56 USD
; Employer match is ALWAYS pre-tax, even if your contributions are Roth
2026-01-31 * "Employer" "401k Employer Match"
Income:Salary:Match401k -312.50 USD
Assets:Retirement:Traditional401k:Employer 312.50 USD
Note that critical detail: employer match always goes into the Traditional (pre-tax) bucket, regardless of whether your own contributions are Traditional or Roth. This is an IRS rule, not an employer choice.
Tax Savings Analysis with BQL
Here’s a query I run to see the annual tax impact of my Traditional contributions — essentially, how much I’m deferring in federal income tax:
SELECT
year, sum(position) as traditional_contributions
WHERE
account = 'Assets:Retirement:Traditional401k:Employee'
GROUP BY year
ORDER BY year DESC
For someone in the 24% federal bracket, a $14,700 Traditional contribution (60% of $24,500) saves roughly $3,528 in federal income tax for the year. That’s real money, though you’ll eventually pay tax on withdrawals.
The Crossover Analysis
The million-dollar question: at what point does Roth “win” over Traditional? The key variables are:
- Current marginal tax rate vs. expected retirement tax rate
- Years until withdrawal (more years = more tax-free growth advantage for Roth)
- State tax situation (retiring to a no-income-tax state tips the scale toward Traditional)
My rule of thumb for clients:
- Salary under $100k: Lean Roth (you’re in a lower bracket now)
- Salary $100k-$200k: Split 50/50 or 60/40 Traditional
- Salary over $200k: Lean Traditional (maximize the tax deduction now)
Tracking the Tax Basis for Future Withdrawals
One thing that many Beancount users forget: you need to track your Roth 401(k) contribution basis separately, because it matters for the 5-year rule on tax-free withdrawals. I add metadata to every Roth contribution:
2026-01-31 * "Employer" "Roth 401k contribution"
Assets:Retirement:Roth401k:Employee 376.93 USD
roth-basis: 376.93
tax-year: 2026
Income:Salary:Gross -376.93 USD
This makes it easy to query total basis when you eventually start withdrawals, and to verify you’ve met the 5-year holding requirement.
Year-End Verification
At tax time, I reconcile against the W-2 Box 12:
- Code D: Traditional 401(k) deferrals
- Code AA: Roth 401(k) deferrals
; Verify against W-2 Box 12
2026-12-31 balance Assets:Retirement:Traditional401k:Employee 14,700.00 USD
; Should match W-2 Box 12 Code D
2026-12-31 balance Assets:Retirement:Roth401k:Employee 9,800.00 USD
; Should match W-2 Box 12 Code AA
; Total: $14,700 + $9,800 = $24,500 (at the limit)
What’s your split strategy? I’m curious how others in this community are thinking about Traditional vs. Roth for 2026, especially with the new catch-up rules.