SETSimple Easy Transactions
SET DocsAPI reference and complianceUpdated 2026-11-10
Browse: SET Direct Deposit API

Recipe: exact-net payout

SET Direct Deposit API · Recipe, 2026-11-10

What it does

Your payee must receive the full amount in their bank, say $100.00, and must be paid once, however often your system retries. SET's fee is the payee's, taken from what you send, so you send a little more than $100.00. Every part of this is live; this page puts the calls in order.

Before you start, register the wallet you pay from (Sender wallets). You need the payee's Cash-Out Address and your own reference for the payout (a bounty, invoice or job id; never a name or email).

Steps

  1. Ask how much to send. `` GET /api/partner/quote?netUsd=100.00&chain=base&address=0x… ` amountUsdc is the least whole-cent amount that reaches the bank as at least netUsd after the fee on that address: 103.09 at 3%. belowMinimum must be false. partnerShareUsd` is your revenue share on it (Paying an exact amount to the bank).
  2. Check the address takes that amount. `` GET /api/partner/address?chain=base&address=0x…&amountUsdc=103.09 ` Go on only if acceptsPayouts is true`.
  3. Reserve the payout under your reference. `` POST /api/partner/payout_intents { "reference": "bounty-4471", "amountUsdc": "103.09", "chain": "base", "address": "0x…" } ` 201 with state: "open". If your system asks again for the same reference, the answer is 409 already_intended (or already_paid`) with the first intent, so nothing is paid twice (Paying each reference once).
  4. Send exactly amountUsdc USDC to the address, from your registered wallet. Keep the transaction hash.
  5. Set your reference on the payment. `` POST /api/partner/references { "chain": "base", "txHash": "0x…", "to": "0x…", "reference": "bounty-4471" } ` The intent becomes paid, and you get payout_intent.paid`.
  6. Follow the bank leg. payout.funds_received, then payout.payment_processed, carry your reference. The bank amount on the provider's receipt is final.

What it costs you

The payee pays the fee: on $103.09 at 3%, $3.09, and the bank receives $100.00. Making them whole costs you the $3.09 you add, less your revenue share on the payout, which SET pays you monthly. A platform cannot pay the fee in the payee's place instead (Paying an exact amount to the bank, "What it is not").

In the sandbox

On staging, step 4 can be a simulated payout to a sandbox payee's Cash-Out Address (POST /api/partner/sandbox/payouts, then …/advance for each bank step). A self-serve sandbox key has no payee Cash-Out Address to pay yet, so with one of those the recipe stops at step 1 with 404 address_unknown. Step 3 can be tried with a payee resolved by email, sending payeeId in place of address (Wallet everywhere, bank in the US).