# Submit a pending employee contribution change request **POST /employers/{employer_id}/employees/{employee_id}/contribution_change_requests** Submit a pending employee contribution change request. Mirrors the Penfold member app flow for contribution percentage changes and salary sacrifice opt-in. Partners may also request salary sacrifice opt-out via `salary_sacrifice_enabled: false` (not supported in the member app today). There is no separate read endpoint — poll `GET .../employees/{employee_id}` for current contribution percentages. ## Servers - https://payroll-api.getpenfold.dev/v4: https://payroll-api.getpenfold.dev/v4 () ## Authentication methods - O auth2 client credentials ## Parameters ### Path parameters - **employer_id** (string) - **employee_id** (string) ### Body: application/json (object) - **employee_contributions_percent** (number) Requested employee contribution percentage (0–100). - **salary_sacrifice_enabled** (boolean) When `true`, request salary sacrifice opt-in; when `false`, request opt-out. ## Responses ### 201 Contribution change request created. #### Body: application/json (object) - **id** (string) Unique identifier for the contribution change request. - **employee_contributions_percent_from** (number | null) Previous employee contribution percentage when a percentage change was requested. `null` when no percentage change was requested (not the same as `0`). - **employee_contributions_percent_to** (number | null) Requested employee contribution percentage when a percentage change was requested. `null` when no percentage change was requested (not the same as `0`). - **salary_sacrifice_enabled** (boolean | null) Requested salary sacrifice state when a change was requested (`true` opt-in, `false` opt-out). - **created_at** (string(date-time)) When the request was created (ISO 8601 UTC). - **updated_at** (string(date-time)) When the request was last updated (ISO 8601 UTC). ### 400 Bad request, the request is malformed or contains invalid data. #### Body: application/json (object) - **error** (string) A descriptive error message. - **validation_errors** (array[object]) ### 401 Unauthorized. #### Body: application/json (object) - **error** (string) A descriptive error message. ### 404 Employee or employer not found. #### Body: application/json (object) - **error** (string) A descriptive error message. [Powered by Bump.sh](https://bump.sh)