Skip to main content
POST
Create a Payout Intent
Agents: fetch this page as plain markdown at https://docs.usecleff.com/api-reference/payouts-create.md.

Authorizations

Authorization
string
header
required

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

Headers

Idempotency-Key
string

Idempotency key for this Payout, scoped to (Business, environment) for 24h. Recommended over the idempotency_key body field; one of the two is required, and if both are sent they must match.

Body

application/json
beneficiary_id
string<uuid>
required
amount_minor
number
required

Amount in minor units (e.g. cents). Max 9007199254740991 (2^53−1) to preserve JS integer precision.

Required range: x <= 9007199254740991
currency
string
required

ISO 4217 currency code

purpose_of_payment
enum<string>
required

Why the funds are being sent. Routefusion requires a purpose-of-payment on every transfer. Provisional corridor-agnostic set; coded values live behind the purpose-of-payment seam.

Available options:
advertising,
advisor_fees,
charity,
education,
family_support,
investment,
loan_repayment,
medical,
other,
payroll,
purchase_of_goods,
purchase_of_services,
real_estate,
royalties,
taxes,
treasury,
travel
destination_id
string<uuid>

The Beneficiary's payout destination — a bank account or a card. Omit it to pay the destination the Beneficiary declared, or their only payout-usable one. Name one of the Beneficiary's destinations to pay that one instead, whether or not it is the declared one; the declaration does not change. A destination that cannot be paid is refused, never replaced by the declared one.

bank_account_id
string<uuid>
deprecated

Deprecated spelling of destination_id, still accepted. If both are sent they must match.

idempotency_key
string

Alternative to the Idempotency-Key header, which is recommended; one of the two is required, and if both are sent they must match. Scoped to (Business, environment); 24h short-circuit window. Resending the same request inside the window replays the original Payout (HTTP 200); reusing the key for a request naming different money is rejected with IDEMPOTENCY_CONFLICT (409).

external_ref
string

Business-supplied reference (e.g. tradeId/jobId).

validator_strategy
enum<string>

Override the per-Business default validator strategy for this Intent.

Available options:
manual
replaces_payout_id
string<uuid>

Self-link to a previously-failed Payout this Intent is replacing. The predecessor must be in failed state, belong to the same Business, and not have been replaced already.

via
object

Channel metadata. The recorded channel always comes from the credential (session→dashboard, API key→api). Clients may declare { channel: 'sdk', sdkVersion? } or { channel: 'cli', cliVersion? }, which does not change the recorded channel; other channels are rejected.

Response

payout
object
required