Replace the worker's entire nominated beneficiary set. Existing beneficiaries are deleted and the request body is written as the new set.
Every request must include the full desired beneficiary list. Send every
beneficiary you want on record after the write, each with a complete address.
Omitting a beneficiary that exists today removes them. There is no partial update
or merge-by-id behaviour.
percentage values across all beneficiaries in the request must sum to exactly
100, or the request fails with 400.
PUT
/employers/{employer_id}/employees/{employee_id}/beneficiaries
curl \
--request PUT 'https://payroll-api.getpenfold.dev/v4/employers/{employer_id}/employees/{employee_id}/beneficiaries' \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '[{"first_name":"string","last_name":"string","phone":"string","relationship":"Other","percentage":42,"address":{"street_number":"string","line1":"string","line2":"string","town":"string","county":"string","postcode":"string","country":"string"}}]'
Request examples
[
{
"first_name": "string",
"last_name": "string",
"phone": "string",
"relationship": "Other",
"percentage": 42,
"address": {
"street_number": "string",
"line1": "string",
"line2": "string",
"town": "string",
"county": "string",
"postcode": "string",
"country": "string"
}
}
]
Response examples (200)
[
{
"id": "string",
"first_name": "string",
"last_name": "string",
"phone": "string",
"relationship": "Other",
"percentage": 42,
"address": {
"street_number": "string",
"line1": "string",
"line2": "string",
"town": "string",
"county": "string",
"postcode": "string",
"country": "string"
},
"created_at": "2026-05-04T09:42:00Z",
"updated_at": "2026-05-04T09:42:00Z"
}
]
Response examples (400)
{
"error": "Bad request: invalid data provided.",
"validation_errors": [
{
"field": "email",
"message": "Email address is invalid."
}
]
}
Response examples (401)
{
"error": "Bad request: invalid data provided."
}
Response examples (404)
{
"error": "Bad request: invalid data provided."
}
Response examples (405)
{
"error": "Bad request: invalid data provided."
}