Sending USDC on Polygon is unchanged: no fee, no minimum, usually credited within a minute. Everything on this page is about the other networks.
Supported networks
The Wallet page shows the current minimum, fee estimate and arrival time for each network.
If it and this page ever disagree, the Wallet page is right.
When gas costs more than those caps allow — mostly on Ethereum — nothing is charged above
them without your say-so: the deposit waits and the Wallet page asks you. See
When Ethereum gas is high.
How it works
1
You send USDC to your Safe address
On Ethereum, Base, Arbitrum or Optimism — from an exchange or any wallet. It is the
same address as on Polygon, and the same one the Wallet page shows.
2
We wait for the minimum
Below the minimum for that network, the USDC waits at your address. Send more and the
deposits are combined; once the total reaches the minimum, it all moves together, for
one fee.
3
Your Safe is created on that network, if needed
Your Safe’s address is fixed in advance, but the contract only exists on a network once
something needs it. On your first bridge from a network, Calibri creates it there —
owned by exactly the same owner as your Safe on Polygon, and nobody else.
4
The USDC is bridged
One transaction on that network pays the fee and hands the rest to Circle’s
Cross-Chain Transfer Protocol (CCTP), which burns it there with your Safe’s own
Polygon address as the only recipient.
5
Circle attests the burn
Circle waits for the burn to be final on Ethereum and signs an attestation. This is
most of the wait — it is Circle’s Standard transfer, which Circle does not charge
for today.
6
It arrives on Polygon
The attestation is submitted on Polygon and Circle mints the same amount of native
USDC directly into your Safe there.
7
It is credited as a normal deposit
The mint lands in your Safe like any other Polygon deposit, and is credited to your
balance the same way. From here on it is ordinary USDC in your Safe.
What the Wallet page shows
- A network picker above your deposit address — Polygon first, then the other networks. The address itself does not change when you switch; it is labelled Same address on every network. Only the notes under it change: the network’s minimum, its fee estimate with the cap, and roughly how long it takes.
- If you use your own wallet, the same address is under Deposit from another network, below the deposit form.
- From other networks — each USDC transfer on its way in, with four steps: Received on (network) → Bridging → Arriving on Polygon → Credited. A transfer below the minimum says how much more to send. Each one links to its transactions on the block explorers: your deposit, the bridge, and the arrival on Polygon.
- A transfer waiting on gas — when bridging it would cost more than the standard fee, it says Ethereum gas is high right now and shows the amount, the fee and what you would receive, with Bridge now and Wait for lower gas. One too small to cover the cost at current gas says so, and how much the cost is. See When Ethereum gas is high.
- Credited is shown only once the Polygon deposit has been accepted into your balance. Transfers stay under History afterwards.
If the Wallet page offers only Polygon, deposits from other networks are not available for your wallet. Send USDC on Polygon.
Fees, minimums and timing
The fee covers the network gas of moving your USDC — the bridge transaction, the delivery on Polygon, and, on your first bridge from a network, creating your Safe there. It is not a trading fee and it is not a percentage we set per deposit. The standard fee is capped by the contract itself:- At most 10 USDC, and
- At most 20% of the amount being bridged,
- One fee per bridge. Deposits combined while waiting for the minimum are bridged together, for one fee.
Those are the standard fee’s ceilings, not estimates, and they assume Circle still charges
nothing. The fee charged is the gas cost at the time, and the Wallet page shows the current
estimate before you send. A fee above them is charged only if you accept it for that
deposit — see When Ethereum gas is high.
Minimums are Calibri’s, not the contract’s: 20 USDC on Ethereum, where gas is
expensive, and 5 USDC on the L2s. Below it nothing is lost — the USDC waits at your address
until more arrives. You can also move it yourself at any time for no fee (see
Moving it yourself).
Timing. About 15–20 minutes from any of the four networks. That time is Circle’s
finality wait, not ours: a Standard transfer is attested only once the burn is final on
Ethereum — and Base, Arbitrum and Optimism settle to Ethereum, so they take about as long.
Below the minimum, the clock starts when the total reaches it.
When Ethereum gas is high
Sometimes moving a deposit costs more than the standard fee is allowed to cover. This is mostly Ethereum: at ordinary Ethereum gas prices it applies to most deposits there, especially small ones and your first from Ethereum, which also creates your Safe there. On Base, Arbitrum and Optimism it is rare. Calibri does not cover the difference, and does not charge above the cap without asking. The deposit waits at your address, and the Wallet page shows it with the amount, the fee it would cost now, and what you receive. You choose:- Bridge now — accept the fee shown. It is taken from that deposit, in USDC, and the rest is bridged to your Safe on Polygon as usual. If the fee is more than half the amount, the app asks you to confirm separately that you will receive only what is shown.
- Wait for lower gas — do nothing. We re-check every 10 minutes and bridge automatically, at the standard fee, as soon as it covers the cost.
Deposit on Polygon to avoid this fee. USDC sent on Polygon is credited directly, with no bridge, no fee and no minimum.
How your acceptance is checked
Above the standard cap, a fee is charged only after you accept it in the app. The acceptance is countersigned by a dedicated Calibri key and checked by the module on-chain; the fee charged is exactly the signed amount, tied to that deposit, and expires within an hour. Calibri could, if that key were misused, charge a fee up to the full amount of a deposit it countersigns — the same class of trust as the relayer key; you can always bridge yourself for free with your own ETH. In practice:- Tied to that deposit. A countersigned fee names your Safe and the balance you were quoted, and is spent once. If the Safe is bridged in the meantime by anyone — including you, for free — it can no longer be used, so it can never be reused on USDC you send after that deposit has moved.
- Not the relayer’s key. The key that countersigns is separate from the relayer that sends the bridge. The relayer alone can still take at most the standard capped fee.
- The destination does not change. Whatever the fee, the rest goes only to your own Safe on Polygon.
What not to send
Why this is still non-custodial
Moving money between networks without asking you to sign sounds like the one thing a non-custodial service should not be able to do. Here is exactly what makes it possible, and exactly what it is limited to.One module, one job
Every Safe is created with one module enabled — the CctpBridgeModule. A Safe module is a contract the Safe allows to act without owner signatures, so everything depends on what the module’s own code allows. That code is immutable, and it can do exactly one thing: move that network’s USDC through Circle to the same Safe address on Polygon.
There is no argument to point the funds somewhere else, no stored destination, and no
admin switch that changes it. The mint recipient is the address of the Safe the USDC came
out of.
It is there from the start
The module is switched on when the Safe is created, in the same transaction, by the Safe factory. There is never a moment when your Safe exists without it, and nobody can create your Safe differently first. Your Safe on Polygon has it too; there it does nothing, because there is no route from Polygon to itself.The fee is bounded in code
Three addresses are configurable — the relayer allowed to charge the fee, the treasury it is paid to, and the dedicated consent key that countersigns a fee you accepted above the cap — and only by the fee-configuration admin. Everything that decides where your money ends up is not configurable at all: the destination, the token, Circle’s contract and the fee caps are fixed in the module. Changing any of them would take a new module at a new address, and so a different Safe address.Anyone can move it — including you
Anyone may call the bridge with a zero fee. That is deliberate. If Calibri disappeared, you — or anyone — could still move USDC stranded on another network to your Safe on Polygon, and the worst a stranger could do is move your USDC to where you meant it to go. See Moving it yourself.Calibri never holds a key
Calibri creates your Safe on the other network through a permissionless factory:createProxyFor(owner) makes a Safe owned solely by owner, whoever pays for it. The
owner is your own — your wallet, or your passkey’s signer — exactly as on Polygon.
Calibri is never an owner, on any network, and holds no key that could sign for your Safe.
Who can do what
Circle is trusted here in the same way it is trusted with USDC itself: it issues the
token, and it runs the bridge that burns and mints it.
The caveats
- Signing keys and owner changes do not carry over. Your Safe on another network is created with the owner your Polygon Safe was created with. A signing key you add on Polygon cannot sign there, and if the original owner is later replaced on Polygon, it still controls the Safe on the other networks. The module still moves USDC there to Polygon either way.
- Someone can bridge before we do. Anyone can call the bridge with no fee ahead of Calibri’s relayer. You lose nothing — the USDC still goes only to your Safe on Polygon, and no fee is charged on what they move.
- Anyone can trigger the bridge. USDC sitting in your Safe on another network can be bridged by anyone, even if you wanted it to stay there. It can only ever go to your own Safe on Polygon. If you use your own wallet and object, you can switch the module off on that network — automatic bridging from it then stops.
- If Calibri’s relayer key were stolen, the most it could do is bridge a Safe’s whole USDC balance to that same Safe on Polygon, taking one capped fee — at most 10 USDC and 20% — per bridge. It could not redirect the USDC or the fee, and could not drain a Safe through repeated small calls. Charging more takes the separate consent key as well (see How your acceptance is checked).
Moving it yourself
You never need Calibri to move USDC from another network to your Safe on Polygon. Anyone with a little gas on that network can call the module with no fee. The steps are on Withdrawing without Calibri.Related
Funding your account
The deposit address, the network picker, and what to send.
The Safe
What your Safe is, and what can act on it.
Withdrawals to other networks
The other direction: from your Safe to an address on another network.
Fees
The trading fee, and the bridge fee on other networks.
Smart Contracts
The bridge contracts and their trust model.