disbursed
payout. For developers who want to see the whole loop before wiring Cleff into
their product. Everything runs against the sandbox environment: no money
moves, and nothing here needs review or approval from Cleff.
Agents: fetch this page as plain markdown at
https://docs.usecleff.com/quickstart.md.curl, and nothing else.
1
Create your account
Sign up at app.usecleff.com/signup. The
three-step wizard creates your user account and your Business (labelled
Organization in the wizard and Company in the dashboard). Verify the email you receive, then sign in.Once your email is verified, the dashboard opens on your business profile and
stays there until you submit it, which is the next step. Production stays locked
until your Business completes verification; see Go live when you get
there.
2
Complete your business profile
In the dashboard, fill in your company profile under Settings → Company
and submit it. Submitting takes you to the dashboard home, and your sandbox now
has $1,000,000.00 USD of test money.
The same profile later becomes your verification dossier for
going live, so nothing here is throwaway work.
3
Mint a sandbox API key
In the dashboard, open Settings → API keys and create a key. The plaintext
key is shown exactly once: Cleff cannot show it again. Export it for the
rest of this walkthrough:Authentication covers the key format and rotation.
4
Create a Beneficiary
A Beneficiary (the payee) is a person or business you pay. Passing
Capture
acknowledged: true attests that your Business has independently verified
their identity, which moves them straight to compliant, the state payout
creation requires. Beneficiaries & compliance
explains what that attestation means.beneficiary.id from the response:5
Give Jane a destination
A payout goes to a destination: somewhere the Beneficiary can be paid. Jane
has none yet, so register one on her behalf. Here it is a US bank account:Check that
payout_usable is true in the response. That is the one flag
that says a payout can reach this destination. Account numbers are masked to
last4 in every response.6
Create the payout
Mint an idempotency key for this payout. It is what makes the call safe to
retry, so keep it for as long as you might resend the request:The request names who to pay and how much, but not where:Jane Doe is owed $500.00 USD;
amount_minor is 50000 because amounts are in
minor units. A payout goes to the destination the Beneficiary declared. Jane
has not declared one, so it goes to her only payout-usable destination, the one
you just registered; destination_id names it.The payout starts in pending_approval; nothing moves until it is approved.
Re-running this curl with the same key within 24 hours returns the original
payout with HTTP 200 instead of creating a second one; changing the amount or
any other detail under the same key is refused with IDEMPOTENCY_CONFLICT.
See Idempotency.7
Approve it
Every payout passes an approval gate before it is sent. Approve yours. The
Approval queues the payout to be sent; sending happens asynchronously.
decision_id is a ULID you supply, which makes the approval safe to retry:8
Watch it disburse
Poll the payout and watch $500.00 USD has left your Cleff Account for Jane’s destination.That is the whole loop: add a Beneficiary and a destination, create, approve,
disburse. In production the only differences are real providers and real money.
status move from processing to in_transit once
the provider confirms the money has left:Next steps
Using the dashboard
What your operations team can do without touching the API.
Go live
Verify your Business, fund your Cleff Account and send real payouts.
Use with AI tools
Point your coding assistant at these docs as plain markdown.