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 itsscheme.
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.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 stayspending 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.