Wallets and neobanks
Receive from anyone, anywhere
A friend sends from Polygon while your user lives on Ethereum, and the money arrives where it should. There is no network dropdown to get wrong and no warning modal to explain.
Your deposit address






Forwarding Address
One deposit address per user. Deposits work from every supported chain and arrive on the chain you choose. No manual bridging. Self-custodial end to end.
Your deposit address
The same address on every chain. Scan it, paste it, or point an exchange withdrawal at it.
0x7c3A9f41E0c2b8D5a6F30e1C9d4B7A2e8f16F21e





Ethereum
Set up once. Nothing for your user to learn.






Every user gets a deterministic address, derived from their wallet, your recovery wallet, and the destination chain.
Relayers start watching the source chains you choose.
Your user sees one address. It works from exchanges, bridges, and other wallets.
Deposits route automatically and arrive on the destination chain, typically in 10 to 20 seconds.
A USDT withdrawal leaves an exchange on Optimism and lands in a wallet on Arbitrum.
The wrong network is still the easiest way for a new user to lose a first deposit.
Wallets and neobanks
A friend sends from Polygon while your user lives on Ethereum, and the money arrives where it should. There is no network dropdown to get wrong and no warning modal to explain.
Your deposit address






Onramps and exchanges
Exchange withdrawal forms ask the user to pick a network, and some of them pick wrong. Point the withdrawal at a forwarding address instead. Whichever network they choose, the funds land on yours.
Select withdrawal network
Ethereum ✓ supported
Arbitrum One ✓ supported
OP Mainnet ✓ supported
Polygon ✓ supported Payment apps
The sender pays from whichever chain holds their stablecoins. The recipient sees a single balance on the chain your app settles on, and neither side has to bridge anything first.
Polygon
Arbitrum
BNB Chain ✓ settled on Ethereum Every forwarding address is a deterministic contract on the source chain. Candide relayers watch it and route what arrives, and nothing in the contract lets them take ownership.
If a deposit gets stuck, the recipient withdraws it directly. For users who funded from an exchange they can't transact from, your recovery wallet steps in after a timelock.
None of this depends on trusting Candide. Each line of the table can be checked.
| The recipient | anytime |
| Your recovery wallet | after a timelock |
| Candide | never |
Check it yourself
Install the Candide skill and Claude or Codex learns the whole flow: routes, minimums, activation, recovery.
/plugin marketplace add candidelabs/skills
/plugin install candide@candide npx -y github:candidelabs/skills Any other agent: point it at the raw skill file.
Plain JSON-RPC with a team key from the Dashboard. No SDK, nothing to deploy.
{
"jsonrpc": "2.0",
"id": 1,
"method": "forwarding_getAddress",
"params": [{
"recipient": "0xAbCd…Ef01",
"custodialWithdrawer": "0xYour…Safe",
"destinationChainId": 1
}]
} {
"jsonrpc": "2.0",
"id": 2,
"method": "account_activateForwardingAddress",
"params": [{
"recipient": "0xAbCd…Ef01",
"custodialWithdrawer": "0xYour…Safe",
"destinationChainId": 1,
"sourceChainIds": [8453, 42161, 10, 137]
}]
} forwarding_getRoutes Supported chains, tokens, and fees. The source of truth.
forwarding_getMinimumAmount Per-bridge deposit minimums for a route and token.
forwarding_estimateOutput What the recipient receives after fees.
forwarding_getForwardsByRecipient Every forward for a recipient, with delivery status per bridge.
Routes, tokens, and minimums change. Read them from forwarding_getRoutes instead of hardcoding.
Create a team key in the Dashboard, pick the source networks, and the first address is two calls away. If your deposit flow is unusual, talk to us first.