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.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.
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 — 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:Auto
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.
Manual
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.
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 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.See also
- Auto-settle — how source addresses trigger automatic offramps
- Bank accounts — picking the payout destination
- Offramp lifecycle — quote, execute, settle
- Sandbox vs. production — why wallets are scoped per env