# PartnerConstantsIngressService

Partner-level endpoints that supply key constants such as IRS contribution limits. Send the auth header without a requested identity.

```http
Authorization: Bearer <token>
```

## GetRegulatoryPlanConfigurationRates

These rates are the min/max required rates to provide a Safe Harbor compliant plan and to abide by Secure Act 2.0.

The rates for 2026 are as follows:

**Safe Harbor**

- Minimum required employer match 3.5%.
- Maximum suggested employer match 6%. Note you can go higher but it is hard to stay compliant at a match rate above 6%.


**Secure Act 2.0**

- Minimum required auto enrollment 3%.
- Minimum required annual increase of auto enrollment 1%. Note: this will cap out at 15%.


These rates should be used during employer onboarding to inform an employer if their plan is meeting Safe Harbor and Secure Act 2.0 standards.

```protobuf
service PartnerConstantsIngressService {
  rpc GetRegulatoryPlanConfigurationRates(GetRegulatoryPlanConfigurationRatesRequest) returns (GetRegulatoryPlanConfigurationRatesResponse);
}

message GetRegulatoryPlanConfigurationRatesRequest {}

message GetRegulatoryPlanConfigurationRatesResponse {
  int32 safe_harbor_required_min_match_bps = 1;
  int32 safe_harbor_max_recommended_bps = 2;
  int32 secure_act_min_required_auto_enrolled_bps = 3;
  int32 secure_act_min_required_auto_increase_bps = 4;
  int32 secure_act_max_auto_enrolled_bps = 5;
  int32 secure_act_max_auto_increase_bps = 6;
}
```

**REST:** [`POST /v1/partner-rpc/com.basiccapital.systems.ingress.partner.PartnerConstantsIngressService/GetRegulatoryPlanConfigurationRates`](/openapi/partnerconstantsingressservice/getregulatoryplanconfigurationrates)

## GetAnnualContributionLimits

Returns the current year's contribution limits.

There are two buckets for contribution limits:

1. **Paycheck deferral contributions:**
  - Traditional contribution
  - Roth contribution (still taken as a deferral, but from post-tax income)
2. **All contributions:**
  - Paycheck deferrals
  - Employer match
  - Post-tax elective contributions (MBDR contributions)


There is a lower limit that applies only to deferrals, and then a higher total limit that applies to all contributions including deferrals. For 2026, these are set at $24,500 and $72,000, respectively.

These limits should be used to help employees make decisions around how much they can and should contribute from their paycheck.

```protobuf
service PartnerConstantsIngressService {
  rpc GetAnnualContributionLimits(GetAnnualContributionLimitsRequest) returns (GetAnnualContributionLimitsResponse);
}

message GetAnnualContributionLimitsRequest {
  optional int32 year = 1;
}

message GetAnnualContributionLimitsResponse {
  Money annual_deferral_limit = 1;
  Money annual_total_contribution_limit = 2;
  int32 year = 3;
}
```

**Data types:** [Money](/core-data-types/common#money)

**REST:** [`POST /v1/partner-rpc/com.basiccapital.systems.ingress.partner.PartnerConstantsIngressService/GetAnnualContributionLimits`](/openapi/partnerconstantsingressservice/getannualcontributionlimits)

## GetRetirementProjectionParameters

Returns the constants used for retirement projections and estimates. These can be used to build a retirement calculator or projection tool for employees.

The current values are:

| Parameter | Value |
|  --- | --- |
| Expected annual return | 8% (800 bps) |
| Annual wage growth | 3% (300 bps) |
| Inflation rate | 3% (300 bps) |
| Withdrawal rate | 4% (400 bps) |
| Retirement income replacement ratio | 80% (8000 bps) |
| Default retirement age | 65 |


```protobuf
service PartnerConstantsIngressService {
  rpc GetRetirementProjectionParameters(GetRetirementProjectionParametersRequest) returns (GetRetirementProjectionParametersResponse);
}

message GetRetirementProjectionParametersRequest {}

message GetRetirementProjectionParametersResponse {
  int32 expected_annual_return_bps = 1;
  int32 annual_wage_growth_bps = 2;
  int32 inflation_rate_bps = 3;
  int32 withdrawal_rate_bps = 4;
  int32 retirement_income_replacement_ratio_bps = 5;
  int32 default_retirement_age = 6;
}
```

**REST:** [`POST /v1/partner-rpc/com.basiccapital.systems.ingress.partner.PartnerConstantsIngressService/GetRetirementProjectionParameters`](/openapi/partnerconstantsingressservice/getretirementprojectionparameters)