At a glance
v1 — POST /api/payouts/transfer | v2 — POST /api/payouts/transfer/v2 | |
|---|---|---|
| Tokens | USDC and USDT | USDC only |
| Deposit address | Unique per transfer | Fixed per token/network |
| Expiry | Send within the quote window | No expiry |
| Deposit confirmation | Automatic on-chain detection | You submit the tx_hash |
| Sender address | EVM only (compliance screened) | EVM required when screening is on; Solana allowed when off |
v1: automatic detection
The v1 endpoint returns a unique deposit address for each transfer. Send the USDC or USDT, and MW detects the deposit and starts the payout automatically — no further call is needed. Use v1 when you want the simplest flow, need USDT, or rely on automated compliance screening of sender wallets you do not control.v2: two-phase confirmation
The v2 endpoint returns a fixed deposit address and never expires. After you send the USDC, you must link the on-chain transaction to your transfer withPOST /api/payouts/transfer/v2/confirm-transfer.
Create the transfer
Call
POST /api/payouts/transfer/v2 to receive a transfer_id and deposit_address.base, solana, polygon, arbitrum, avalanche, ethereum.
Quoting for v2
When quoting before a v2 transfer, passv2_offloader=true to GET /api/payouts/quote. The fee fields are calculated for the v2 pipeline: serviceFeePercent reflects your configured fee plus 20 bips, serviceFeeFixed is 0, and providerCharge is absent. See Quotes and fees.