> ## Documentation Index
> Fetch the complete documentation index at: https://docs.useveil.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Wallets

> A wallet is a per-chain deposit address that holds stablecoins until you offramp them.

A **wallet** in Veil is the deposit address where USDC or USDT lands before it converts to fiat. Each wallet is bound to one chain and one payout bank account.

## How it shows up in Veil

Veil supports four chains: **Ethereum**, **Base**, **Polygon**, and **Solana**. You hold at most one wallet per chain per [environment mode](/concepts/sandbox-vs-production) — so a developer account in production can have a Base wallet, an Ethereum wallet, and so on, each with its own deposit address and balance.

After you complete KYC and link a bank account, Veil auto-provisions a wallet on each supported chain so you can start receiving deposits. You can also create wallets manually from the dashboard.

## Modes

Every wallet has one of two modes:

<CardGroup cols={2}>
  <Card title="Auto" icon="bolt">
    The wallet has a configured **source address** — a specific wallet that you'll be sending crypto from. When stablecoins arrive **from that address**, Veil automatically offramps them to the wallet's bank account. See [Auto-settle](/concepts/auto-settle).
  </Card>

  <Card title="Manual" icon="hand">
    No source address is set. Deposits land in the wallet but stay there until you trigger an offramp explicitly. Useful when you don't know in advance which wallet you'll send from.
  </Card>
</CardGroup>

You can switch a wallet from manual to auto (or update its source address) at any time.

## Balances

Balances reflect what's on-chain in real time — a deposit appears as soon as the network confirms it. USDC and USDT are tracked separately per wallet.

## Bank account binding

Every wallet has one **default bank account**. [Auto-settle](/concepts/auto-settle) always sends to this account. Manual offramps default to it too, but the dashboard, REST API, and CLI all let you override the destination per-transaction. You can reassign the wallet's default at any time; if auto-settle is on, future settlements go to the new account. See [Bank accounts](/concepts/bank-accounts).

## See also

* [Auto-settle](/concepts/auto-settle) — how source addresses trigger automatic offramps
* [Bank accounts](/concepts/bank-accounts) — picking the payout destination
* [Offramp lifecycle](/concepts/offramp-lifecycle) — quote, execute, settle
* [Sandbox vs. production](/concepts/sandbox-vs-production) — why wallets are scoped per env
