How to Accept USDC Payments on Base, Solana and Ethereum
To accept USDC payments, you need more than a wallet address. You need the right network, a way to match each payment to an order, and a signal your backend can trust. USDC is a dollar stablecoin issued by Circle, so customers can pay from almost anywhere and you don't have to price your products in a volatile coin.
The hard part is the network. USDC runs on dozens of blockchains, and USDC sent on one network can't be received on another. This guide compares Base, Solana and Ethereum, lists the official USDC contract addresses, explains what USDC payments cost, and shows how to accept USDC on any of them with OrcaRail.
Two ways to accept USDC
| Share a wallet address | Use a USDC payment gateway | |
|---|---|---|
| Setup | Copy your address | Create an account and an API key, or install a plugin |
| Matching payments to orders | By hand, by amount and time | Automatic: one payment per order |
| Wrong network or short payment | You find out later | The pay page shows the network and the exact amount |
| Order status in your app | None | A webhook when the payment is confirmed |
| Cost | Network fees only | Network fees plus the gateway fee |
A bare address works for a one-off payment from someone you know. For a shop, a SaaS plan or invoices, a gateway saves you from matching transfers by hand and from payments sent on the wrong network.
Which network to accept USDC on: Base, Solana or Ethereum
| Base | Solana | Ethereum | |
|---|---|---|---|
| What it is | Ethereum layer 2 (EVM) | Its own blockchain | The original EVM chain |
| Network fees for the payer | Low | Low | The highest of the three |
| Payer's wallet | Any EVM wallet | A Solana wallet | Any EVM wallet |
| Your receiving address | Your EVM address (0x…) | A Solana address | The same EVM address as on Base |
| Auto-charge subscriptions on OrcaRail | Yes | Yes | Yes |
A few practical rules:
- Start with Base or Solana if you want low fees for your customers.
- Keep Ethereum for customers who hold their USDC there, and for larger payments where the network fee matters less.
- Check your wallet type. A regular EVM wallet (one private key) has the same 0x address on every EVM network. A smart-contract wallet, such as a multisig, must exist on each network you receive on.
- Let customers choose. With OrcaRail you pick one network to receive on, and customers can still pay from another one (see below).
When we checked the OrcaRail live API on 12 November 2026, USDC was listed on 43 of the 70 active mainnet networks, and a bridged USDC.e on 7 more. The full, current list is on Networks and tokens.
USDC contract addresses on Base, Solana, Ethereum and more
The same symbol is a different token on each network, so always check the contract address. These are the native USDC addresses that Circle publishes (Circle's list, checked on 12 November 2026). The OrcaRail API lists the same addresses:
| Network | USDC contract address |
|---|---|
| Ethereum | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
| Base | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Solana | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| Arbitrum | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 |
| Optimism (OP Mainnet) | 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85 |
| Polygon PoS | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 |
| Avalanche C-Chain | 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E |
Watch out for look-alikes. On some networks you will also see USDC.e or "Bridged USDC": USDC moved from another chain by a bridge. It has its own contract address and is a different token from native USDC. Circle's list also has no entry for BNB Chain, so USDC on BNB Chain is not native USDC from Circle. The OrcaRail API returns each token's contractAddress, so check it before you save a tokenId.
How OrcaRail handles USDC payments
You choose where you receive, for example USDC on Base. The customer chooses how to pay on the hosted pay page:
- USDC on the same network (USDC on Base): a direct transfer, with no conversion.
- USDC on another network (for example Solana or Ethereum) or another token (USDT, ETH, SOL and more): Relay bridges or swaps it. The quote adds a bridge fee, paid by the customer, so you still receive the full amount.
The customer sees the amount, the network and any fee before paying. When the payment is confirmed, your backend gets a webhook, and the payment is forwarded to your withdrawal address.
How to accept USDC with OrcaRail
-
Create a sandbox. Sign up at app.orcarail.com and create a free sandbox organization with an
ak_test_API key. Sandboxes run on testnets only, so no real money moves. -
Find the USDC token and network IDs. List the networks, then the tokens on the one you want to receive on:
curl -s "https://api.orcarail.com/api/v1/payments/networks?testnet=true" \| jq -r '.[] | select(.isActive) | "\(.id) \(.name)"'curl -s "https://api.orcarail.com/api/v1/payments/networks/<networkId>/tokens" \| jq '.[] | select(.symbol == "USDC") | {id, contractAddress}'Use
testnet=truein the sandbox (for example Base Sepolia) andtestnet=falsefor mainnets. CheckcontractAddressagainst the table above. -
Set your withdrawal addresses. One EVM address covers Base, Ethereum and the other EVM networks. Add a Solana address if you receive on Solana. Set them in Withdrawal Settings, or per payment with
withdrawal_addresses. See Withdrawal strategy. -
Create and confirm a payment intent with the amount in your currency (for example
"25.00"and"usd"), the USDCtokenIdandnetworkId, and areturn_url. Then send the customer to the hosted pay URL. Node.js and PHP code is in the stablecoin payment API guide. -
Pay with test USDC. Get free test USDC on Base Sepolia, Ethereum Sepolia or Arbitrum Sepolia from the Circle faucet, or click Simulate payment in the sandbox.
-
Handle the webhook. Mark the order paid on
payment_intent.completed. -
Go live with a live organization and an
ak_live_key.
No code? The WooCommerce plugin adds USDC checkout to a WordPress store, and a crypto invoice with a payment link works for one-off bills.
Accept USDC subscriptions
USDC works for recurring billing too. With auto-charge on EVM networks and Solana, the customer approves once (an ERC-20 allowance or an SPL delegation), and OrcaRail pulls the price each billing period. See OrcaRail subscriptions and recurring crypto payments.
What USDC payments cost
- Network fee. Paid by the sender to the blockchain. It depends on the network and how busy it is. Base and Solana are usually cheap; Ethereum mainnet usually costs the most.
- Bridge fee. Only when the customer pays on another network or in another token. It comes from Relay, appears in the quote and is paid by the customer. See Fees.
- Gateway fee. OrcaRail charges 0.5% per completed transaction after the first 100 free transactions (pricing).
To compare providers, see our list of crypto payment gateways.
FAQ
Which network is best for accepting USDC?
For low fees, Base or Solana. Ethereum has the widest wallet support but the highest network fees. With OrcaRail you don't have to choose for your customers: you pick where you receive, and they can pay USDC from another supported network.
Can a customer pay in USDC on Solana if I receive USDC on Base?
Yes. Relay bridges the payment, and the quote adds a bridge fee that the customer pays. You receive the full amount in USDC on Base.
What is the difference between USDC and USDC.e?
Circle issues USDC natively on the networks in its list. USDC.e is bridged USDC: a version of USDC from another chain, created by a bridge. The two have different contract addresses and are different tokens, so check the address before you accept either.
Is USDC the same as USDT?
Both are dollar stablecoins, from different issuers: Circle issues USDC and Tether issues USDT. OrcaRail accepts both, and you can receive one when the customer pays with the other. See how to accept USDT payments.
How do I test USDC payments for free?
Use a sandbox organization. Get test USDC from the Circle faucet (see our testnet faucets guide), or click Simulate payment. Simulated payments are never withdrawable.
