Swapper

Get USDC on Arbitrum One

Before you swap USDC to XMR you need two things in a wallet you control: native USDC on Arbitrum One and a little ETH there for gas.

Open the swap app →

Checklist

TokenUSDC (native, issued by Circle), 6 decimals
Token contract0xaf88d065e77c8cC2239327C5EDb3A432268e5831
NetworkArbitrum One, chain ID 42161
GasETH on Arbitrum One. The sending wallet needs a small amount of ETH on Arbitrum One to pay gas for the USDC transfer.
You receive XMR atA Monero address you control (95 or 106 characters). Never use an exchange deposit address unless the exchange explicitly supports it.

Avoid these mistakes

Order of steps

Quote before you fund: the quote tells you how much USDC to get.

  1. Quote first with receiveAmount (the XMR wanted) to learn how much USDC is needed. A quote reserves nothing.
  2. Get that much native USDC on Arbitrum One plus a small buffer (the price can move), and a little ETH there for gas, in a wallet you control.
  3. Once it has arrived, re-quote (requoteOf the first quoteId keeps its inputs) and confirm the new terms.
  4. Create the order from the confirmed quote, then send the exact deposit in one transfer before it expires.

Coming from Ethereum mainnet

Ethereum mainnet is a different network from Arbitrum One: move the USDC to Arbitrum One first, and get a little ETH there for gas.

  1. Quote first (receiveAmount: the XMR wanted) to learn how much USDC to move, and move a little more: the price can change before you re-quote.
  2. Never send USDC on Ethereum to a Swapper deposit address. The order only takes native USDC on Arbitrum One; it does not detect a transfer on another network, and recovery is not guaranteed.
  3. Get a little ETH on Arbitrum One for gas. The Arbitrum Bridge moves ETH from Ethereum to Arbitrum One; that transaction is paid in ETH on Ethereum.
  4. Move the USDC with Circle's CCTP (on the Arbitrum Bridge, choose native USDC, not USDC.e). CCTP burns the USDC on Ethereum, paid in ETH on Ethereum, and mints native USDC on Arbitrum One. Unless the interface mints it for you, the mint is a second transaction paid in ETH on Arbitrum One.
  5. Circle's docs give average CCTP times from Ethereum of about 15-19 minutes for a Standard Transfer (no Circle fee) and about 20 seconds for a Fast Transfer (Circle charges a fee). The interface decides which one you get.
  6. When it arrives, check the token contract is 0xaf88d065e77c8cC2239327C5EDb3A432268e5831. Then re-quote (requoteOf the first quoteId) and confirm the new terms before creating the order.

Verified example (informational, no endorsement):

Reference: CCTP finality and block confirmations: average transfer times (Circle) (checked 2026-10-08) · CCTP fees (Circle) (checked 2026-10-08) · Circle Forwarding Service for CCTP: gas on the destination chain (Circle) (checked 2026-10-08) · USDC on Arbitrum One: native vs bridged (Arbitrum docs) (checked 2026-10-07)

Ways to get native USDC on Arbitrum One

You already hold native USDC on Arbitrum One

  1. Check the token contract in your wallet is 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 (native USDC), not USDC.e.
  2. Keep a little ETH on Arbitrum One for gas.
  3. Quote, confirm, create the order, then send the exact deposit in one transfer.

Withdraw USDC from an exchange to your own wallet on Arbitrum One

  1. In the exchange's withdrawal screen choose USDC and the Arbitrum One network. If it offers both USDC and USDC.e, pick USDC.
  2. Withdraw to your own wallet, not to the Swapper deposit address.
  3. When it arrives, check the token contract is 0xaf88d065e77c8cC2239327C5EDb3A432268e5831.
  4. Also get a small amount of ETH on Arbitrum One for gas (some exchanges can withdraw ETH directly to Arbitrum One; check with yours).

Verified example (informational, no endorsement):

Move native USDC from another chain with Circle's Cross-Chain Transfer Protocol (CCTP)

  1. Use a CCTP-based interface: it burns USDC on the source chain and mints native USDC on Arbitrum One (CCTP domain 3).
  2. You need gas on the source chain and, afterwards, ETH on Arbitrum One.
  3. Other bridges may deliver bridged USDC instead; check that what arrives is native USDC.

Verified example (informational, no endorsement):

Reference: Circle CCTP documentation (checked 2026-10-07) · CCTP supported chains and domains (Arbitrum One: domain 3) (checked 2026-10-07)

Swap another Arbitrum One token (e.g. USDC.e or ETH) to native USDC on a DEX

  1. Use a DEX or aggregator you trust on Arbitrum One to swap into native USDC.
  2. Check the output token contract is 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 and the slippage before confirming.
  3. Leave some ETH for gas: the swap and the later deposit transfer both need it.

Third-party services are listed for information only, without endorsement or affiliation. Check fees, availability in your region and terms with the provider.

Native USDC or USDC.e?

Native USDCBridged USDC.e
Contract0xaf88d065e77c8cC2239327C5EDb3A432268e58310xff970a61a04b1ca14834a43f5de4533ebddb5cc8
What it isIssued by Circle natively on Arbitrum One (since 2023)USDC from Ethereum, bridged through Arbitrum's lock-and-mint bridge
Swapper depositYesNo: swap it to native USDC first

Sources: USDC contract addresses (Circle) (checked 2026-10-07) · USDC on Arbitrum One: native vs bridged (Arbitrum docs) (checked 2026-10-07).

For agents

This page renders the shared funding guide, version 2026-10-08, including the order of steps (sequence). Agents get the same data from the MCP tool get_funding_options, the resource swapper://funding and the REST endpoint below. Every USDC to XMR quote repeats the requirements before an order exists, so an agent learns about gas first: in data.prerequisites over REST, and in prerequisites at the top level of the MCP get_quote result.

curl -sS "https://xmrtousdc.xyz/api/v1/agent/funding?direction=u2x"

Swapping XMR to USDC instead?

You send XMR from a Monero wallet you control and receive native USDC at an EVM address you control on Arbitrum One (0x + 40 hex characters).

Step by step: Swap XMR to USDC.

Questions

Which USDC does Swapper accept?

Only native USDC on Arbitrum One, contract 0xaf88d065e77c8cC2239327C5EDb3A432268e5831. Bridged USDC.e (0xff970a61a04b1ca14834a43f5de4533ebddb5cc8) and USDC on other networks are different tokens: swap or bridge them to native USDC on Arbitrum One first.

Do I need ETH to send USDC?

Yes. The wallet that sends the USDC deposit pays gas in ETH on Arbitrum One, so keep a small amount of ETH there. The USDC deposit itself must be the exact amount shown.

My USDC is on Ethereum mainnet. Can I send it to the deposit address?

No. A Swapper order only takes native USDC on Arbitrum One and does not detect a transfer on another network; recovery is not guaranteed. Move the USDC to Arbitrum One first (for example with Circle's CCTP), keep a little ETH on Arbitrum One for gas, then quote again.

Can I withdraw from an exchange straight to the Swapper deposit address?

Avoid it. Exchange withdrawals can arrive split, late, short by a withdrawal fee or from shared addresses. Withdraw to your own wallet on Arbitrum One, then send the exact deposit from there.

Swapper never holds keys, signs transactions or moves funds. The user (or an agent the user explicitly authorized) sends the deposit.

Ready? Buy XMR with USDC, or let an agent do it over MCP.

Open the swap app →