No keys to look after
Creating an address doesn’t give you or your users a private key or recovery phrase to store. There’s nothing to create, back up, or lose on your side.One address, every network
Each address you create is the same on every network your plan includes. Create it once and it can receive on Base, and on Polygon, Arbitrum, Optimism, Ethereum, Avalanche, and Arc too, if your plan includes them. The Free plan is Base only.1
Switch on Base
In Dashboard → Wallets, activate Base. This creates your master wallet, the main wallet for your business. You only ever do this once.
2
Create an API key
Create a key on the same page. Wallet API keys start with
wsk_live_.3
Create an address
Call
POST /api/v1/wallets with an ID for your user. On a paid plan, the address already works on every other network your plan includes, with nothing more to switch on. If you call it again with the same ID, you get the same address back, never a second one.Detecting deposits
We watch every address you create, on every network it works on. When money arrives, we record the deposit and send awallet.deposit.received webhook to the URL you set under Dashboard → Webhooks. You can also look up deposits and a wallet’s live balance yourself at any time:
Get balance
How much USDC a wallet holds right now, on every network.
Get wallet deposits
Every deposit one wallet has received.
List all deposits
Every deposit across your account, for checking against your own records.
Moving funds
Auto-sweep
Move the money from your users’ addresses into your master wallet automatically, once it reaches an amount you set.
Withdraw
Send money out to an address you’ve approved in your dashboard.
Transfer between users
Send USDC or USDT from one of your users to another, on the same network.
Recover a stray token
Move out a coin that landed on one of your addresses but isn’t USDC or USDT.
Find a deposit
Look again for a payment that was sent but never showed up.
Settlement
Turn every deposit into USDC and gather it on one network, at your user’s own address.
wallet.transfer.completed or wallet.transfer.failed. The receiving address doesn’t also report a deposit, so each payment is only counted once in your records.
See Wallet API webhooks for what you’re told when money arrives, and when a withdrawal or transfer completes or fails.
Pricing
Your allowance resets at the start of every month and counts the addresses you created that month, not your total. On Growth, you’re never cut off: go past 2,000 and each extra address costs $0.50. Free has no billing, so it stops at 100 until the next month.
Arc
Arc is a network built around USDC. Creating addresses and receiving money there works like any other network, once your plan includes it. A few things are different, so it’s worth knowing them before you send users there. It’s USDC only. There’s no USDT on Arc, so every deposit there is USDC. On Arc, USDC is also what pays the network fee (often called gas). That means a sender’s wallet can send it in two ways: as a normal token transfer, or as Arc’s own built-in currency, the way ETH moves on Ethereum. Either way, it counts as a USDC deposit. Amounts are always shown to 6 decimal places, like USDC everywhere else. The built-in kind can carry more decimals than that, and any extra digits are dropped, not rounded up. You also get each deposit once. On Arc, we only record a deposit once it’s final, so it arrives alreadycomplete, with a single webhook. Some wallets make one transfer on Arc look like two, and you’re still only credited once.
On a paid plan, your addresses already work on Arc alongside every other network your plan includes, with nothing extra to switch on. Pass chain: "ARC" when creating an address if you want to check that up front.
If you ask for a network your plan doesn’t include, you’ll get a 400 saying so. Talk to us about choosing a plan or moving to Enterprise.
Testing without a test mode
There’s no test mode for the Wallet API yet. Keys are live, and every address you create is real. The easiest way to work with that is to test with small real amounts, and start your test users’ IDs with something liketest- so they’re easy to spot later. If a test mode is something you’d really need, tell us and we’ll keep it in mind for what we build next.
Create your first wallet
Switch on Base, create a key, and give your first user an address, step by step.

