Employee A: Age 35, 5 years service, 2,080 hours → ✅ Eligible Employee B: Age 22, 0.5 years service, 2,080 hours → ❌ Not eligible (service) Employee C: Age 24, 2 years service, 800 hours → ❌ Not eligible (hours)
Every employee gets an eligibility evaluation event in the compliance log, regardless of outcome.
IRS Regulation: IRC §401(a)(17) limits compensation that can be considered for qualified plan contributions.Purpose: Prevents disproportionate benefits for highly compensated employees.2025 Limit: $345,000 (indexed annually for inflation)Impact: High earners get allocations based on capped amount, not actual pay.
Maximum value that can be added to an employee’s account in a year: $69,000 (2025 limit).This includes employer contributions, forfeitures allocated, and certain other additions.
Cap Enforcement
High Share Price Impact
Multi-Class Capping
Copy
Ask AI
max_annual_addition = 69_000 # 2025 ERISA limitfor employee in eligible_employees: allocation_value = shares_to_allocate * share_price if allocation_value > max_annual_addition: # Scale down allocation to cap shares_to_allocate = max_annual_addition / share_price # Log annual addition cap event
Example:
Share Price: $500
Employee C allocated: 2,555 shares
Value: 2,555 * 500=1,277,500 ⚠️ WAY OVER
Capped Allocation:
Max value: $69,000
Capped shares: 69,000/500 = 138 shares
Employee C receives: 138 shares (not 2,555)
When share price is high, annual addition cap severely limits allocations:Low Share Price ($50):
Cap: $69,000
Max shares: 69,000/50 = 1,380 shares
Medium Share Price ($500):
Cap: $69,000
Max shares: 69,000/500 = 138 shares
High Share Price ($5,000):
Cap: $69,000
Max shares: 69,000/5,000 = 13.8 shares
As companies mature and share price increases, fewer shares can be allocated per participant due to this cap.
In multi-class mode, cap is applied to the combined value across all securities:
Copy
Ask AI
# Calculate total value across all securitiestotal_value = 0for security_id, quantity in allocations_by_security.items(): security_price = securities[security_id].current_share_price total_value += quantity * security_price# If over cap, scale down ALL securities proportionallyif total_value > max_annual_addition: scale_factor = max_annual_addition / total_value for security_id in allocations_by_security.keys(): allocations_by_security[security_id] *= scale_factor
for employee in eligible_employees: allocation_ratio = employee.capped_comp / total_eligible_comp for security_id, pool_quantity in share_pool_by_security.items(): employee_allocation[security_id] = pool_quantity * allocation_ratio
3
Apply Annual Addition Cap
Calculate combined value and scale if necessary
4
Update Employee Holdings
Copy
Ask AI
for security_id, quantity in employee_allocation.items(): if not employee.holdings.get(security_id): employee.holdings[security_id] = Holding() employee.holdings[security_id].shares += quantity
✅ Distributes shares pro-rata by eligible compensation
✅ Enforces annual addition cap ($69K in 2025)
✅ Supports multi-class securities with per-security tracking
✅ Emits comprehensive compliance events
Key Insight: ERISA caps can significantly constrain allocations for highly compensated employees and high-share-price companies, often causing shares to remain unallocated and carry forward to future years.