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 — POST /api/payouts/transferv2 — POST /api/payouts/transfer/v2
TokensUSDC and USDTUSDC only
Deposit addressUnique per transferFixed per token/network
ExpirySend within the quote windowNo expiry
Deposit confirmationAutomatic on-chain detectionYou submit the tx_hash
Sender addressEVM 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.
curl -X POST "$MW/api/payouts/transfer" \
  -H "Authorization: Bearer mw_live_<keyId>_<secret>" \
  -H "Content-Type: application/json" \
  -d '{ "quote_id": "...", "amount": 1000, "recipientId": 12345678,
        "customer_uuid": "...", "customer_email": "user@example.com",
        "source_token": "usdc", "source_network": "base",
        "wallet_address": "0xAb58...C9B" }'

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.