# Set the worker's elected fund allocation **PUT /employers/{employer_id}/employees/{employee_id}/fund_allocation** Set the worker's elected fund allocation. Partners choose a target from `GET /fund_allocations`; this endpoint applies it immediately and returns the new state. Lifetime fund strategies are not supported — only concrete catalogue allocations. Idempotent: requesting the worker's current `fund_allocation_id` returns `200` with the current allocation and does not re-apply fund-change side effects. When the allocation actually changes, emits a `FundAllocation` webhook with action `Changed`. Idempotent no-ops do not emit a webhook. ## 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) - **fund_allocation_id** (string) Penfold fund allocation id to elect for the worker. ## Responses ### 200 Fund allocation updated successfully (or unchanged when idempotent). #### Body: application/json (object) - **id** (string) Penfold fund allocation id. - **name** (string) Display name (e.g. "Penfold Growth", "Penfold Balance"). - **description** (string | null) - **provider** (string | null) Fund manager or provider label. - **risk_level** (integer | null) Standardised risk scale (TBD). - **effective_annual_fee_percent** (number) Combined effective annual fee percentage (Penfold administration fee plus fund manager charge), weighted by the worker's current pot value and applicable fee tier thresholds. - **asset_allocation** (array[object] | null) - **asset_allocation_as_of_date** (string(date) | null) Date the asset allocation breakdown was last updated. ### 400 Request body validation failed (e.g. missing `fund_allocation_id`). #### 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, or fund allocation is not available for the employee. #### Body: application/json (object) - **error** (string) A descriptive error message. ### 405 Method not allowed #### Body: application/json (object) - **error** (string) A descriptive error message. ### 422 `fund_allocation_id` is unknown or not in the workplace catalogue (`GET /fund_allocations`). #### Body: application/json (object) - **error** (string) A descriptive error message. - **validation_errors** (array[object]) [Powered by Bump.sh](https://bump.sh)