Overview
ThePlanRules object is where you define the stable, legal framework of your ESOP, as specified in your plan document. These rules change infrequently and typically require a formal plan amendment.
Getting the PlanRules right is the first and most important step in accurately modeling your ESOP.
Source of Truth: Your ESOP’s Plan Document.
Complete Field Reference
Below is a detailed walkthrough of each field in thePlanRules object.
plan_name
- Type:
string - Required: Yes
- Description: The official name of your ESOP plan.
- Example:
"Acme Corp Employee Stock Ownership Plan"
plan_year_end
- Type:
string(MM/DD format) - Required: Yes
- Description: The end date of your plan year. This is a critical field that affects the timing of many calculations.
- Example:
"12/31"
vesting_schedule
- Type:
object - Required: Yes
- Description: Defines how participants earn ownership of their ESOP shares over time.
`type`
`type`
- Type:
string - Values:
"graded","cliff" - Description: The type of vesting schedule. “Graded” vesting increases gradually over time, while “cliff” vesting happens all at once.
`schedule`
`schedule`
- Type:
arrayof numbers - Description: Required for
gradedvesting. An array representing the percentage of shares vested at each year of service. - Example:
[0, 0, 20, 40, 60, 80, 100]for a 6-year graded schedule where vesting begins after 2 years. - Validation: Must start at 0, end at 100, and be monotonically increasing.
`years_to_full_vesting`
`years_to_full_vesting`
- Type:
integer - Description: Required for
cliffvesting. The number of years of service required to become 100% vested. - Example:
3for a 3-year cliff.
distribution_policy
- Type:
object - Required: Yes
- Description: Defines when and how participants receive their vested account balances after termination.
`timing`
`timing`
- Type:
string - Values:
"immediate","termination_plus_1_year", etc. - Description: When distributions begin after a termination event.
`form`
`form`
- Type:
string - Values:
"lump_sum","installments" - Description: How distributions are paid out.
cash_usage_policy
- Type:
arrayof strings - Required: No
- Description: The priority order for using different sources of cash within the trust to fund distributions and repurchases.
- Example:
["unallocated_company_contributions", "unallocated_forfeiture_cash", "participant_cash_accounts"]
diversification_rules
- Type:
object - Required: No
- Description: Defines the rules for statutory diversification. The engine can model this automatically if this section is included.
.png?fit=max&auto=format&n=_b1oFDtC7brS6c3Z&q=85&s=d3ec56559a51e770e67aa19d77e1da67)
.png?fit=max&auto=format&n=AWN49C5ILGJ2VJNX&q=85&s=9e43d95342e1c0ca7d9eadaa6d3acb0d)