On this page
- CCTP's Standard Transfer is free and Fast Transfer costs 1 basis point from Ethereum and 1.3 from Base, per Circle's fee page on 15 October 2026; you also pay network fees on both chains.
- What arrives must be the native USDC mint, EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v. Fianto accepts no bridged copy.
- Before paying with Fianto the wallet also needs a little SOL; the checkout tells you the exact amount.
Which way should you move USDC to Solana?
Use an exchange withdrawal if the USDC already sits on an exchange, and CCTP if it sits in your own wallet on another chain. A bridge is any service that moves value between blockchains; the question that matters is whether it gives you native USDC, issued by Circle on Solana, or a wrapped token, a copy someone else issues against USDC locked elsewhere.
| Where your USDC is now | Route | What arrives on Solana | What you pay |
|---|---|---|---|
| On an exchange account | Withdraw to your Solana address, network "Solana" | Native USDC | The exchange's withdrawal fee, as it lists it |
| In your wallet on Ethereum, Base, Arbitrum or another CCTP chain | CCTP, from Circle or an app built on it | Native USDC, minted on Solana | Network fees on both chains, plus 0 (Standard) or a small fee (Fast) |
| In your wallet, through a bridge that wraps | Lock on one chain, receive a wrapped token | A different token with its own mint | The bridge's fees, and a token many checkouts refuse |
Circle lists Solana as CCTP domain 5 on its supported chains page, next to Ethereum (0), Arbitrum (3), Base (6), Polygon PoS (7) and more than twenty others. Which network to take payments on in the first place is a separate question, answered in USDC on Solana vs Ethereum, Base or Polygon.
How does CCTP move USDC to Solana?
CCTP destroys your USDC on the chain it leaves and creates the same amount on Solana, so nothing is locked in a pool and nothing wrapped is issued. Circle's CCTP docs open with: "Cross-Chain Transfer Protocol (CCTP) is a permissionless onchain utility for crosschain digital asset transfers." The steps, whether you run them yourself or an app runs them for you:
- Burn: a transaction on the source chain burns the USDC and names your Solana USDC token account as the recipient. You pay that chain's network fee in its own coin, ETH on Ethereum or Base.
- Attest: Circle watches for the burn to reach the number of block confirmations its table sets, then signs an attestation, a signed message that says the burn happened.
- Mint: a Solana transaction presents the attestation, and native USDC is minted into your token account. Someone pays that transaction's fee in SOL: you, the app you use, or Circle's Forwarding Service for a fee.
Circle's Forwarding Service broadcasts the mint for you and charges a per-transfer service fee on top of the CCTP fee. For a Solana destination it can also create the USDC account if the recipient has none, but only when the transfer asks for it; otherwise the transfer fails.
Standard or Fast Transfer
Circle's fee page says: "CCTP charges fees on Fast Transfers only. Standard Transfers are free." The fee is taken from the amount when it is minted. Times come from Circle's finality table and depend on the chain the USDC leaves; they measure the wait until Circle's attestation is available, read on 15 October 2026:
| Leaving from | Standard: fee, average attestation time | Fast: fee, average attestation time |
|---|---|---|
| Ethereum | Free, about 15 to 19 minutes | 1 basis point, about 20 seconds |
| Base | Free, about 15 to 19 minutes | 1.3 basis points, about 8 seconds |
| Arbitrum | Free, about 15 to 19 minutes | 1.4 basis points, about 8 seconds |
A worked example: 500 USDC moved from Base by Fast Transfer costs 500 x 0.00013 = 0.065 USDC, so 499.935 USDC is minted on Solana. By Standard Transfer all 500 arrive, after an attestation wait of about 15 to 19 minutes. In both cases you also pay the gas on Base and, unless someone pays it for you, a Solana fee for the mint. Circle notes that "Fees are subject to change at any time", so check the page on the day.
How do you withdraw USDC from an exchange to Solana?
Withdraw USDC to your Solana wallet address and pick Solana as the network; no bridge is involved, and an exchange withdrawal on the Solana network normally sends native USDC, which the mint check below confirms. The network choice is the step people get wrong.
- Copy your wallet address from your Solana wallet (Phantom, Solflare or Backpack, for example). It is the address you pay from, not a token account address.
- In the exchange, choose USDC, then the Solana network. Any other network is not a Solana transfer, and your Solana wallet will never see it.
- Send a small amount first. When it lands, open the token in your wallet or an explorer and check the mint address before you send the rest.
The step that saves you is the mint check. Circle publishes the Solana address on its USDC contract addresses page; how to read it on an explorer, and how to tell a wrapped copy, is in how to check real USDC on Solana.
What if the bridge gave you wrapped USDC?
Wrapped USDC on Solana is a different token from USDC, with its own mint, and a checkout that accepts only native USDC will treat your wallet as holding none. Your wallet may still show it under a USDC-like name. The fix is to swap it for native USDC, or move it back and use CCTP.
What does your wallet need before it pays with Fianto?
Once the native USDC has landed, a wallet needs three things to pay at a Fianto checkout: enough native USDC, a USDC account that is not frozen, and enough SOL for the network fee and the wallet's own minimum balance. SOL is Solana's own coin; every Solana transaction is paid in it, even one that moves USDC.
| Item | One-off payment | Subscription |
|---|---|---|
| USDC | The price | The price, plus a flat 0.01 USDC network fee with each charge today, on plans created since 6 October 2026 |
| Fianto fee | None during the beta; after it, about 0.1 to 0.5% on top, paid by the customer | The same |
| Solana network fee | Under $0.01 | Under $0.01 |
| The wallet's own minimum SOL balance | 650,240 lamports, about 0.00065 SOL, as of 15 October 2026 | The same |
| Account rent | None | About 0.00144 SOL for the subscription account, returned when you reclaim it after the subscription ends; about 0.00119 SOL once, on a wallet's first subscription, not returned (both as of 15 October 2026) |
A lamport is the smallest unit of SOL: one billionth of it. Solana is cutting rent in phases, so read the figures above as a snapshot; the checkout reads the live amounts and tells you exactly how much SOL to add before you sign. Why a wallet needs SOL at all to send USDC is explained in why you need SOL to send USDC.
The USDC account matters too. The first transfer that delivers native USDC to your wallet creates that account, and whoever creates it, usually the sender, pays its rent: 1,488,440 lamports, about 0.00149 SOL, on 15 October 2026. After that it stays, and its rent comes back only if the empty account is closed, as closing empty token accounts explains. The merchant, for its part, pays nothing and never pays a network fee. What the customer signs and what the merchant receives is laid out on USDC subscriptions and in the payer docs on what it costs.
Customers pay from their own Solana wallet, in native USDC, straight to yours.
Accept USDC on SolanaWhat should a merchant tell customers who hold USDC elsewhere?
Tell them before they reach the checkout that you take USDC on Solana only, and link them here. A customer who arrives with USDC on Base meets a Solana wallet prompt and a balance of zero, and has to leave the checkout to move it first.
If many of your customers hold USDC on Base or Ethereum and will not move it, a Solana-only checkout is the wrong tool for them, and a provider that takes payment on their network fits better; Request Network vs Fianto compares one such provider. Fianto takes USDC on Solana only; the trade-offs between networks for a business are in stablecoin payments for business.