SETSimple Easy Transactions
SET DocsAPI reference and complianceUpdated 2026-11-09
Browse: SET Merchant API

Treasury mode and split payouts

SET Merchant API and SET API · Live since 2026-11-09

Treasury mode lets a merchant keep a USDC balance in its own custodial wallet (POST /v1/wallets) instead of cashing out every payment at once. It then sweeps that balance to its own US bank accounts on a schedule, at a threshold, or both. A sweep can be split across up to five of the merchant's own accounts, for example operating, tax savings and payroll.

Set the rule

PUT /v1/wallets/{id}/treasury:

FieldMeaning
scheduledaily, weekly (Mondays) or monthly (the 1st), at 15:00 UTC
thresholdSweep once the USDC balance reaches this amount. SET checks every 10 minutes
keepLeft in the wallet after each sweep. The threshold must be higher
allocations1 to 5 of the customer's own US bank accounts, {bankAccount, share}, with shares in percent summing to 100

A rule needs a schedule, a threshold, or both. GET reads the rule with nextSweepAt, lastSweptAt and lastResult. DELETE turns it off.

Sweep now, or split once

POST /v1/wallets/{id}/sweeps sweeps immediately: by default everything above keep, split by the rule. With allocations and no rule, it is a one-off split payout.

Rules

  • Every part of a sweep is an ordinary withdrawal to the same customer's own bank by ACH, with SET's fee per part and its own wallet_withdrawal.* events naming the sweep (trs_…).
  • A sweep waits while any withdrawal from the wallet is in flight, so a balance is never spent twice.
  • Each part must meet the cash-out minimum, with at least 1.00 reaching the bank after SET's fee, or nothing is swept. The cent left over from splitting goes to the first account.
  • If a part is refused mid-sweep, the rest stays in the wallet (partial) for the next sweep.
  • The rule is the merchant's own standing instruction, set with its own key. SET's operator cannot set, change or run it.

Funding the wallet

Payers send USDC straight to the wallet's address (name the payer with POST /v1/wallets/{id}/activity/{eventId}/sender), or a virtual account can deliver to it.

Not yet included

  • Sweeps to EUR or GBP accounts.
  • A virtual account that delivers to the wallet by wallet id rather than by address.