Skip to main content
PUT
Set the destination a Beneficiary is paid to by default
Agents: fetch this page as plain markdown at https://docs.usecleff.com/api-reference/beneficiaries-declared-destination-update.md.

Authorizations

Authorization
string
header
required

Cleff API key, created in the dashboard under Settings → API keys

Path Parameters

id
string
required

Body

application/json
destination_id
string
required

A destination the Beneficiary already holds, from GET /v1/beneficiaries/{id}/bank-accounts. It must be payout-usable.

Response

id
string
required
beneficiary_type
enum<string>
required
Available options:
person,
business
name
string
required

Legal display name (first+last or business name); never piped

display_name
string
required

Preferred display label: nickname when set, else legal name

email
string
required
compliance_status
enum<string>
required
Available options:
pending,
compliant,
suspended
identity_complete
boolean
required

Derived: false while the per-type required identity field is still deferred (a stub in the awaiting_pii state). True once the identity is complete. Never stored. Computed against the CURRENT required-field list, so a compliant beneficiary can read false after that list grows: that is a top-up prompt, not a block — the beneficiary keeps its status and keeps receiving payouts, and supplying the field on PUT /v1/beneficiaries/:id or over a full_onboarding collect link flips it back to true.

acknowledged_at
object | null
required
reacknowledgment_required
boolean
required

Soft flag: a trigger PII field changed after acknowledgment. Compliance status stays compliant, but new Payout creation is blocked until the Business re-acknowledges.

collection_status
enum<string>
required

Identity collection sub-state. Only a full_onboarding link advances it; a payout_destination link lands no identity. Either link records the destination the beneficiary chose, which is declared_destination_id and not this field.

Available options:
not_invited,
invited,
details_submitted
details_submitted_at
object | null
required

When the beneficiary completed the full_onboarding collection-link form.

declared_destination_id
object | null
required

The destination a payout goes to when it names none: the one the beneficiary chose in the collection flow, or the one the Business set with PUT /v1/beneficiaries/{id}/declared-destination, whichever was written last. Cleff never substitutes a sibling for it. null while none has been declared, in which case a destination resolves only while exactly one is payout-usable and is otherwise refused as ambiguous.

status
enum<string>
required

Derived read-model Status chip: a pure projection over {identity completeness, compliance state + re-ack flag, bank-account validation/verification}. The invited chip was retired. Not a stored state machine.

Available options:
suspended,
reacknowledgment_required,
pending_details,
pending_kyc,
action_required,
ready
pending_requests
object[]
required

Derived: the beneficiary's live (unconsumed, unexpired) collection-link requests — {id, scope, expires_at} — read off the live-token store, never stored. Consumed/expired tokens never appear. Cardinality is 0..1 today (resend invalidates the prior link), but the shape is a list.

archived_at
object | null
required

When the Business archived this Beneficiary, or null while it is active. An archived Beneficiary is gone from the address book (list, CSV export) and refuses new Payouts, but stays readable by id so a Payout's payee can still be resolved.

environment
enum<string>
required
Available options:
sandbox,
production
created_at
string<date-time>
required
nickname
object | null

Business-facing display label, when set

phone
object | null
first_name
object | null
last_name
object | null
country_of_residence
object | null
date_of_birth
object | null
business_name
object | null
country_of_incorporation
object | null
registration_number
object | null
tax_id
object | null
postal_address
object | null

Optional structured postal address; null when unset

bank_details
object | null
deprecated
enrollment_status
enum<string> | null

Provider enrollment status for the default payout rail, or null when the Beneficiary has never been enrolled. rejected means the last synchronous enrollment attempt failed (e.g. the rail rejected the bank): the Beneficiary is compliant but payouts cannot reach them until re-enrollment succeeds.

Available options:
pending,
verified,
rejected,
suspended,
closed
enrollment_failure_detail
string | null

The payment rail's own words for the refusal behind enrollment_status: rejected, stripped of the provider; null in every other enrollment state, a retry still in flight included. Beneficiary-level: a refusal that named a bank account repeats it on that account's rail_rejection_reason, while one that named none — a person-level refusal, or a Beneficiary with no destination yet — is readable only here.

enrollment_failure_bank_account_id
string | null

The bank account the refusal behind enrollment_status: rejected named, or null when it named none (a person-level refusal, or one that landed before any destination existed) and in every other enrollment state. A named account repeats the same reason on its own rail_rejection_reason; an unnamed one is readable only on enrollment_failure_detail.