Cheapest way to bridge USDC from Ethereum to Base
Which routes move native USDC from Ethereum to Base for the least: Circle CCTP v2, Across, Relay and Stargate compared, what an aggregator's fee adds, and a free API that proves the saving for your exact transfer.
Short answer
For native USDC (0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 on Ethereum, 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 on Base), the cheapest routes are usually the direct ones:
- Circle CCTP v2, standard transfer: no protocol fee; you burn on Ethereum and mint on the destination yourself (two transactions, roughly 15 to 20 minutes for Ethereum finality).
- Circle CCTP v2, fast transfer: a small protocol fee (about 1 basis point) for delivery in seconds.
- Across and Relay: a relayer fee of a few basis points plus gas, delivered in seconds.
- Stargate v2: a pool-based route whose fee depends on pool balance; sometimes cheap, sometimes not.
Which one wins changes block by block: gas on Ethereum, relayer fees and pool balances move. A ranking in a blog post is a snapshot, not an answer for your transfer.
What an aggregator adds
Aggregators are convenient, but their quote can include their own fee on top of the bridge's, and that fee depends on the integrator (the app or key the quote is fetched through). One public aggregator quote for 5 000 USDC from Ethereum to Arbitrum, fetched without an integrator key on 9 November 2026, carried a 0.25 % fixed fee on every route (about 12.50 USDC), while the bridges' own fees were about 0.50 USDC: going direct delivered about 12 USDC more. Recta has read the same 0.25 % in that aggregator's keyless quotes on its other corridors; check the quote for Ethereum → Base yourself. Check the fee lines of any quote before you sign it.
Why comparing yourself is not enough
Quotes fetched a few seconds apart are not comparable, and a quote is a promise, not a delivered amount. Recta reads every route it knows at one anchor block, keeps only the saving it can prove as a lower bound, and after you execute it verifies the delivered amount on chain. When your own route is already the best, it says so and charges nothing.
Reproduce the comparison yourself
These public endpoints need no key. Fetch them within the same few seconds, for the same amount (5 000 USDC = 5000000000 in 6-decimal units), and compare what each delivers after every fee:
- Across:
GET https://app.across.to/api/suggested-fees?inputToken=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48&outputToken=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&originChainId=1&destinationChainId=8453&amount=5000000000 - Circle CCTP v2 fees (standard and fast):
GET https://iris-api.circle.com/v2/burn/USDC/fees/0/6 - LI.FI, an aggregator (look at its fee lines):
GET https://li.quest/v1/quote?fromChain=1&toChain=8453&fromToken=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48&toToken=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&fromAmount=5000000000&fromAddress=<YOUR_ADDRESS>
Add the gas of each route's own transactions at the current gas price. Then ask Recta the same question, below: it does the same reads at one block and keeps only the saving it can prove.
Check your own transfer, free, without a wallet
Recta is an API for AI agents (and the people who build them) that compares the routes for a cross-chain stablecoin transfer at the same chain state and returns the cheapest one it can prove, measured against the route you would have used anyway. The evaluation is free. If you then execute the cheaper route, Recta charges exactly 5 % of the saving it verifies on chain; no saving, no charge.
- 1. Is the corridor covered, and which routes are compared:
GET https://api.recta.build/v1/golden-corridor/fit?source_network=ethereum&source_asset=USDC&destination_network=base&destination_asset=USDC - 2. The request body for your amount and the route you use today:
GET https://api.recta.build/v1/golden-corridor/request-template?source_network=ethereum&source_asset=USDC&destination_network=base&destination_asset=USDC&amount=5000&baseline_provider=lifi - 3. Send that body, with your addresses and gas ceilings filled in, to
POST https://api.recta.build/v1/golden-corridor/trial-evaluation. No signature and no wallet: it answers whether a saving exists, its lower bound and what 5 % of it would be (3 trials a day per IP address). - 4. To get the route itself, sign the same body and send it to the signed evaluation (see llms.txt), or use the npm packages
@recta/clientor@recta/mcp, or the MCP server.
How often Recta has found a saving on this corridor, per route you could declare: saving odds.