SET Merchant API · Deposits
Return a deposit to its sender
POST/v1/deposits/{id}/return
Sends a dollar deposit back to whoever sent it. The customer's own custodial wallet (POST /v1/wallets) pays for the return in USDC; SET takes no fee on a return. One return per deposit.
Path parameters
idstringrequired- The deposit's id.
Headers
Idempotency-Keystring- Optional. The same key and body run once; a replay answers with
Idempotent-Replayed: true. Kept 24 hours.
Body
reasonstringrequiredduplicate,fraudulent,requested_by_customer,requested_by_sender,unrecognized_sender,wrong_amount,complianceorother.walletstringrequired- The deposit customer's own custodial wallet, which funds the return.
senderobjectrequired- Who sent the deposit, who receives it back (the Travel Rule beneficiary):
{type: "business" | "individual", name, address: {country (alpha-3), …}}, or{type: "customer"}. Sent to the provider only. amountdecimal string- ACH and FedNow deposits: the whole deposit (
400 amount_must_match). Wire, SEPA and Faster Payments: up to the deposit. Default: the whole deposit.
Notes
- Only USD deposits for now: a EUR or GBP return would be cross-currency, which the provider must enable for SET first (
409 return_currency_not_supported). - Within 90 days of the deposit (
409 return_window_passed), once the provider has received it and not refunded it. Colombian PSE payments cannot be returned. - Events
deposit.return_requested, thendeposit_return.<state>as the return moves. In staging, a return of a simulated deposit is simulated.
Errors
400 body_invalid400 reason_invalid400 amount_invalid400 amount_must_match400 amount_too_high400 return_refused404 deposit_unknown404 wallet_unknown409 return_exists409 return_currency_not_supported409 deposit_not_returnable409 return_window_passed409 return_rail_not_supported409 deposit_not_ready409 wallet_balance_too_low401 api_key_required401 api_key_invalid401 api_key_wrong_mode403 scope_missing429 rate_limited