Calculator overview
Inputs and outputs
This summary comes from the calculator's published input and output contract.
Inputs
- Design 3: Employed on 31 December for year-end match (required) Conditional
-
Default No Allowed Yes, No
About this input
Whether design 3 pays its year-end match only to employees still employed on 31 December.
- Design 3: Months of service before match (required) Conditional
-
Unit months Default 0 Range 0 to 24
About this input
Months of service after hire before design 3 starts matching; the first matched pay date is on or after that anniversary.
- Design 3: Annual match cap Conditional
-
When omitted Blank
Unit $/year Default Not set Range 0 to 100000000
About this input
The most design 3 pays one employee in match over the plan year, in dollars, including match already paid. Leave blank for no cap.
- Design 3: Match catch-up deferrals (required) Conditional
-
Default No Allowed Yes, No
About this input
Whether design 3 matches catch-up deferrals as well as ordinary deferrals.
- Design 3 match tiers (required) Conditional
-
Default 0 rows
About this input
The match tiers of design 3: each band of deferral as a share of match pay, from lower to upper, and the match rate on that band.
Column Range or allowed values Lower 0 to 1 Upper 0 to 1 Match rate 0 to 2 - Design 3: Design name Conditional
-
When omitted Blank
Default Not set
About this input
A short name for design 3 shown in the tables and charts. Leave blank to show Design 3.
- Design 3: Match method (required) Conditional
-
Default Per pay period Allowed Per pay period, Annual
About this input
How design 3 pays the match: on every pay date from that period, or once a year from the annual totals.
- Design 2: Annual true-up (required) Conditional
-
Default No Allowed Yes, No
About this input
Whether design 2 adds a year-end true-up: the annual match target less the match already paid, never below zero.
- Design 2 match tiers (required) Conditional
-
Default 0 rows
About this input
The match tiers of design 2: each band of deferral as a share of match pay, from lower to upper, and the match rate on that band.
Column Range or allowed values Lower 0 to 1 Upper 0 to 1 Match rate 0 to 2 - Design 2: Design name Conditional
-
When omitted Blank
Default Not set
About this input
A short name for design 2 shown in the tables and charts. Leave blank to show Design 2.
- Design 2 vesting (required) Conditional
-
Default 0 rows
About this input
The vesting schedule of design 2: completed years of service and the share of employer match vested from then on.
Column Range or allowed values Years 0 to 60 Vested share 0 to 1 - Design 3: Compensation cap method (required) Conditional
-
Default Cumulative by pay period Allowed Cumulative by pay period, Proportional
About this input
How design 3 applies the annual compensation limit: cumulatively, pay period by pay period, or proportionally across the year.
- Design 3: Match compensation (required) Conditional
-
Default All eligible pay Allowed All eligible pay, Standard pay only
About this input
The pay design 3 matches on: all eligible pay, or standard pay only (pay above the standard pay of a period, such as a bonus, is excluded).
- Design 3: Compare this design (required) Conditional
-
Default No Allowed Yes, No
About this input
Whether design 3 is compared. Design 1 is always active.
- Plan offers designated Roth deferrals (required) Conditional
-
Default Yes Allowed Yes, No
About this input
Whether the plan lets employees make designated Roth deferrals. Where the Roth catch-up rule applies, an employee above the wage threshold can make catch-up only as Roth, so a plan without Roth cannot accept it. The example answers Yes for illustration; set it for your plan. It is required: a blank is not valid.
- Plan offers the age 60 to 63 catch-up (required) Conditional
-
Default Yes Allowed Yes, No
About this input
Whether the plan offers the higher catch-up for employees who reach 60, 61, 62 or 63 by 31 December. Plans may choose not to; then those employees get the ordinary catch-up. The example answers Yes for illustration; set it for your plan. It is required: a blank is not valid.
- Period entries
-
When omitted Blank
Default 0 rows
About this input
Optional exceptions to the standard pay and standing deferral, one row per employee and period: a bonus, unpaid leave or a deferral change. A blank cell keeps the standard value; 0 means zero.
Column Range or allowed values Employee ID Not declared Period number 1 to 53 Eligible pay 0 to 100000000 Deferral 0 to 100000000 - Plan year (required)
-
Unit year Default 2026 Range 2000 to 2100
About this input
The calendar plan year being modelled, 1 January to 31 December. Statutory mode needs verified IRS limits for this year.
- Scenario match multiplier step (required) Conditional
-
Unit x Default 0.1 Range 0.01 to 0.2
About this input
The column step of the scenario grid: every match rate is multiplied by 1 plus or minus this per step, from 5 steps down to 5 steps up.
- Design in the scenario grid (required) Conditional
-
Default Design 1 Allowed Design 1, Design 2, Design 3
About this input
The design whose employer cost the scenario grid varies.
- Scenario deferral step (required) Conditional
-
Unit of pay Default 0.01 Range 0.001 to 0.02
About this input
The row step of the scenario grid: every employee defers this much more or less of match pay per step, from 5 steps down to 5 steps up.
- Employees (required)
-
Default 3 rows
About this input
Up to 10 synthetic employees, one row each: an ID (no names), age on 31 December, dates, standard pay per period, standing deferral election, prior-year Social Security wages from this employer (W-2 box 3; for 2026 box 5 is also accepted; 0 if none, blank if unknown) and the amounts already posted this year.
Column Range or allowed values Employee ID Not declared Age on 31 December 14 to 100 Hire date Not declared Plan entry date Not declared Termination date Not declared Completed vesting years 0 to 60 Standard pay per period 0 to 100000000 Deferral basis Percent, Dollars Standing deferral 0 to 100000000 Prior-year Social Security wages 0 to 100000000 Prior pay this plan year 0 to 100000000 Prior deferrals this plan year 0 to 100000000 Prior match this plan year 0 to 100000000 Deferrals at unrelated employers 0 to 100000000 Deferrals in related-employer plans 0 to 100000000 Other employer contributions 0 to 100000000 Other annual additions 0 to 100000000 Annual-additions compensation 0 to 100000000 Opening vested match balance 0 to 100000000 Opening unvested match balance 0 to 100000000 - Design 3 vesting (required) Conditional
-
Default 0 rows
About this input
The vesting schedule of design 3: completed years of service and the share of employer match vested from then on.
Column Range or allowed values Years 0 to 60 Vested share 0 to 1 - Design 3: Annual true-up (required) Conditional
-
Default No Allowed Yes, No
About this input
Whether design 3 adds a year-end true-up: the annual match target less the match already paid, never below zero.
- Ledger shown for employee row (required)
-
Unit row Default 1 Range 1 to 10
About this input
Which employee row the 53-period ledger table shows, from 1 to 10.
- Pay frequency (required)
-
Default Biweekly Allowed Weekly, Biweekly, Semimonthly, Monthly
About this input
How often the plan pays: weekly, biweekly, semimonthly or monthly. It checks that the pay calendar lists the right number of periods of the right length.
- Pay calendar (required)
-
Default 26 rows
About this input
The pay periods of the plan year, one row per period in date order: start date, end date and pay date. Deferral limits apply by pay date.
Column Range or allowed values Period start Not declared Period end Not declared Pay date Not declared - Limit source (required)
-
Default Statutory IRS limits Allowed Statutory IRS limits, Custom policy limits
About this input
Where the limits come from: the verified IRS figures for the plan year, or limits you type yourself, which are shown as custom assumptions.
- Design 2: Match method (required) Conditional
-
Default Per pay period Allowed Per pay period, Annual
About this input
How design 2 pays the match: on every pay date from that period, or once a year from the annual totals.
- Custom Roth catch-up wage threshold Conditional
-
When omitted Blank
Unit $ prior-year wages Default Not set Range 0 to 100000000
About this input
Your own prior-year wage threshold above which catch-up must be Roth. Leave blank to apply no Roth catch-up rule.
- Enhanced band from age Conditional
-
When omitted Blank
Unit years Default Not set Range 14 to 100
About this input
The first age, reached by 31 December, of the enhanced catch-up band.
- Enhanced band to age Conditional
-
When omitted Blank
Unit years Default Not set Range 14 to 100
About this input
The last age, reached by 31 December, of the enhanced catch-up band.
- Design 1: Match compensation (required) Conditional
-
Default All eligible pay Allowed All eligible pay, Standard pay only
About this input
The pay design 1 matches on: all eligible pay, or standard pay only (pay above the standard pay of a period, such as a bonus, is excluded).
- Design 1: Months of service before match (required) Conditional
-
Unit months Default 0 Range 0 to 24
About this input
Months of service after hire before design 1 starts matching; the first matched pay date is on or after that anniversary.
- Design 1: Annual match cap Conditional
-
When omitted Blank
Unit $/year Default Not set Range 0 to 100000000
About this input
The most design 1 pays one employee in match over the plan year, in dollars, including match already paid. Leave blank for no cap.
- Design 1: Compensation cap method (required) Conditional
-
Default Cumulative by pay period Allowed Cumulative by pay period, Proportional
About this input
How design 1 applies the annual compensation limit: cumulatively, pay period by pay period, or proportionally across the year.
- Custom enhanced catch-up limit Conditional
-
When omitted Blank
Unit $/year Default Not set Range 0 to 100000000
About this input
Your own higher catch-up limit for an enhanced age band. It replaces the ordinary catch-up inside the band. Leave blank for no enhanced band.
- Custom annual additions limit Conditional
-
When omitted Blank
Unit $/year Default Not set Range 0 to 100000000
About this input
Your own annual additions limit, in dollars. The lesser of this and 100 percent of compensation applies. Leave blank to skip the annual-additions screen.
- Action (required)
-
Default Calculate Allowed Calculate, Scenario grid
About this input
What to calculate. Calculate runs the pay-period ledger for every active design; Scenario grid also fills the 11 by 11 table of employer cost against deferral and match changes.
- Custom catch-up age Conditional
-
When omitted Blank
Unit years Default Not set Range 14 to 100
About this input
The age, reached by 31 December, from which catch-up deferrals are allowed under your custom limits. Leave blank for no catch-up.
- Custom elective deferral limit Conditional
-
When omitted Blank
Unit $/year Default Not set Range 0 to 100000000
About this input
Your own annual elective deferral limit, in dollars. Leave blank to apply no limit; 0 stops every deferral.
- Custom compensation limit Conditional
-
When omitted Blank
Unit $/year Default Not set Range 0 to 100000000
About this input
Your own annual compensation limit, in dollars: pay above it in the year is ignored for deferral percentages and match. Leave blank for no cap.
- Custom catch-up limit Conditional
-
When omitted Blank
Unit $/year Default Not set Range 0 to 100000000
About this input
Your own annual catch-up limit, in dollars, for employees at or above the catch-up age.
- Design 2: Compensation cap method (required) Conditional
-
Default Cumulative by pay period Allowed Cumulative by pay period, Proportional
About this input
How design 2 applies the annual compensation limit: cumulatively, pay period by pay period, or proportionally across the year.
- Design 2: Match compensation (required) Conditional
-
Default All eligible pay Allowed All eligible pay, Standard pay only
About this input
The pay design 2 matches on: all eligible pay, or standard pay only (pay above the standard pay of a period, such as a bonus, is excluded).
- Design 2: Compare this design (required) Conditional
-
Default No Allowed Yes, No
About this input
Whether design 2 is compared. Design 1 is always active.
- Design 2: Annual match cap Conditional
-
When omitted Blank
Unit $/year Default Not set Range 0 to 100000000
About this input
The most design 2 pays one employee in match over the plan year, in dollars, including match already paid. Leave blank for no cap.
- Design 2: Match catch-up deferrals (required) Conditional
-
Default No Allowed Yes, No
About this input
Whether design 2 matches catch-up deferrals as well as ordinary deferrals.
- Design 2: Employed on 31 December for year-end match (required) Conditional
-
Default No Allowed Yes, No
About this input
Whether design 2 pays its year-end match only to employees still employed on 31 December.
- Design 2: Months of service before match (required) Conditional
-
Unit months Default 0 Range 0 to 24
About this input
Months of service after hire before design 2 starts matching; the first matched pay date is on or after that anniversary.
- Design 1: Match method (required) Conditional
-
Default Per pay period Allowed Per pay period, Annual
About this input
How design 1 pays the match: on every pay date from that period, or once a year from the annual totals.
- Design 1: Match catch-up deferrals (required) Conditional
-
Default No Allowed Yes, No
About this input
Whether design 1 matches catch-up deferrals as well as ordinary deferrals.
- Design 1: Employed on 31 December for year-end match (required) Conditional
-
Default No Allowed Yes, No
About this input
Whether design 1 pays its year-end match only to employees still employed on 31 December.
- Design 1: Design name Conditional
-
When omitted Blank
Default Not set
About this input
A short name for design 1 shown in the tables and charts. Leave blank to show Design 1.
- Design 1 vesting (required)
-
Default 1 row
About this input
The vesting schedule of design 1: completed years of service and the share of employer match vested from then on.
Column Range or allowed values Years 0 to 60 Vested share 0 to 1 - Design 1: Annual true-up (required) Conditional
-
Default No Allowed Yes, No
About this input
Whether design 1 adds a year-end true-up: the annual match target less the match already paid, never below zero.
- Design 1 match tiers (required)
-
Default 2 rows
About this input
The match tiers of design 1: each band of deferral as a share of match pay, from lower to upper, and the match rate on that band.
Column Range or allowed values Lower 0 to 1 Upper 0 to 1 Match rate 0 to 2
Outputs
- CB03_Employees: rows with a problem
-
No unit declared
About this output
Rows of the grid with a problem.
- CB03_Employees: rows used
-
No unit declared
About this output
Rows of the grid in use.
- Full pay-period ledger, every employee
-
No unit declared
About this output
The full pay-period ledger of every employee, one row per employee and period, for export.
- CB03_Employees: first problem
-
No unit declared
About this output
The first problem found in the grid, blank when none.
- Results by employee
-
No unit declared
About this output
One row per employee: pay, deferrals by type, ceilings and, per design, match, reclassification, curtailment, vesting and missed match.
- Employees at the ceiling
-
No unit declared
About this output
Employees whose deferrals stopped at the ceiling during the year.
- CB03 Employees Check
-
No unit declared
About this output
One line per row of the grid: blank when unused, OK, or the first problem to fix.
- Elective deferral limit
-
Unit $/year
About this output
The elective deferral limit applied, in dollars a year; blank when no limit applies.
- Limits in force
-
No unit declared
About this output
Which limits are in force: the statutory IRS limits of the plan year, or custom assumptions.
- CB03 Pay Calendar Check
-
No unit declared
About this output
One line per row of the grid: blank when unused, OK, or the first problem to fix.
- Compensation limit
-
No unit declared
About this output
The annual compensation limit applied; blank when no cap applies.
- Annual additions limit
-
No unit declared
About this output
The annual additions dollar limit applied; blank when the screen is off.
- Catch-up limit, ages 60 to 63
-
Unit $/year
About this output
The higher catch-up limit for the enhanced age band, in dollars a year; blank when the plan does not offer it.
- Catch-up limit
-
Unit $/year
About this output
The ordinary catch-up limit applied, in dollars a year; blank when no catch-up applies.
- Employee-periods
-
No unit declared
About this output
Employees times pay periods: the ledger rows in use, at most 530.
- Design 3: Match lost to timing or the year-end rule
-
Unit $
About this output
Annual match target of design 3 not received because of pay-date timing without a true-up, or the end-of-year employment rule.
- Design 3: Unvested employer match at year end
-
Unit $
About this output
Employer match not yet vested at year end under design 3.
- Design 3: Vested employer match at year end
-
Unit $
About this output
Employer match vested at year end under design 3, including opening balances.
- CB03_D3_Tiers: rows used
-
No unit declared
About this output
Rows of the grid in use.
- CB03 D3 Tiers Check
-
No unit declared
About this output
One line per row of the grid: blank when unused, OK, or the first problem to fix.
- CB03_D3_Tiers: first problem
-
No unit declared
About this output
The first problem found in the grid, blank when none.
- CB03_D3_Tiers: rows with a problem
-
No unit declared
About this output
Rows of the grid with a problem.
- Design 3: Year-end match (true-up or annual)
-
Unit $
About this output
Match design 3 posts at year end: the true-up, or the whole annual match under the annual method.
- Employees
-
No unit declared
About this output
Employees entered.
- Pay-period ledger of the employee row chosen above
-
No unit declared
About this output
The pay-period ledger of one employee (chosen by the ledger row input): pay, capped pay, deferrals by type, running room and match by design.
- CB03_D3_Vesting: rows used
-
No unit declared
About this output
Rows of the grid in use.
- CB03 D3 Vesting Check
-
No unit declared
About this output
One line per row of the grid: blank when unused, OK, or the first problem to fix.
- CB03_D3_Vesting: first problem
-
No unit declared
About this output
The first problem found in the grid, blank when none.
- CB03_D3_Vesting: rows with a problem
-
No unit declared
About this output
Rows of the grid with a problem.
- CB03_Pay_Calendar: first problem
-
No unit declared
About this output
The first problem found in the grid, blank when none.
- Ordinary deferrals
-
No unit declared
About this output
Deferrals counted against the ordinary elective deferral limit.
- Custom assumptions
-
No unit declared
About this output
TRUE when the limits are your own custom assumptions rather than statutory values.
- Status
-
No unit declared
About this output
OK, CHECK with a reason worth reading, or NOT VALID with what to fix. Results read zero while it says NOT VALID.
- Eligible pay
-
Unit $
About this output
Eligible pay of all employees over the modelled pay periods, in dollars.
- Catch-up deferrals
-
No unit declared
About this output
Deferrals counted as catch-up above the ordinary limit.
- Deferrals requested
-
No unit declared
About this output
Deferrals employees asked for, limited to their pay, before the statutory ceilings.
- Deferrals stopped at the ceiling
-
No unit declared
About this output
Requested deferrals that stopped because an employee reached the ceiling.
- Warnings
-
No unit declared
About this output
The number of active warnings in the warnings table.
- Warnings
-
No unit declared
About this output
One row per warning code: how many employees it affects, the first employee affected and the message; blank when the warning is not active.
- Warnings, one line
-
No unit declared
About this output
Every active warning, joined in one line.
- Status code
-
No unit declared
About this output
The short code of the reason the status line shows, for example PLAN-OPTIONS or a grid row code; OK when the status is OK.
- Model version
-
No unit declared
About this output
The version of this model.
- Reference data
-
No unit declared
About this output
The reference dataset and its fingerprint behind the statutory limits, or custom when your own limits are used.
- Workbook self-check
-
No unit declared
About this output
PASS when every internal consistency check of the workbook holds for this result.
- Scenario status
-
No unit declared
About this output
OK when the scenario grid is computed; otherwise why it is not.
- CB03_Period_Entries: first problem
-
No unit declared
About this output
The first problem found in the grid, blank when none.
- CB03_Period_Entries: rows with a problem
-
No unit declared
About this output
Rows of the grid with a problem.
- CB03_Period_Entries: rows used
-
No unit declared
About this output
Rows of the grid in use.
- CB03 Period Entries Check
-
No unit declared
About this output
One line per row of the grid: blank when unused, OK, or the first problem to fix.
- CB03_Pay_Calendar: rows with a problem
-
No unit declared
About this output
Rows of the grid with a problem.
- CB03_Pay_Calendar: rows used
-
No unit declared
About this output
Rows of the grid in use.
- Pay periods
-
No unit declared
About this output
Pay periods in the calendar.
- Scenario grid: annual-basis employer match of the chosen design (deferral shift down, match multiplier across)
-
No unit declared
About this output
Annual-basis employer match of the scenario design for each deferral shift and match multiplier; statutory limits stay fixed.
- Why a scenario cell is blank
-
No unit declared
About this output
Why a scenario cell is blank, when it is.
- CB03 Scenario Row Axis
-
No unit declared
About this output
The deferral shifts of the grid rows, as a fraction of match pay; the grid repeats them in its first column.
- CB03 Scenario Col Axis
-
No unit declared
About this output
The grid columns: the step of the match multiplier, then the multiplier at each of the 11 columns, from 5 steps below to 5 steps above.
- Totals by pay date (last row: year-end match)
-
No unit declared
About this output
Pay, deferrals and match posted for all employees on each pay date, with the year-end match last.
- Roth catch-up wage threshold
-
No unit declared
About this output
The prior-year wage threshold of the Roth catch-up rule; blank when the rule does not apply.
- Base case, annual basis
-
No unit declared
About this output
The annual-basis employer match of the scenario design in the base case; the centre of the grid equals it.
- Design 3: Employer match, annualized run-rate
-
Unit $
About this output
Design 3 match annualized for employees who worked part of the year, by actual days employed; equal to the cash cost for full-year employees.
- CB03 D1 Vesting Check
-
No unit declared
About this output
One line per row of the grid: blank when unused, OK, or the first problem to fix.
- CB03_D1_Vesting: first problem
-
No unit declared
About this output
The first problem found in the grid, blank when none.
- CB03_D1_Vesting: rows with a problem
-
No unit declared
About this output
Rows of the grid with a problem.
- Design 1: Vested employer match at year end
-
Unit $
About this output
Employer match vested at year end under design 1, including opening balances.
- CB03_D1_Tiers: rows used
-
No unit declared
About this output
Rows of the grid in use.
- Design 1: Match lost to timing or the year-end rule
-
Unit $
About this output
Annual match target of design 1 not received because of pay-date timing without a true-up, or the end-of-year employment rule.
- Design 1: Unvested employer match at year end
-
Unit $
About this output
Employer match not yet vested at year end under design 1.
- Design 2: Cost compared with design 1
-
Unit $
About this output
Plan-year cash cost of design 2 less that of design 1.
- Design 2: Match curtailed by the annual-additions limit
-
Unit $
About this output
Match design 2 would pay but cannot, because the annual-additions limit leaves no room.
- Design 2: Match limited by the annual match cap
-
Unit $
About this output
Match design 2 does not pay because of its annual match cap.
- Design 2: Employer match on an annual basis (scenario base)
-
Unit $
About this output
Design 2 match computed from the annual totals alone, ignoring pay-date timing: the base value of the scenario grid.
- CB03_D1_Vesting: rows used
-
No unit declared
About this output
Rows of the grid in use.
- Design 1: Year-end match (true-up or annual)
-
Unit $
About this output
Match design 1 posts at year end: the true-up, or the whole annual match under the annual method.
- Design 2: Projected annual-additions excess (not removed)
-
Unit $
About this output
Annual additions above the limit that remain after reclassification under design 2, from amounts already posted and deferrals; shown, never removed.
- CB03_D1_Tiers: rows with a problem
-
No unit declared
About this output
Rows of the grid with a problem.
- Design 1: Match limited by the annual match cap
-
Unit $
About this output
Match design 1 does not pay because of its annual match cap.
- Design 1: Employer match, plan-year cash cost
-
Unit $
About this output
Match design 1 pays in the plan year, in cash: pay-date match plus year-end match.
- Design 1: Unvested match of terminated employees
-
Unit $
About this output
Unvested match under design 1 of employees with a termination date.
- Design 1: Match curtailed by the annual-additions limit
-
Unit $
About this output
Match design 1 would pay but cannot, because the annual-additions limit leaves no room.
- Calculated for
-
No unit declared
About this output
The action the results were calculated for.
- Design 1: Projected annual-additions excess (not removed)
-
Unit $
About this output
Annual additions above the limit that remain after reclassification under design 1, from amounts already posted and deferrals; shown, never removed.
- Design 1: Employer match on an annual basis (scenario base)
-
Unit $
About this output
Design 1 match computed from the annual totals alone, ignoring pay-date timing: the base value of the scenario grid.
- Design 1: Employer match, annualized run-rate
-
Unit $
About this output
Design 1 match annualized for employees who worked part of the year, by actual days employed; equal to the cash cost for full-year employees.
- CB03 D1 Tiers Check
-
No unit declared
About this output
One line per row of the grid: blank when unused, OK, or the first problem to fix.
- CB03_D1_Tiers: first problem
-
No unit declared
About this output
The first problem found in the grid, blank when none.
- Design 1: Deferrals reclassified as catch-up (annual additions)
-
Unit $
About this output
Ordinary deferrals reclassified as catch-up so that annual additions fit the limit under design 1.
- Design 1: Match as a share of eligible pay
-
Unit of pay
About this output
Design 1 cash match as a share of total eligible pay.
- Design 1: Match left unclaimed by deferring less
-
Unit $
About this output
Match employees leave unclaimed under design 1 by deferring less than the top of the match tiers.
- Design 1: Match posted on pay dates
-
Unit $
About this output
Match design 1 posts on pay dates during the year.
- Design 2: Employer match, plan-year cash cost
-
Unit $
About this output
Match design 2 pays in the plan year, in cash: pay-date match plus year-end match.
- Design 3: Employer match on an annual basis (scenario base)
-
Unit $
About this output
Design 3 match computed from the annual totals alone, ignoring pay-date timing: the base value of the scenario grid.
- Design 3: Cost compared with design 1
-
Unit $
About this output
Plan-year cash cost of design 3 less that of design 1.
- Design 3: Match curtailed by the annual-additions limit
-
Unit $
About this output
Match design 3 would pay but cannot, because the annual-additions limit leaves no room.
- Design 3: Projected annual-additions excess (not removed)
-
Unit $
About this output
Annual additions above the limit that remain after reclassification under design 3, from amounts already posted and deferrals; shown, never removed.
- CB03_D2_Vesting: rows with a problem
-
No unit declared
About this output
Rows of the grid with a problem.
- CB03_D2_Vesting: rows used
-
No unit declared
About this output
Rows of the grid in use.
- Design 2: Year-end match (true-up or annual)
-
Unit $
About this output
Match design 2 posts at year end: the true-up, or the whole annual match under the annual method.
- Design 3: Match left unclaimed by deferring less
-
Unit $
About this output
Match employees leave unclaimed under design 3 by deferring less than the top of the match tiers.
- Design 3: Match posted on pay dates
-
Unit $
About this output
Match design 3 posts on pay dates during the year.
- Design 3: Deferrals reclassified as catch-up (annual additions)
-
Unit $
About this output
Ordinary deferrals reclassified as catch-up so that annual additions fit the limit under design 3.
- Design 3: Match as a share of eligible pay
-
Unit of pay
About this output
Design 3 cash match as a share of total eligible pay.
- Design 3: Match limited by the annual match cap
-
Unit $
About this output
Match design 3 does not pay because of its annual match cap.
- Design 3: Employer match, plan-year cash cost
-
Unit $
About this output
Match design 3 pays in the plan year, in cash: pay-date match plus year-end match.
- Design 3: Unvested match of terminated employees
-
Unit $
About this output
Unvested match under design 3 of employees with a termination date.
- CB03_D2_Vesting: first problem
-
No unit declared
About this output
The first problem found in the grid, blank when none.
- Design 2: Deferrals reclassified as catch-up (annual additions)
-
Unit $
About this output
Ordinary deferrals reclassified as catch-up so that annual additions fit the limit under design 2.
- Design 2: Employer match, annualized run-rate
-
Unit $
About this output
Design 2 match annualized for employees who worked part of the year, by actual days employed; equal to the cash cost for full-year employees.
- CB03 D2 Tiers Check
-
No unit declared
About this output
One line per row of the grid: blank when unused, OK, or the first problem to fix.
- Design 2: Match posted on pay dates
-
Unit $
About this output
Match design 2 posts on pay dates during the year.
- Design 2: Unvested match of terminated employees
-
Unit $
About this output
Unvested match under design 2 of employees with a termination date.
- Design 2: Match as a share of eligible pay
-
Unit of pay
About this output
Design 2 cash match as a share of total eligible pay.
- Design 2: Match left unclaimed by deferring less
-
Unit $
About this output
Match employees leave unclaimed under design 2 by deferring less than the top of the match tiers.
- Design 2: Unvested employer match at year end
-
Unit $
About this output
Employer match not yet vested at year end under design 2.
- Design 2: Vested employer match at year end
-
Unit $
About this output
Employer match vested at year end under design 2, including opening balances.
- CB03 D2 Vesting Check
-
No unit declared
About this output
One line per row of the grid: blank when unused, OK, or the first problem to fix.
- Design 2: Match lost to timing or the year-end rule
-
Unit $
About this output
Annual match target of design 2 not received because of pay-date timing without a true-up, or the end-of-year employment rule.
- CB03_D2_Tiers: first problem
-
No unit declared
About this output
The first problem found in the grid, blank when none.
- CB03_D2_Tiers: rows with a problem
-
No unit declared
About this output
Rows of the grid with a problem.
- CB03_D2_Tiers: rows used
-
No unit declared
About this output
Rows of the grid in use.
LogicCommons is in beta. If a result, label, or reference looks wrong, tell us here; we read every message.
Methodology
Purpose and model boundary
This calculator compares up to three 401(k)-style employer matching designs on your own synthetic workforce of up to 10 employees, for one calendar plan year, pay period by pay period. For each design it reports what the match costs in cash and as an annualized run-rate, how much each employee receives and when, the match employees leave unclaimed by deferring less, the match lost to pay-date timing or a year-end employment rule, what a true-up adds back, where the deferral ceilings, the compensation limit and the annual-additions limit cut in, and how much of the employer money is vested at year end. A second action adds an 11 by 11 grid of the chosen design's employer cost as every employee defers more or less and every match rate is scaled up or down.
Every figure on this page is computed by the spreadsheet; the page adds nothing to it. The model is educational policy arithmetic for the designs you enter. Safe-harbor status, ADP and ACP nondiscrimination testing, controlled-group aggregation, deduction limits and tax advice are outside it, and so are collectively bargained, multiemployer and governmental plans.
Inputs and units
- Plan year, 2000 to 2100. The plan year, the limitation year and the compensation year are all 1 January to 31 December.
- Limit source. Statutory IRS limits reads the verified figures for the plan year from the workbook's reference table, and refuses a year without them: 2025 and 2026 are supported. Custom policy limits accepts any year and uses the limits you type, each optional, labelled as custom assumptions: an elective deferral limit (blank applies none, 0 stops every deferral), a catch-up age and limit, an enhanced catch-up limit with the age band it applies to, a Roth catch-up wage threshold, an annual additions limit (blank switches that screen off) and a compensation limit (blank applies no cap).
- Whether the plan offers designated Roth deferrals and whether it offers the higher catch-up for ages 60 to 63. Both are plan-design answers with no default meaning: a blank is not valid while the question applies. The example answers Yes to both for illustration; set them for your plan.
- Pay frequency and the pay calendar: up to 53 periods, each with a start date, an end date and a pay date inside the plan year, in date order without overlaps. The calendar must hold 52 or 53 weekly, 26 or 27 biweekly, 24 semimonthly or 12 monthly periods of the right length. Rows can be pasted and are put in date order.
- Employees, up to 10 rows: a synthetic ID, never a name; age on 31 December; hire date and optional plan entry and termination dates; completed vesting years at year end; standard pay per period; the standing deferral election as a percent of pay (a fraction, at most 100%) or dollars per period; prior-year Social Security wages from this employer (0 if none, blank if unknown); and, optional, the pay, deferrals and match already posted this plan year outside the calendar, deferrals in plans of unrelated employers and of the same or related employers, other employer contributions and annual additions, the compensation to use for the annual-additions limit, and opening vested and unvested match balances.
- Period entries, optional, up to 530 rows: an employee ID, a period number and a different eligible pay or deferral for that period, such as a bonus, unpaid leave or an election change. A blank cell keeps the standard value; 0 means zero. Order does not matter.
- For each design (design 1 always; designs 2 and 3 when you choose to compare them): a name, the match method (per pay period or annual), an annual true-up, whether catch-up deferrals are matched, the pay matched (all eligible pay, or standard pay only), how the compensation limit is applied (cumulatively by pay period, or proportionally), months of service before matching, whether the year-end match needs employment on 31 December, an optional annual match cap, up to 10 match tiers (a band of deferral as a share of match pay and the match rate on it, up to 200%) and up to 10 vesting steps (completed years and the vested share from then on).
- The action; for the grid, the design it varies, the deferral step and the match multiplier step; and the employee row whose period ledger is shown.
Money is dollars; deferral bands and steps are shares of pay.
Governing relationships
Limits. In statutory mode the workbook reads, by record, the plan year's elective deferral limit, the age-50 catch-up and its age, the higher catch-up for ages 60 to 63, whether the Roth catch-up rule is in force and its wage threshold, the annual additions dollar limit and its 100%-of-compensation limb, and the compensation limit. Age is the age reached by 31 December. An employee aged 60 to 63 in a plan that offers it gets the higher catch-up in place of the age-50 amount, never in addition to it. Where the Roth rule is in force (2026, not 2025), an employee eligible for catch-up whose prior-year Social Security wages from this employer are strictly above the threshold can make catch-up only as Roth; if the plan offers no Roth, that employee's catch-up room is 0. Blank wages for such an employee are refused, unless the employee was hired during the plan year.
Pay. Each period's eligible pay is the period entry when there is one, and otherwise standard pay prorated by the actual days employed in the period. Pay above the compensation limit, counted cumulatively from pay already posted this year, is left out of percent elections and of match pay.
Deferrals. The requested deferral is the election applied to capped pay, or the dollar election, never more than the period's pay and nothing before plan entry. Deferral room is used in this order: plans of unrelated employers, plans of the same or related employers, this plan's earlier deferrals this year, then the modelled periods. Each period's request fills the remaining ordinary room first, then the remaining catch-up room; anything beyond both is stopped. All amounts posted are rounded to the cent, half away from zero.
Match. For a design with tiers of lower bound L, upper bound U and rate R, the match per dollar of match pay at a deferral share d is
M(d) = Σ R × max(0, min(d, U) − L)
summed over the tiers. Per pay period, the match is the capped match pay times M of the period's matchable deferrals over that pay, from the first pay date on or after both plan entry and the eligibility anniversary. Matchable deferrals are the ordinary deferrals, plus catch-up when the design matches it. The annual target is annual match pay times M of the year's matchable deferrals over that pay, computed from annual totals, not by averaging period rates. A true-up, or the annual method, pays the target less the match already paid, never below zero, so nothing is clawed back; with the year-end employment rule, an employee who leaves before 31 December gets no year-end match. The annual match cap limits each employee's match for the year, including match already paid.
Annual additions. Ordinary deferrals in this plan and in related-employer plans, other employer contributions and annual additions, and match already paid count toward the limit, which is the lesser of the dollar limit and the compensation limb; catch-up does not count. When a design's intended match would exceed it, ordinary deferrals are first reclassified as catch-up within unused catch-up room, and only then is the new match curtailed. Both amounts are shown. An excess that comes from amounts already posted is shown and never removed. The reclassification does not change a match already computed.
Vesting and costs. The vested share is read from the design's schedule at the employee's completed years, and 0 below the first step. It applies to the employer match account, the opening balances plus this year's match, and the vested balance never falls below the opening vested balance. Employees' own deferrals are always fully vested. Unvested match of an employee with a termination date is forfeitable. The run-rate annualizes each employee's cash match by the actual days employed in the plan year; for a full-year employee it equals the cash cost. Missed match is what the top of the tiers would have paid less what the deferrals earned; the timing shortfall is the annual target not reached because of pay-date timing without a true-up, or the year-end rule.
Scenario grid. Rows shift every employee's annual deferral by −5 to +5 deferral steps, as a share of annual match pay; columns multiply every match rate by 1 − 5 to 1 + 5 multiplier steps. Each cell re-splits the shifted deferrals against the same ceilings, recomputes the annual match, applies the annual cap and the same reclassify-then-curtail annual-additions screen, and adds it over the employees who pass the year-end rule. It is an annual-basis evaluation: per-period timing is not modelled in the grid, and the centre cell equals the design's annual-basis match.
Calculation sequence
The spreadsheet first resolves the limits for the plan year and source and checks the scalar inputs, the calendar, the employee rows, the period entries and the tiers and vesting of each active design. It then builds a fixed ledger of 10 employees by 53 periods: dates, proration, pay, capped pay, requested, ordinary, catch-up and stopped deferrals, and, per design, match pay, capped match pay, the period match and the posting within each employee's caps. An employee block adds the annual target, the true-up, the annual-additions screen, vesting, the run-rate, missed match and timing. Totals are summed by employee, by pay date and by design. In the grid action the annual-basis cells follow. A block of consistency checks, including that ordinary, catch-up and stopped deferrals add up to the request and that the grid's centre equals its base, runs before the status is returned.
Outputs and interpretation
The headline is design 1's plan-year cash cost and its annualized run-rate. The cards show the limits in force (statutory for the year, or custom assumptions) and each limit applied, the pay periods, employees and employee-periods, the eligible pay, the deferrals requested, counted as ordinary and as catch-up, and stopped at the ceiling, and the employees who reached it. For each design they give the plan-year cash cost, the annualized run-rate, the match on pay dates and at year end, the match as a share of eligible pay, deferrals reclassified and any projected excess under the annual-additions limit, match curtailed by that limit and by the annual cap, missed match, the timing shortfall, vested, unvested and forfeitable match, the annual-basis match, and for designs 2 and 3 the cost compared with design 1. The employee table gives each person's pay, deferrals by type, ceiling, Roth status, annual-additions limit and, per design, match, year-end match, reclassification, curtailment, vested match and missed match. The pay-date table totals pay, deferrals and each design's match on each pay date, with the year-end match last, and the ledger table shows every period for the employee row you choose.
Any warnings appear under the results, and a custom-limits run carries the Custom assumptions badge. The model version, the reference data version and the other run details are in the downloaded CSV and JSON files. The full ledger of every employee and period, and the per-row check tables, are returned to the API and MCP, and the first problem the checks find is named in the status.
In the grid, the first column gives each row's deferral shift and the column headings count match-multiplier steps from −5 to +5, with the multiplier at each step listed below the grid. A cell without a value is explained in the table beside the grid, which has the same layout.
Under the default inputs: statutory 2026 limits, a plan that offers Roth and the 60 to 63 catch-up, a biweekly calendar of 26 pay dates, and three employees: E01, aged 34, paid 2,000 a period and deferring 5%; E02, aged 52, paid 3,500 and deferring 8%; and E03, aged 61, paid 4,600 and deferring 15%, with prior-year wages below the 150,000 Roth threshold. Design 1 matches 100% of the first 3% of pay and 50% of the next 2%, per pay period, fully vested. Pay is 52,000, 91,000 and 119,600, 262,600 in all. The deferrals of 2,600, 7,280 and 17,940 (27,820 in all) are all ordinary, well inside the ceilings of 24,500, 32,500 (with the 8,000 age-50 catch-up) and 35,750 (with the 11,250 catch-up for ages 60 to 63), so nothing stops. Each employee defers at least 5%, so the match is 4% of pay: 2,080, 3,640 and 4,784, a cash cost of 10,504 with no year-end match, equal to the run-rate and to the annual-basis match, all vested. The status is OK with no warnings.
The first chart shows deferrals and each design's match by pay date. The second shows each design's cash cost and the match the limits curtail, and the third the vested and unvested employer account at year end. The fourth, in the grid action, traces the chosen design's annual-basis cost against the deferral shift at three match multipliers.
Validation and status logic
The workbook returns one status, chosen in this order: NOT VALID, then CHECK, then OK. There is no optimizer, so INFEASIBLE is not used.
- NOT VALID names the first problem: a statutory year with no reference record; reference figures not yet verified; a plan question left blank while it applies; incomplete custom catch-up limits; a calendar with the wrong number of periods; a calendar row with a bad date, an end before its start, a pay date before its start or outside the plan year, an overlap, pay dates out of order or a period of the wrong length; no employee; an employee row with a required blank, an invalid or repeated ID, a termination or entry date before hire, or a percent election above 100%; a period entry with an unknown ID, a period beyond the calendar, a repeated employee and period, or a percent above 100%; a dollar deferral on a period with no pay; missing prior-year wages where the Roth rule needs them; a design's tiers or vesting out of order or empty, or a negative match cap; in the grid action, a grid design that is not being compared; or a numeric input outside its allowed range where it is read.
NOT VALIDis a refusal, not a numeric answer: every figure reads zero and is withheld. - CHECK accompanies a computed result that needs the stated review: employees reached their deferral ceiling and deferrals stopped; projected annual additions exceed the limit; match curtailed by the annual-additions limit; catch-up blocked because the Roth rule applies and the plan has no Roth; ordinary deferrals reclassified as catch-up; an annual-additions compensation below the deferrals made; a dollar election above pay; a deferral entered before plan entry; deferrals already over the ceiling before the modelled periods; a gap between pay periods; or a failed workbook self-check.
- OK otherwise.
Information notes, which do not change the status, flag custom assumptions, blank custom limits, match limited by an annual cap, year-end match withheld by the employment rule, period entries with neither value, pay outside the employment dates, employees with no eligible pay and catch-up that must be Roth.
Assumptions and limitations
- Capacities are 10 employees, 53 pay periods, 530 period entries, 3 designs, and 10 tiers and 10 vesting steps per design. Over-capacity input is refused, never truncated.
- One pay calendar serves every employee; a workforce on two frequencies is run separately.
- Calendar-year plans only.
- Pay, deferrals and match already posted this year are treated as falling outside the calendar; they count toward the limits, the compensation cap, the annual target and the annual-additions limit, and are treated as eligible for match.
- Standard pay only means the lesser of the period's pay and its prorated standard pay.
- Match eligibility counts months of service from hire; there are no hours requirements or fixed entry dates. Vesting years are an entered assumption, with no breaks in service.
- Catch-up is only the excess over the elective deferral limit; plan-imposed deferral caps and catch-up arising from nondiscrimination testing are not modelled.
- The limit on catch-up by compensation is not modelled; it is flagged when an entered annual-additions compensation could make it bind.
- The run-rate is a simple annualization by days employed; it does not rerun the tiers on annualized pay.
- The 2026 Roth catch-up rule is applied as the statute reads.
Restrictions and non-computing states
The calculator enforces its numeric and choice limits before it accepts a result. A statutory year without verified figures, a calendar that does not fit its frequency, a repeated ID or period entry, tiers or vesting steps out of order and missing prior-year wages where the Roth rule needs them are refused by the workbook. In the Compare designs action the scenario grid is left blank, and its status says so.
Errors and warnings
A request rejected by the page's input limits is not a computed result. A transport or service failure, a timeout or a cancelled run cannot establish a fresh workbook answer, and the last result stays on the page marked as out of date. Review the workbook's References and Disclaimer, and your actual plan documents, before using a result for a real decision.
References
Sources and further reading
In statutory mode the calculator reads the plan year's IRS limits from a reviewed reference table inside the workbook, by record, with its version recorded in the downloaded CSV and JSON files; everything else (the workforce, the pay calendar and the matching designs) comes from your inputs. The public sources below state the limits and rules the model applies. They do not endorse this calculator.
- IRS, 401(k) limit increases to $24,500 for 2026, IRA limit increases to $7,500 announces the 2026 elective deferral limit, the $8,000 age-50 catch-up and the $11,250 catch-up for ages 60 to 63 that replaces it, and points to Notice 2025-67 for the full set of adjustments (retrieved 2026-10-27).
- IRS Retirement topics: 401(k) and profit-sharing plan contribution limits explains that catch-up is left out of the annual additions limit, the lesser of 100% of compensation or $72,000 for 2026, and that only $360,000 of compensation counts for 2026 (retrieved 2026-10-27).
- IRS Retirement topics: Catch-up contributions sets out catch-up from age 50 by the end of the calendar year, the higher limit for those who turn 60 to 63 in the year, and, from 2026, Roth catch-up for participants whose prior-year wages from the plan sponsor exceeded $150,000 (retrieved 2026-10-27).
- IRS, Treasury, IRS issue final regulations on new Roth catch-up rule, other SECURE 2.0 Act provisions (IR-2025-91) explains that the final regulations generally apply from 2027, with a reasonable, good-faith interpretation allowed before then; the page is marked as archival (retrieved 2026-10-27).
- IRS, 401(k) plan overview describes employer matching contributions, which may be subject to nondiscrimination tests this calculator does not run, and service-based vesting of employer contributions (retrieved 2026-10-27).
- IRS Retirement topics: Vesting explains that elective deferrals are always fully vested and shows cliff and graded schedules for employer contributions (retrieved 2026-10-27).
- U.S. Department of Labor, Employee Retirement Income Security Act (ERISA) summarizes the federal minimum standards for participation, vesting, benefit accrual and funding of private retirement plans (retrieved 2026-10-27).
- U.S. Bureau of Labor Statistics, Employee Benefits Survey publishes how many workers have access to and take part in defined contribution plans (retrieved 2026-10-27).
This is an educational model of the matching designs you enter, not tax, legal, actuarial or plan-administration advice. It does not test safe-harbor status or nondiscrimination and does not certify compliance with the Internal Revenue Code or ERISA; review a result against your plan documents and with a qualified professional before acting on it.
Found a problem, or have an idea?
Tell us if a result looks wrong, a label is unclear, or something is missing. We read every message.