Before you start
Refetch the source wallet. Confirm its current status permits the payout and its available balance covers the intended source amount. Store its response-derived ID asSOURCE_WALLET_ID.
You also need a ready payout capability for the current customer and selected destination.
Existing Tron wallets can send USDT to another Tron wallet with a stablecoin_transfers quote. The input and output must use the same network and stablecoin. You cannot create new issued wallets on Tron.
1. Prepare the destination
- First-party
- Third-party
Use a customer-owned external bank account when the customer owns the endpoint. Create it with Read it with
POST /v3/customers/{customerId}/accounts and these headers:Request headers
Request body
GET /v3/customers/{customerId}/accounts/{accountId}. Continue only when its current status permits the payout. Store its acc_ ID as PAYOUT_DESTINATION_ID.2. Create the payout quote
UsePOST /v3/quotes with these headers:
Request headers
Request body
data.id as QUOTE_ID and present the returned price and fees.
Choose a bank route
For a crypto-to-fiat payout, you can set the optionalinstitutionId to require an approved bank route for the customer. Omit it to use automatic routing.
Request body with institutionId
- An explicit
institutionIdnever falls back to another bank. When the selected bank has no ready route for this customer, capability, and destination,POST /v3/quotesreturns422bank_not_supported_for_customerwith the pointer/institutionId. institutionIdis only valid on crypto-to-fiat payout quotes. Sending it on a pay-in, card, or stablecoin transfer quote returns400validation_error.- Quote and transfer reads echo the
institutionIdof the selected route, including an automatically selected one, when the bank can be identified.
SWIFT payouts
In production, USD SWIFT payouts need a ready SWIFT capability that supports payouts (swift_pooled or swift_named) and are funded by USDC on Ethereum, Base, or Polygon, or by USDT on Ethereum or Polygon. The recipient amount after fees must be at least 100.00 USD.
A SWIFT destination needs the bank’s street address in bankAddress, bankCity, bankState, and bankPostalCode. The BIC country must match the bank country. Swipelux takes the beneficiary address from the customer or recipient profile.
Pix payouts
Pix and Pix Safe recipient destinations receive BRL. Quote the payout with the customer’s ready Pix capability (pix_pooled), fund it with USDC, and set out.currency to BRL. USDT cannot fund a BRL payout.
A Pix payout cannot carry a developer fee. If the source account has developer fees, set fees.breakdown.developer to {"fixed": "0.00", "bips": 0} in the quote request. Otherwise, POST /v3/quotes returns 400 validation_error.
Swipelux prices the quote only after the destination’s bank details are approved. While they are being verified, POST /v3/quotes returns 400 validation_error with a detail saying the destination is still being verified, so request a new quote once verification completes. If the bank details were rejected or the destination’s setup is incomplete, the detail asks you to contact support instead, and new quotes keep failing until support completes the setup. If verification cannot be checked, it returns 503 quote_temporarily_unavailable; retry later.
3. Execute the payout
Create the transfer withPOST /v3/transfers. Use one new key for this intended execution:
Request headers
Request body
data.id as TRANSFER_ID. A successful create starts the payout; it does not prove delivery.
4. Track delivery
ReadGET /v3/transfers/{transferId} after creation and after each event. Use the latest data.state, data.stateDetail, and data.openTaskIds to decide whether to wait, act, or show a terminal outcome.
Next, review Quotes and transfers for exact amounts, safe execution recovery, and transfer tasks.