Solana Token Accounts

What Is an Associated Token Account (ATA) on Solana?

Learn what an Associated Token Account (ATA) is on Solana, why wallets use ATAs, how ATAs differ from regular token accounts, and when an eligible ATA can be closed.

Updated
by Your Free SOL

When you receive a token on Solana, the token balance is usually not stored directly in your wallet's main account.

Instead, it is stored in a separate token account. For many common tokens, wallets and applications use a standardized token account called an Associated Token Account, or ATA.

ATAs make it easier for wallets, exchanges, and applications to find the standard token account for a particular wallet and token mint.

Understanding ATAs also explains why a Solana wallet can contain many accounts, why creating token accounts requires SOL, and why some empty accounts may later be eligible for closure.

What is an Associated Token Account?

An Associated Token Account (ATA) is the standard token account for a particular wallet owner and token mint.

Its address is deterministically derived using:

  • the wallet owner's address;
  • the token mint address; and
  • the relevant token program address.

The Associated Token Program uses these inputs to derive a predictable account address and can create the token account at that address.

In practical terms, an ATA gives applications a standard place to look for a wallet's balance of a particular token.

For example, a wallet can have a USDC ATA that stores its USDC balance:

Wallet address
        ↓ controls
USDC Associated Token Account
        ↓ stores
USDC token balance

A wallet can also have separate ATAs for BONK, JUP, or other token mints:

Wallet
│
├── SOL in the wallet's system account
├── USDC ATA
│   └── USDC balance
├── BONK ATA
│   └── BONK balance
└── JUP ATA
    └── JUP balance

The wallet controls these token accounts, but the token balances are recorded in the token accounts rather than directly in the wallet's main system account.

If you are unfamiliar with token accounts in general, start with What Is a Solana Token Account?.

Why does Solana use ATAs?

Solana token accounts can exist at many different addresses.

That flexibility is useful, but it creates a practical problem: when someone wants to send tokens to a wallet, which token account should receive them?

ATAs provide a standard answer.

Given the same wallet owner, token mint, and token program, applications can derive the same ATA address without relying on a private database or asking the recipient to provide a separate token account address.

This helps wallets, exchanges, decentralized applications, and payment systems:

  • find a wallet's standard token account;
  • create that account when needed; and
  • send tokens to a predictable destination.

The ATA address is deterministic, but the account does not have to exist yet. A transaction may create the ATA before depositing tokens into it.

Is an ATA the same as a token account?

An ATA is a token account, but not every token account is an ATA.

The main difference is how the address is selected.

A regular token account can be created at an independently generated address. An ATA is created at the standardized address derived for a particular wallet owner, token mint, and token program.

Token accounts
├── Associated Token Account (ATA)
└── Other token accounts

Both types can store token balances. The ATA is simply the standard account used for a specific owner-and-mint combination.

An ATA is also not owned by the Associated Token Program in the usual account-ownership sense. After creation, the token account is managed by the classic Token Program or Token-2022 Program, depending on which token program the account uses.

Can one wallet have many ATAs?

Yes.

A wallet can have a separate ATA for each token mint and token program it uses.

For example:

Wallet A
│
├── ATA for USDC
├── ATA for Token X
├── ATA for Token Y
├── ATA for Token Z
└── ...

If a wallet has interacted with many tokens over time, it may therefore accumulate many token accounts.

Some may still contain tokens. Others may have a zero token balance but continue to exist on-chain.

A wallet can also have additional non-ATA token accounts for the same mint. Therefore, the number of token accounts shown on-chain may be greater than the number of token balances displayed in a wallet interface.

Is there exactly one ATA per token?

For a given wallet owner, mint, and token program, there is one standard ATA address.

However, the phrase “one ATA per token” needs a small qualification:

  • the classic Token Program and Token-2022 are separate token programs;
  • the token program is part of the ATA derivation;
  • a wallet may have other, non-associated token accounts for the same mint.

So the more precise statement is:

There is one canonical ATA for a specific wallet owner, token mint, and token program.

Who creates an ATA?

An ATA can be created when an application needs to send or receive a token.

The wallet owner may create it, but the wallet owner does not have to be the payer. The sender, an exchange, a dApp, or another account can submit the creation transaction and pay the account-creation cost.

A typical flow looks like this:

Check whether the ATA exists
          ↓
Derive the expected ATA address
          ↓
Create the ATA if necessary
          ↓
Send or receive tokens

Creating the account requires allocating account data on Solana, so the transaction must provide enough lamports for the applicable rent-exempt balance.

The payer and the token account owner are not always the same account.

Does every token use its own ATA?

Generally, each token mint uses a separate token account.

For example:

Wallet + USDC mint
→ USDC ATA

Wallet + Token A mint
→ Token A ATA

Wallet + Token B mint
→ Token B ATA

The ATA for one mint cannot store the balance of another mint. This separation allows Solana's token programs to track token balances independently.

The token program also matters. A mint using Token-2022 uses the Token-2022 program, while a mint using the classic SPL Token Program uses the classic Token Program.

Does an ATA hold SOL?

An ATA primarily stores token-account data, including:

  • the token mint;
  • the token amount;
  • the token-account owner; and
  • relevant authority information.

The account also has a lamport balance. That balance funds the account's on-chain storage and usually keeps the account rent-exempt.

These are separate values:

