Payout timing: paid in minutes, at the bank later
SET API (Platforms) and SET Direct Deposit API · Guide, 2026-11-10
The problem
A platform wants to show "Paid" within minutes. A bank payment does not arrive in minutes: SET's provider's published guidance is that ACH funds typically land in 1–2 banking days. Waiting for the bank to confirm makes the platform look slow. Showing "Paid" when the payout was only queued claims something that has not happened.
The answer: two milestones
With Payable Email (POST /v1/payable_emails, or POST /api/partner/payees on Direct Deposit), a payment has two separate milestones:
| Milestone | Event | What it proves |
|---|---|---|
| In the payee's wallet | payable_payment.in_wallet | The USDC is final on chain in a wallet only the payee can unlock. From this moment it is the payee's money |
| At the payee's bank | payable_payment.claimed, then payable_payment.at_bank | The payee moved it to their Cash-Out Address, and the bank was paid |
A platform that must show "Paid" in minutes can use payable_payment.in_wallet as its proof of payment. The bank leg follows when the payee claims, on the payee's own timing.
Rules
- Treat only these events as outcomes. Never use a redirect, or a transaction your front end saw, as proof; see Webhooks and events.
- Word your "Paid" state for what it means: "Paid to your SET wallet", not "Deposited to your bank".
- A payee who already has a Cash-Out Address and granted you access (
direct) is paid straight to the bank. There is no wallet milestone; followpayout.<state>instead.
Same-day at the bank
When the bank leg itself must be fast, a Cash-Out Address with a wire address is the same-day option.