Skip to main content

How to Accept USDC Payments on Base, Solana and Ethereum

· 7 min read
OrcaRail
Crypto payment rails for web2 apps

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 addressUse a USDC payment gateway
SetupCopy your addressCreate an account and an API key, or install a plugin
Matching payments to ordersBy hand, by amount and timeAutomatic: one payment per order
Wrong network or short paymentYou find out laterThe pay page shows the network and the exact amount
Order status in your appNoneA webhook when the payment is confirmed
CostNetwork fees onlyNetwork 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​

BaseSolanaEthereum
What it isEthereum layer 2 (EVM)Its own blockchainThe original EVM chain
Network fees for the payerLowLowThe highest of the three
Payer's walletAny EVM walletA Solana walletAny EVM wallet
Your receiving addressYour EVM address (0x…)A Solana addressThe same EVM address as on Base
Auto-charge subscriptions on OrcaRailYesYesYes

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:

NetworkUSDC contract address
Ethereum0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Base0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
SolanaEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
Arbitrum0xaf88d065e77c8cC2239327C5EDb3A432268e5831
Optimism (OP Mainnet)0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85
Polygon PoS0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359
Avalanche C-Chain0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E

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​

  1. 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.

  2. 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=true in the sandbox (for example Base Sepolia) and testnet=false for mainnets. Check contractAddress against the table above.

  3. 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.

  4. Create and confirm a payment intent with the amount in your currency (for example "25.00" and "usd"), the USDC tokenId and networkId, and a return_url. Then send the customer to the hosted pay URL. Node.js and PHP code is in the stablecoin payment API guide.

  5. 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.

  6. Handle the webhook. Mark the order paid on payment_intent.completed.

  7. 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.


Start in the sandbox · Networks and tokens · Pricing