Bridge
How USDC enters and leaves Vordium through one vault on Arbitrum One, how a payout is signed, and how anyone can check the reserves.
USDC on Vordium is Bridged USDC: backed 1:1 by USDC held in the Vordium vault. There is one vault, on Arbitrum One, and every account's USDC balance on Vordium is backed by what it holds.
The contracts
| Fact | Mainnet |
|---|---|
| Vault chain | Arbitrum One |
| Vault chain id | 42161 |
| Vault | 0x04D6f8b77A340b33d4bf04bE20dC96ec14d4A299 |
| Deposit handler | 0x0ae6d8d70cC4B31B6D4A97e9058040f4F7E74F19 |
| USDC token | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 |
The testnet has its own vault, on Arbitrum Sepolia, holding a test token: see Testnet.
The vault's code is verified on the chain's explorer. GET /bridge/v4/vaults serves the vault, its handler and the
hash of their code, so a client can check it is talking to the right contracts.
Deposits
Whether deposits are open right now: —. The vault takes a deposit only while the network says
deposits are open; a client must check depositsOpen for the chain the deposit is made on and treat anything other than
true as closed.
- From Arbitrum. Approve the vault to take the USDC, then deposit. The account credited on Vordium is the address
that deposited. The validators see the vault's
Depositedevent and credit the account once the deposit is final on Arbitrum. - From Arc, Circle's chain, through Circle's cross-chain transfer (CCTP). The USDC is burned on Arc and minted into the deposit handler, which then deposits it into the vault for your account; no ETH is needed. Until the handler has processed it, the USDC sits in the handler — never lost, not yet credited.
Every deposit has a status at GET /bridge/v4/deposits/{address}: pending, credited, waiting (to be finished
later with the same bytes), or not accepted with a reason. A deposit that is not accepted and is owed back can be
claimed on Arbitrum by the address it is owed to.
Withdrawals
A withdrawal is signed by the account's own key — a trading key or an agent key can never withdraw. The account signs a
WithdrawIntentV4 naming the amount, the recipient, the route and a deadline, and sends it to
POST /bridge/v4/withdraw. Read the next nonce from GET /bridge/v4/withdraw-nonce/{account}.
The validators then sign the vault's payout message, and the vault pays only what the validators have signed — each payout at most once. Routes: paid on Arbitrum directly, or sent on through Circle's CCTP to another chain. For a CCTP route, show the reader Circle's fee before they sign.
The withdrawal fee is —; the amount must be larger than the fee, and the vault pays the
amount less the fee. A payout reads pending until it is paid, then paid. Once ready, its exact vault call is
served at GET /bridge/v4/withdrawal/{account}/{nonce}/call, so anyone — the account itself included — can send it.
Proof of reserves
GET /reserves reads the vault on its own chain and compares it with what Vordium owes: the USDC held, credited, paid,
refunded, pending withdrawals, and whether the vault is solvent. It names the block of the vault's chain it read.
Every credited deposit and every paid withdrawal is recorded on the chain, so anyone can recompute the figures.
Network facts last checked against the network 2026-10-22 13:00:37 UTC · mainnet spec v28 · testnet spec v8