Skip to main content
Onboard a Beneficiary and leave them ready to be paid. For developers wiring onboarding into their product. Every path below onboards the same Beneficiary (the payee), Jane Doe, and ends with her status reading ready.
Agents: fetch this page as plain markdown at https://docs.usecleff.com/guides/onboard-a-beneficiary.md.
You need a sandbox API key exported as CLEFF_API_KEY; the Quickstart shows how to mint one. What ready means, and which destination a payout to Jane goes to, is on Beneficiaries & compliance.

Pick a path

Pick one path per Beneficiary. An email address belongs to one active Beneficiary per environment, so creating Jane a second time with jane@example.com is refused.

Register Jane through the API

1

Create Jane and attest to her compliance

Passing acknowledged: true records that your Business has independently verified Jane’s identity, which makes her compliant straight away.
Capture beneficiary.id from the response:
Jane’s status is now action_required: she is compliant but has nowhere to be paid.
2

Register her bank account

Because Jane is already compliant, the account is verified on arrival, and a routing number that passes Cleff’s format checks makes it validated. Together they give payout_usable: true.
Jane holds one destination and has declared none, so a payout that omits destination_id goes to this account. Confirm she is ready.

Import Jane with the rest of your base

Import creates each Beneficiary, registers their bank account and records your attestation in one request, for up to 500 rows. Every row needs acknowledged: true, and the call needs a key with the business_admin role.
Jane’s row was created, and payout_usable: true means her account can be paid already. A row can be created with payout_usable: false; the reference explains per-row failures and what to resend.
Confirm she is ready.

Invite Jane to enter her own details

Inviting keeps Jane’s identity details and account number out of your systems, and it is the only path on which she can choose a debit card or pick which destination she is paid to.
1

Invite her

Bulk invites create an identity-only Beneficiary per row and email each one a link to a form where they enter their own details.
Jane’s status is pending_details until she submits the form.
2

Wait for her to submit

Jane fills in her identity details and adds a destination: a bank account, or, in production, a debit card if your Business is approved for card payouts. The destination she adds becomes her declared destination.Subscribe to beneficiary.details_submitted to hear when she is done, or poll her until her status moves from pending_details to pending_kyc:
Once it reads pending_kyc, her details are in, and they wait on your attestation.
3

Attest to her compliance

Check the identity Jane submitted, then acknowledge it:
Jane becomes compliant, and the destination she added is verified with her.

Confirm Jane is ready to pay

Whichever path you took, read Jane back:
The response is trimmed to the fields that matter here. Read two of them: Jane is ready to pay. A payout to her needs only beneficiary_id: with a declared destination it goes there, and without one it goes to the only destination she holds.