# Wallet and spending approval > Your funds sit in a wallet only your passkey can sign for. You approve a cap; replies pull their exact cost. Section: How it works. Web page: https://docs.katara.com/concepts/wallet/ ## The wallet Creating a wallet in the app gives you a smart account on Avalanche. The account is controlled by a passkey stored on your device. Katara can show you the address and the balance, but it cannot move your funds. The account has the same address on both [networks](https://docs.katara.com/about/networks.txt). For Live it holds USDC on Avalanche C-Chain, which you can send from any wallet or exchange. For Test it holds test USDC on Avalanche Fuji, which the faucet in the portal adds, 5 a day. ## Approving spending Paying per reply needs one standing permission: you allow Katara's settlement contract to move up to a certain amount from your account. That is what **Approve spending** does. It takes one passkey signature and lasts for the period you choose. Test and Live have separate settlement contracts, so each needs its own approval. With the approval in place, Katara moves money in small chunks, a dollar at a time, into a prepaid balance as you use it, and each reply is debited from that balance. Nothing is charged before the money is in the prepaid balance, and nothing in it can be spent on anything but your replies. You can ask for it back at any time; it pays out after a one-hour delay. ## Budget By default the approved amount follows your balance, so you never have to touch it again. Set a cap if you want to bound what a key or the app can spend before you look again. Change or withdraw it at any time in the wallet panel. ## Keys An API key with Cortex inference permission can use your wallet under the spending approval on its environment's network: a Live key on Avalanche C-Chain, a Test key on Avalanche Fuji. The key records its organization, environment, permissions, expiry and payment method. Keys using Account Credits or product permissions without inference do not need a wallet. Disconnecting a wallet revokes keys that bill that wallet. Revocation stops subsequent requests; it does not cancel an effect that was already admitted.