Skip to main content
A wallet payout sends USDC from one of your USDC accounts to an address on a public chain. It uses the same destinations, quotes and transfers as a bank payout. What differs is the route, the one field that identifies the payee, and what can go wrong.
A payout that reaches the chain cannot be recalled. Check the address and the chain before you send: USDC sent to an address on the wrong chain, or to an address nobody controls, is gone.

What you need

  • A USDC account whose deposit addresses Sakawave issued. Not every USDC account can pay a wallet. If yours cannot, the preview refuses it before anything is debited, with 409 transfer_source_account_ineligible.
  • Tier 3. Crypto withdrawals are gated at tier 3; below it the transfer is refused with 403, reason: "feature_not_available".
  • The route for the chain. Each chain is its own route, with paymentMethod: "stablecoin-transfer" and the chain as its scheme.
List the routes with GET /v1/currencies/USDC/routes. A wallet route has no country, so always send its routeId: without one, a destination is resolved as a bank transfer and needs a country.

Order of operations

1. Create the destination

accountName is the person or business that holds the wallet. It is kept with the payout for your records and ours; it is not checked against the chain, because a chain does not know who holds an address. Before the destination is created, the address is checked against the route’s chain, and screened against sanctions lists. A saved recipient works the same way: its payment detail takes walletAddress in fields, and it is checked and screened on creation.

2. Quote and send

Quote and send as for any same-currency transfer, from the USDC account, in USDC. The preview shows the fee before you commit.
USDC is held at 8 decimals, like every crypto balance, but carries 6 on chain. An amount must therefore be a whole number of millionths: a multiple of 100 in minor units. Anything finer cannot be sent, and the transfer fails with the debit returned.

3. Follow the transfer

The account is debited when you create the transfer, and the transfer stays pending until the chain confirms it, usually within a few minutes. Webhooks report each change, as for any transfer. A transfer stays pending, rather than failing, while something on our side holds it up: for example, the sanctions lists being refreshed. It is sent as soon as that clears, and you do not need to send it again.

Errors

An address that is screened clear when you save it is screened again when it is paid. A transfer to an address listed in between fails, and the debit is returned.