USDC is the most widely used stablecoin for payments. It is available on over a dozen blockchains, backed 1:1 by US dollars, and accepted by a growing number of merchants worldwide. If you want to add USDC payments to your website, this guide walks you through the entire process from start to finish.
Why accept USDC specifically?
There are thousands of cryptocurrencies, but USDC stands out for merchant payments for several reasons:
- Price stability: 1 USDC = $1, always. No volatility risk. A $100 payment is worth $100 when you receive it and $100 when you withdraw it.
- Regulated issuer: Circle is a licensed financial institution. USDC reserves are held in cash and US Treasuries, attested monthly by Deloitte.
- Multi-chain availability: USDC is natively issued on Ethereum, Polygon, Base, Arbitrum, Avalanche, Optimism, Solana, and more.
- High liquidity: USDC has over $50 billion in circulation, making it easy for customers to acquire and for merchants to convert.
- No chargebacks: blockchain transactions are final. No bank reversals, no friendly fraud.
- Instant settlement: receive funds in seconds, not days.
What you need before starting
- A website where you want to accept payments (any platform: custom HTML, WordPress, Shopify, React, etc.)
- An email address for your merchant account
- About 5 minutes of time
You do not need: blockchain knowledge, a crypto wallet, server infrastructure, or any coding experience beyond basic HTML.
Step 1: Choose your receiving chain
When you create a Fivo merchant account, you choose which blockchain your wallet will be on. This is where your USDC arrives. Fivo supports 9 EVM chains, but the choice matters because gas fees differ:
Chain Type Gas per tx Best for
──────────────────────────────────────────────────────────────
Polygon L2 < $0.01 Lowest fees overall
Base L2 < $0.01 Low fees + Coinbase ecosystem
Arbitrum L2 $0.01 - $0.05 Low fees + DeFi liquidity
Optimism L2 $0.01 - $0.05 Low fees + OP ecosystem
Avalanche L1 $0.02 - $0.10 Fast finality
Linea L2 < $0.01 Low fees + zkEVM
Unichain L2 < $0.01 Uniswap ecosystem
Sonic L1 $0.01 - $0.05 High throughput
Ethereum L1 $1 - $10+ Highest security + liquidityDon't worry about limiting your customers to one chain. Fivo's cross-chain bridging means a customer on Arbitrum can pay a merchant on Polygon automatically. The customer's chain does not need to match yours.
Step 2: Create your Fivo account
Go to fivo.finance/register and create your merchant account. The process takes under 2 minutes:
- Enter your email and create a password
- Choose your preferred blockchain (Polygon recommended)
- Select accepted currencies (USDC, EURC, or both)
- A secure Circle Programmable Wallet is created automatically for you
No seed phrases to save, no private keys to manage. Circle's wallet infrastructure uses MPC (Multi-Party Computation) for institutional-grade key security.
Step 3: Get your merchant ID
After registration, find your merchant ID in the Fivo dashboard. It looks like fivo_live_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. This is the identifier you use in the payment widget.
Step 4: Add the payment widget to your site
The Fivo payment widget is a single script tag that adds a "Pay with USDC" button to any web page. You have two options:
Option A: Fixed amount (e.g., product checkout)
Use this when the price is known in advance, like a product page or subscription checkout:
<script async src="https://checkout.fivo.finance/v1/fivo.js"></script>
<fivo-button
merchant-id="fivo_live_your-merchant-id"
amount="49.99"
currency="USDC">
</fivo-button>When the customer clicks the button, a payment modal opens showing the exact amount. The backend validates that the on-chain payment matches the specified amount.
Option B: Variable amount (e.g., donations, tips)
Use this when the customer enters their own amount:
<script async src="https://checkout.fivo.finance/v1/fivo.js"></script>
<fivo-button
merchant-id="fivo_live_your-merchant-id"
currency="USDC">
</fivo-button>Without the amount attribute, the modal displays an input field where the customer types their desired payment amount.
Step 5: Test with free testnet USDC
Before accepting real payments, test your integration using the testnet. Fivo provides a testnet merchant ID (starting with fivo_test_). Get free testnet USDC from the Circle Faucet and run a full payment flow.
- Go to faucet.circle.com
- Select USDC and your preferred testnet chain
- Enter your wallet address and receive free testnet USDC
- Open your website with the Fivo widget and complete a test payment
- Verify the payment appears in your Fivo dashboard
Step 6: Set up webhooks for automation
If you want to automatically fulfill orders when a payment completes (activate a subscription, send a digital product, update an order status), configure webhooks in the Fivo dashboard.
When a payment is confirmed on-chain, Fivo sends a signed POST request to your webhook URL:
app.post('/fivo-webhook', (req, res) => {
const { event, payment } = req.body;
if (event === 'payment.completed') {
// Payment confirmed on-chain
const { amount, currency, txHash } = payment;
console.log(`Received ${amount} ${currency}`);
// Fulfill the order...
}
res.status(200).send('ok');
});Webhooks are signed with HMAC-SHA256 so you can verify they come from Fivo. See the webhook documentation for the full payload format and verification guide.
Step 7: Go live
Once testing is complete:
- Replace the testnet merchant ID with your live production ID
- Verify the widget loads and shows the correct amount
- Make a small real payment to confirm end-to-end flow
- Check your Fivo dashboard for the payment confirmation
That's it. Your website now accepts USDC payments.
Advanced: using the REST API
For developers who need more control, Fivo provides a REST API for creating checkout sessions programmatically. This is useful for server-side integrations, custom checkout flows, or mobile apps.
curl -X POST https://api.fivo.finance/checkout \
-H "Authorization: Bearer fivo_live_your-api-key" \
-H "Content-Type: application/json" \
-d '{
"amount": "49.99",
"currency": "USDC",
"success_url": "https://yoursite.com/success",
"cancel_url": "https://yoursite.com/cancel"
}'The API returns a checkout URL that you can redirect your customer to. See the API reference for complete documentation.
Frequently asked questions
Do my customers need a crypto wallet?
Yes. Customers need an EVM wallet (MetaMask, Coinbase Wallet, Rainbow, or any WalletConnect-compatible wallet) with USDC to complete a payment. They connect their wallet directly through the Fivo widget.
What if the customer is on a different chain than my wallet?
Fivo handles this automatically. Cross-chain payments are bridged via Circle CCTP. The customer pays from their chain, and the USDC arrives on your chain. No action needed from either party.
How do I convert USDC to dollars in my bank?
Withdraw USDC from your Fivo wallet to any exchange (Coinbase, Kraken, Binance) or off-ramp service (MoonPay, Ramp), and convert to fiat. Since 1 USDC = $1, the conversion is straightforward with no price risk.
Is there a minimum or maximum payment amount?
Fivo does not enforce minimum or maximum payment amounts. Customers can pay any amount, from cents to millions.
The bottom line
Adding USDC payments to your website takes 5 minutes and two lines of HTML. No blockchain expertise, no server setup, no wallet management. Your customers connect their wallet, pay in USDC from any of 9 EVM chains, and you receive funds instantly.
Ready to start? Create your free Fivo account and accept your first USDC payment today.