Receive from anyone, anywhere
A friend sends from Polygon. Your user lives on Base. One address, and it just arrives. No network dropdown, no warning modals.
Your deposit 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.
Live in production with select partners. Read the docs
Base recipient withdraws anytime 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.
Wrong network deposits aren't support tickets. They're lost users.
A friend sends from Polygon. Your user lives on Base. One address, and it just arrives. No network dropdown, no warning modals.
Your deposit address






Users pick the wrong withdrawal network constantly. Point withdrawals at a forwarding address and every network is a right answer.
Select withdrawal network
Base ✓ supported
Arbitrum One ✓ supported
OP Mainnet ✓ supported
Polygon ✓ supported Senders pay from whatever chain they hold funds on. Recipients see one balance, on one chain. Nobody hears the word bridge.
Polygon
Arbitrum
BNB Chain ✓ settled on Base Every forwarding address is a deterministic contract on the source chain. Candide relayers watch and route deposits. They can never 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.
Recovery works without us too. The recovery app is public and talks straight to the contracts.
| The recipient | anytime |
| Your recovery wallet | after a timelock |
| Candide | never |
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. No SDK required, no contracts to deploy.
{
"jsonrpc": "2.0",
"id": 1,
"method": "forwarding_getAddress",
"params": [{
"recipient": "0xAbCd…Ef01",
"custodialWithdrawer": "0xYour…Safe",
"destinationChainId": 8453
}]
} {
"jsonrpc": "2.0",
"id": 2,
"method": "account_activateForwardingAddress",
"params": [{
"recipient": "0xAbCd…Ef01",
"custodialWithdrawer": "0xYour…Safe",
"destinationChainId": 8453,
"sourceChainIds": [1, 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_getStatus Delivery status of a deposit, per bridge.
Routes, tokens, and minimums change. Read them from forwarding_getRoutes instead of hardcoding.
Live in production with select partners. We'll get you set up.