Solana token balances are not stored directly in a wallet's main system account. Instead, Token Programs use separate token accounts to track the balance of a specific token mint for a specific owner.
A wallet can therefore control many token accounts, including Associated Token Accounts, Token-2022 accounts, and other token accounts created by applications.
This section explains how token accounts work, why empty accounts can remain on-chain, and how account closure differs from burning or hiding assets.
- A token account stores the balance and account information for one specific token mint.
- A wallet address and a token account are separate Solana accounts.
- An Associated Token Account is the standard deterministic token account for a wallet and mint.
- A token account can continue to exist after its token balance reaches zero.
- Classic SPL Token and Token-2022 accounts may have different sizes, extensions, and behaviors.
- Closing a token account and burning tokens are different token-program instructions.
What is a Solana token account?
A token account is an on-chain account used by a Solana Token Program to track a token balance and related account information.
A token account is associated with:
- one token mint;
- one token-account owner;
- a token amount; and
- relevant authorities, such as a delegate or close authority.
A wallet can therefore be associated with many token accounts, one for each token or account arrangement it uses.
What is an Associated Token Account?
An Associated Token Account, commonly called an ATA, is the standard token account for a particular wallet owner, token mint, and token program.
The ATA address is deterministically derived, which gives wallets and applications a predictable place to find or create the account.
ATAs simplify token transfers, but they are still real on-chain accounts with their own data and lamport balance.
Why can empty token accounts remain?
When a token balance reaches zero, the underlying token account does not necessarily disappear automatically.
The account can continue to exist until an authorized party explicitly closes it. Its lamports may remain in the account while it exists.
This distinction is important for wallet cleanup because an account can be empty from a token perspective while still holding SOL.
Classic SPL Token and Token-2022
Solana supports more than one token-program model.
The classic SPL Token Program provides the original token-account functionality. Token-2022 adds optional extensions that can change the structure or behavior of token mints and token accounts.
Examples of Token-2022 extensions include features related to transfer hooks, confidential transfers, default account state, and non-transferable tokens.
Tools should therefore inspect the token program, account size, state, authorities, and extensions instead of assuming that every token account is identical.
Closing token accounts
Closing an eligible token account removes the account and transfers its remaining lamports to a destination account.
For a regular non-native token account, the token balance generally must be zero, and the account owner or configured close authority must authorize the closure.
Wrapped SOL accounts are a special case because closing them can unwrap the underlying SOL.
Token accounts and wallet cleanup
Understanding token accounts helps answer common wallet questions:
- Why do accounts remain after selling or transferring tokens?
- Why can an empty account still hold SOL?
- Why can some token accounts not be closed?
- What is the difference between burning and closing?
- Can an account be created again later?
- Why might Token-2022 accounts require different handling?
The articles in this section explore these topics in detail.