Use cases
Each use case names the API, the way money moves, the calls in order, and the compliance points that apply. Every case assumes the customer has passed verification (KYB or KYC) and is not in a prohibited activity or jurisdiction.
1. A B2B platform gives each merchant its own US account details
API: SET API (Platforms) · Way: 3, collect to the bank (or 1, to a wallet)
A software platform for, say, recruiting agencies or freight brokers wants every client business to receive ACH and wire payments in its own name, and have them land in that business's own bank.
POST /v1/customerswithtype: "business"; send the merchant the returnedtosLinkandkycLink.- Wait for
customer.updatedwithstatus: "approved"(or pollGET /v1/customers/{id}). POST /v1/payment_setupswithway: "bank"and the merchant's bank details.- Give the merchant
payTo.depositInstructions; its payers pay those numbers. - Watch
deposit.*andcash_out_payment.payment_processed; the second means the merchant's bank was paid.
Compliance: the platform names each payer with POST /v1/deposits/{id}/sender (Travel Rule). Third-party payers follow the provider's rules for virtual accounts (Third parties). The platform never receives or holds merchant funds unless SET has approved platform funds for it in writing (Platform oversight).
2. A payment service provider settles merchants in stablecoin
API: SET API (Platforms) · Way: 1, collect in stablecoin
A regulated PSP (for example a Swiss financial intermediary affiliated to a self-regulatory organisation) collects USD, EUR or GBP bank transfers for its merchants and wants each merchant settled in USDC or EURC to the merchant's own wallet.
- Customer and approval as above; for EUR or GBP request the
sepaendorsement (POST /v1/customers/{id}/endorsements). POST /v1/payment_setupswithway: "wallet",currency,asset(for exampleusdc-base,eurc-base), the walletaddress, andbeneficiary: {type: "customer", walletType, ownershipVerifiedAt}.- Hand the merchant
payTo.depositInstructions. - Each deposit raises
deposit.payment_processed, thendeposit.deliveredonce confirmed on chain.
Compliance: SET's programme applies to the PSP as SET's customer and to every merchant as a verified customer, independently of the PSP's own programme (Platform oversight, Switzerland annex). The wallet's ownership must be verified by the platform before the call (ownershipVerifiedAt).
3. A business takes stablecoin and gets paid in its own currency
API: SET Merchant API (or SET API) · Way: 2, cash out stablecoin
An online seller, agency or software company accepts USDC from customers worldwide and wants USD by ACH (or EUR by SEPA, GBP by Faster Payments) in its own account.
POST /v1/payment_setupswithway: "cash_out"andbankAccount.- Publish
payTo.address(the Cash-Out Address) on invoices, withpayTo.minimumPayout. - Each payment raises
cash_out_payment.*;paidToBank: trueonce the bank is paid.
Compliance: any wallet may pay a Cash-Out Address, so SET names each sender per payment: through POST /v1/cash_out_payments/{id}/sender, or for merchants SET onboarded without a key, through saved payers and single-use payer links (Payer links). An open address that accepts payments from unknown senders is disclosed to the provider as a product model.
4. A bounty, audit or contest platform pays US winners in dollars
API: SET Direct Deposit API
The platform keeps paying USDC on Base or Ethereum. A US payee opens a SET Wallet, verifies, links their bank and gets a Cash-Out Address; the platform pays it like any wallet and the payee receives dollars by ACH.
- The payee gives the platform their Cash-Out Address. The platform checks it with
GET /api/partner/address. - The platform pays it from a sender wallet it registered with SET.
- SET reads the sender on chain, submits the platform as the Travel Rule originator, and the payout reaches the payee's bank.
GET /api/partner/statement?month=shows payouts paid and the platform's share of SET's fee.
5. Pay someone by email before they have a wallet
API: SET Direct Deposit API (Payable Email)
POST /api/partner/payeeswith the payee's email andchain: "base".claimable: pay the returned wallet, thenPOST /api/partner/paymentswith the transaction hash.direct: pay the returned Cash-Out Address.invited: no address; the person already has a SET Wallet and must grant your platform.- The payee claims once; afterwards every payment from that platform goes straight to their bank.
Compliance: the email goes to the wallet provider only. An invited answer is not consent to contact the person (KYC policy, Privacy Policy §2).
6. Move between stablecoins or chains
API: SET API or SET Merchant API · Way: 4, convert crypto
A treasury or marketplace receives USDC on Base and needs USDC on Solana, or EURC.
GET /v1/conversion_routesfor the pair and its minimum.POST /v1/conversion_addresseswith the destination{asset, address, beneficiary}.- Payments raise
conversion_payment.*andconversion_payment.delivered.
7. Dollars in, euros out
API: SET API or SET Merchant API · Way: 3 with a SEPA bank
A European merchant sells to US buyers. POST /v1/payment_setups with way: "bank", currency: "usd" and an EUR bankAccount (IBAN): US payers pay a US account; the merchant receives euros by SEPA. SET's fee is taken once. No rate is locked: GET /v1/exchange_rates?from=usd&to=eur&amount= gives an estimate only.
What SET does not support
- Payments to a bank account that is not the customer's own (supplier payouts, payroll to third parties) through a Cash-Out Address: every address pays the customer itself.
- Games of chance, gambling, sweepstakes, lotteries and every other prohibited activity.
- Customers whose principal residence or operating address is in New York, or in a prohibited jurisdiction.
- Locked exchange rates; RTP (FedNow is offered); USDT on Tron.