Skip to main content
POST
Create a v2 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<uuid>
required

UUID returned by GET /api/payouts/quote. Must be used within 5 minutes.

Example:

"a1b2c3d4-e5f6-7890-abcd-ef1234567890"

amount
number
required

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

Example:

500

recipientId
integer
required

Recipient account ID from GET /api/payouts/recipients or POST /api/payouts/recipients.

Example:

12345678

source_token
enum<string>
required

Source token. Only usdc is accepted on v2. Use POST /api/payouts/transfer for USDT.

Available options:
usdc
Example:

"usdc"

source_network
enum<string>
required

Network on which you will send USDC to the deposit address.

Available options:
base,
solana,
polygon,
arbitrum,
avalanche,
ethereum
Example:

"base"

customer_uuid
string<uuid>
required

Your own UUID for this transfer — stored for audit and duplicate prevention. A duplicate UUID is rejected with 409.

Example:

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

wallet_address
string

The address on source_network that will send USDC to the deposit address. Conditionally required: required if compliance screening or KYC verification is enabled for your account; may be omitted otherwise (stored and returned as an empty string). When compliance screening is enabled (the default), it must be an EVM address (0x + 40 hex chars) and is screened before processing — Solana addresses are rejected. When screening is disabled, both EVM (0x + 40 hex chars) and Solana (base58, 32–44 chars) addresses are accepted; if KYC is enabled it must be a KYC-verified wallet.

Example:

"0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B"

keep_recipient
boolean

When true, the recipient is not automatically deleted after the transfer reaches a terminal state. Defaults to false.

Example:

false

customer_email
string<email>

Email address to receive payout status notifications (sent and failed). If omitted, notifications are sent to the authenticated account's email address.

Example:

"customer@example.com"

Response

Transfer created — deposit address returned

transfer_id
string
required

Unique transfer reference. Use this ID with POST /api/payouts/transfer/v2/confirm-transfer.

Example:

"507f1f77bcf86cd799439011"

deposit_address
string
required

The address to send USDC to on source_network. This is a fixed offloader wallet address.

Example:

"0xBC91bCF38e3c0DE1E3fD0cF50Be7c0e52D55D00e"

source_token
string
required

Token to send (always usdc on v2).

Example:

"usdc"

source_network
string
required

Network on which to send USDC.

Example:

"base"

amount
number
required

USD amount to send.

Example:

500

currency
string
required

Target payout currency.

Example:

"EUR"

wallet_address
string
required

Your sender address as supplied in the request. Empty string when omitted (KYC not enabled for your account).

Example:

"0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B"

instructions
object
required

Human-readable instructions for completing the transfer.