Associated Token Account
│
├── Token balance
│   └── e.g. 100 units of Token A
│
└── Lamport balance
    └── account funding for on-chain storage

The lamports are not the same as the token balance. An ATA can hold zero tokens while still holding SOL.

For a basic classic SPL Token Account, the commonly quoted rent-exempt minimum is about 0.00203928 SOL. The actual amount can differ for Token-2022 accounts, accounts with extensions, or accounts holding more than the minimum.

For more background, read What Is Solana Rent?.

What happens when an ATA becomes empty?

If all tokens are transferred, swapped, or otherwise removed from an ATA, its token amount can become zero.

A zero token balance does not automatically close the account.

The ATA may continue to exist on-chain with its lamport balance still inside it. This is why a wallet can contain accounts that:

  • still exist;
  • hold zero tokens; and
  • still contain SOL.

An empty account may be useful again in the future, so it should not be closed solely because its balance is zero.

Can an ATA be closed?

An ATA is a token account, so it can generally be closed when the relevant token program's conditions are satisfied.

For a typical non-native token account:

  • the token balance must be zero;
  • the account owner or configured close authority must authorize the instruction; and
  • the transaction must specify a destination account for the remaining lamports.

When the CloseAccount instruction succeeds, the account's remaining lamports are transferred to the destination account and the source account is deleted from the current ledger state.

Account stateUsually closable?
Contains tokensNo, for a normal non-native token account
Zero token balancePotentially
Frozen with zero token balancePotentially
Already closedNo
Controlled by another owner or authorityNo

A cleanup tool should verify the token program, account balance, authorities, and account type before preparing a close transaction.

What happens to the token when an ATA closes?

Closing an empty ATA does not burn a token or delete the mint.

It removes the token account that was storing the balance. If the balance was already zero, there are no token units to transfer or destroy.

Closing and burning are different operations:

ActionWhat happens
Close an eligible token accountRemoves the account and transfers its lamports
Burn tokensDestroys token units and reduces the token supply
Transfer tokensMoves token units to another token account

If a token account still contains tokens, do not treat closing and burning as interchangeable actions.

Can an ATA be created again after it is closed?

Usually, yes.

Because the ATA address is deterministically derived from the wallet owner, token mint, and token program, the same canonical address can be derived again later.

If the account no longer exists and the wallet needs to receive that token again, an application can recreate the ATA at the same address.

Creating it again requires funding the account according to the applicable network and token-program requirements at that time.

Therefore, closing an unused ATA does not permanently prevent the wallet from holding that token in the future.

Can an ATA be closed without the wallet owner paying?

Yes.

The wallet owner must authorize closure unless a configured close authority applies, but the transaction fee payer is a separate role.

Another account can pay the transaction fee or, where supported, the cost of creating an ATA. The account that pays for an operation is not necessarily the account that owns or controls the token account.

This distinction is useful when reviewing transactions and understanding who is responsible for each instruction.

Why do ATAs matter for wallet cleanup?

A wallet that has been active for a long time may have accumulated token accounts from:

  • token transfers;
  • swaps;
  • airdrops;
  • NFT and gaming applications;
  • exchanges; or
  • DeFi protocols.

Some accounts may still be needed. Others may be empty and potentially eligible for closure.

Understanding ATAs helps distinguish between:

  • the wallet's main system account;
  • token mints;
  • token accounts that store balances; and
  • empty accounts that may contain recoverable lamports.

Before closing an account, verify what it contains, which token program controls it, who can authorize closure, and where the lamports will be sent.

How YourFreeSOL can help

You do not need to manually inspect every token account or decode raw account data.

YourFreeSOL Wallet Cleanup can scan the connected wallet for supported token accounts that may be eligible for cleanup. Before approving a transaction, review:

  • the accounts selected for closure;
  • the token mint associated with each account;
  • the amount of SOL or lamports to be transferred;
  • the destination address; and
  • any network or service fee.

The basic process is:

Connect wallet
     ↓
Scan supported token accounts
     ↓
Review eligible accounts and destination
     ↓
Approve the transaction in your wallet
     ↓
Wait for confirmation

YourFreeSOL should never require your seed phrase or private key. Your connected wallet remains responsible for approving and signing the transaction.

Key takeaways

  • An Associated Token Account (ATA) is the canonical token account for a specific wallet owner, token mint, and token program.
  • An ATA is a token account, but not every token account is an ATA.
  • The ATA address is deterministic and predictable.
  • A wallet can have many ATAs for different token mints.
  • Token balances are stored in token accounts rather than directly in the wallet's main account.
  • Creating an ATA requires account funding, but the payer does not always have to be the token owner.
  • An ATA can remain on-chain after its token balance reaches zero.
  • An eligible empty ATA can potentially be closed, transferring its remaining lamports to a destination account.
  • Closing an account and burning tokens are different operations.
  • The same ATA address can usually be recreated if the account is closed and needed again.

Understanding ATAs makes it easier to see why a Solana wallet may contain unused accounts and where reclaimable SOL can sometimes come from.

Sources

  1. 1.Solana Docs — Create a Token Account
  2. 2.Solana Docs — Tokens on Solana
  3. 3.Solana Docs — Close Token Account
  4. 4.Associated Token Account Program

Related articles

explanation

What Is a Solana Token Account?

Learn what Solana token accounts are, how they differ from your wallet address, why empty accounts can remain, and when eligible accounts may return SOL when closed.