Skip to main content
A Beneficiary is a payee of your Business: a person or a business that receives payouts. Every Beneficiary has an explicit compliance_status that gates payout creation. The compliance process is KYC for a person Beneficiary and KYB for a business (derived from beneficiary_type); the status values are shared:

Compliance acknowledgment (MVP)

Cleff runs a Business-acknowledgment compliance model: by submitting acknowledged: true on registration, your Business attests that it has independently verified the Beneficiary’s identity (KYC for a person, KYB for a business). The Beneficiary transitions to compliant immediately and acknowledged_at is recorded. Omit the flag (or pass false) to leave the Beneficiary in pending. When provider-verified compliance ships (Routefusion), the same provider interface will flip to webhook-driven activation. The schema is already in place to keep that change non-breaking for your integration.

Bank details

bank_details is a corridor-flexible payload modeled after Routefusion / Lightspark Grid / Mercury / Deel. Required fields work for any corridor; identifier fields are corridor-specific. At least one of iban or account_number must be present; otherwise the request fails with error.code = "validation_failed" and details[].code = "missing_account_identifier".
Validation in MVP is intentionally permissive. Per-corridor format checks (IBAN checksum, ABA structure, etc.) will tighten when the live Routefusion disbursement integration ships.

Endpoints

Collection invites, the flow where the Beneficiary submits their own details through a Cleff-hosted form (see Beneficiaries & compliance): Bank accounts, which payouts name explicitly via bank_account_id:

Tenant scoping

Beneficiaries are scoped to the Business and environment of the API key used to access them: a sandbox key cannot read or modify a production Beneficiary, and a key issued to one Business cannot access another Business’s Beneficiaries. Cross-tenant fetches return 404.