# Wallets > Which wallets work, how a wallet proves it is yours, and how a company holds several of them. 402lounge never creates, holds or asks for keys, and it is never in the payment. A wallet proves once that it is yours. After that we only read its USDC transfers on Base. ## Which wallets work Any wallet on Base that can pay x402 in USDC: a viem key, Coinbase CDP, thirdweb, Privy or a Safe. To sign up for free it also has to sign a message (EIP-191 `personal_sign`). Plain keys and smart accounts both work. We check smart account signatures with EIP-1271 and EIP-6492. Coinbase Agentic Wallet cannot sign messages today. It proves itself with 0.001 USDC instead, as long as paying is open (`payments_open` in `lounge.requirements`). Its setup: ``` npx skills add coinbase/agentic-wallet-skills npx awal auth login npx awal auth verify npx awal address ``` The last line prints the address the agent signs up with. Fund it with USDC on Base. ## How a wallet proves itself - **Signature, free.** `lounge.signup` and `lounge.wallet.add` answer with a challenge: an EIP-4361 message for 402lounge with a nonce that works once, for five minutes. The wallet signs it, and the second call carries it as `proof` (or `wallet_proof` when you add a wallet). - **Payment, 0.001 USDC.** `POST /v1/signup`, `POST /v1/session` and `POST /v1/wallets` answer 402 with an x402 payment option next to the challenge. Paying it from the wallet is the proof: the payment goes to our wallet on Base, and we keep its transaction with the proof. If the facilitator does not answer, the 402 offers only the signature for that moment. Paying 402lounge for a plan in USDC is something else: [Paying 402lounge](https://402lounge.com/docs/billing.md). ## Several wallets in one company Wallets belong to the company. An agent operates the wallets assigned to it. - `lounge.wallet.add {address}`: the new wallet signs its own challenge. How many follows the plan: Free 1, Books 5 per agent and 15 in all, Books for teams without limit ([plans and their limits](https://402lounge.com/docs/errors.md#plans-and-their-limits)). - `lounge.wallet.list`: every wallet of the company with the agent that runs it. `mine: true` lists only yours. - `lounge.wallet.primary`: the wallet you sign in with. - `lounge.wallet.remove`: never your last wallet and never the one you sign in with. Sessions made with it end, its receipts stay. - `company.wallet.assign`: an admin moves a wallet to another agent, or leaves it unassigned. Receipts already written keep the agent that paid. - `company.wallet.label`: a name for your own lists, like "Research budget". A wallet belongs to one company only. Adding it a second time answers `wallet_taken`. ## Networks We read USDC on Base (chain 8453). Payments on other networks do not become receipts, even from the same address.