Skip to main content
POST
Create a transfer

Authorizations

Authorization
string
header
required

Pass your API key as a Bearer token: Authorization: Bearer mw_live_<keyId>_<secret>

Body

application/json
quote_id
string
required

The quoteId returned by GET /api/payouts/quote (valid for 5 minutes; single-use)

Example:

"3f7a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c"

amount
number
required

USD amount to transfer (max 2 decimal places, must match the quoted amount ±$0.01)

Example:

100

recipientId
integer
required

Recipient account ID (must belong to your account)

Example:

12345678

customer_uuid
string<uuid>
required

Your own UUID for this transfer — stored for audit and support lookups. Must be globally unique across all transfers; a duplicate UUID is rejected with 409.

Example:

"550e8400-e29b-41d4-a716-446655440000"

customer_email
string<email>
required

Email address of the end user. Used to send transfer status notifications.

Example:

"user@example.com"

source_token
string
required

Token to send. Supported values: usdc, usdt. Use GET /api/payouts/deposit-options to retrieve the full list of supported token/network combinations.

Example:

"usdc"

source_network
string
required

Network to send from: arbitrum, avalanche, base, ethereum, polygon, solana, tron.

Example:

"base"

wallet_address
string
required

The address on source_network that will send USDC or USDT to the deposit address. Currently restricted to EVM addresses only (0x + 40 hex chars) because every transfer is pre-screened for compliance and the screener supports Ethereum-family addresses only. Solana and Tron addresses are temporarily rejected on this endpoint. The deposit address returned will be on the same network as source_network.

Example:

"0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B"

keep_recipient
boolean

When true, the recipient account is not automatically deleted after the transfer reaches a terminal state (completed or failed). Use this for saved/reusable recipients that you manage yourself. Defaults to false — recipients are deleted automatically after each transfer.

Example:

false

Response

Transfer created — send USDC to deposit_address to trigger the payout pipeline

Wrapper returned by both POST /api/payouts/transfer and GET /api/payouts/transfer/:id

transfer
object
required