Skip to main content
The API offers two transfer pipelines. Both start from a quote and deliver fiat to a recipient, but they differ in how the deposit address works and how the deposit is confirmed.

At a glance

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 with POST /api/payouts/transfer/v2/confirm-transfer.
1

Create the transfer

Call POST /api/payouts/transfer/v2 to receive a transfer_id and deposit_address.
2

Send the USDC

Send exactly the quoted amount to the deposit address on the chosen network.
3

Confirm the deposit

Call POST /api/payouts/transfer/v2/confirm-transfer with the transfer_id and the tx_hash. The platform matches the deposit and starts the payout.
Supported networks for v2: base, solana, polygon, arbitrum, avalanche, ethereum.
Each tx_hash may be used only once across the entire platform. Reusing a hash that is already linked to any transfer returns 409. A repeat call with the same transfer_id and tx_hash is idempotent.

Quoting for v2

When quoting before a v2 transfer, pass v2_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.