Creating a Solana account can require a minimum SOL balance sized to its stored data. Wallets often call this amount rent. For rent-exempt accounts it remains in the account as a storage balance; it is separate from the transaction processing fee.
Read the account-creation charge in two parts
Suppose an illustrative transaction creates a holding account and sends tokens into it. The fee payer spends SOL on transaction processing and the designated payer funds the new account. Those roles can belong to the same wallet, but the payments have different destinations and lifecycles.
The processing fee compensates network execution under the fee rules. The storage balance remains attached to account state. Recovering it later requires an authorized operation supported by the account's program. Deleting an asset from the wallet's display does not perform that operation.
A recipient can receive tokens without paying every setup cost personally. A sender or service may fund the receiving account. That earlier funding does not automatically entitle the payer to the future balance recovered on closure.
Query the minimum for the actual account size
Use getMinimumBalanceForRentExemption with the account's data length. Read the response in lamports and divide by 1,000,000,000 to display SOL. A basic token account and a token account with extensions can have different sizes.
Solana's rent reduction is phased through feature activation. A target value in a roadmap does not establish the minimum on the cluster you are using. Query the current requirement instead of copying an old fixed value such as “every token account costs this much.”
Keep the account's present lamport balance separate from that minimum. For a teaching example, suppose the account contains 2,000,000 lamports and its current required reserve is 1,500,000. Its surplus is 500,000 lamports, or 0.0005 SOL. These numbers illustrate subtraction; they are not a live rent quote.
Close an eligible account when you no longer need it
An ordinary token account generally needs a zero token balance before CloseAccount can remove it. The token owner or configured close authority authorizes closure and selects the destination for its lamports. Token-2022 features can impose additional conditions.
Wrapped SOL follows a special path: an eligible native token account can close with a tracked token balance to release its underlying lamports. Treat that as unwrapping, not as burning an ordinary token balance to make space for closure.
After closure, the holding account no longer exists. The mint still exists. Receiving that asset later can require recreating a suitable holding account and funding its then-current minimum. Do not close an application position account merely because its asset row looks empty; its program defines the exit and closure conditions.
Subtract the current reserve before reclaiming
Withdraw a surplus while keeping the account open
The current Token Program exposes WithdrawExcessLamports for eligible accounts it owns. It moves only SOL above the required minimum, leaving token quantities and mint supply unchanged. The required signer depends on whether the source is a token account, mint or multisig.
The classic Token Program instruction excludes native wrapped-SOL accounts. Program support and authority checks matter; a tool cannot apply one generic SOL transfer to every program-owned account. Other programs need their own authorized reclaim path for their own state accounts.
In the 2,000,000-lamport teaching case, a supported excess withdrawal moves 500,000 and leaves 1,500,000. Account closure, if eligible, instead removes the account and transfers its remaining lamports. These actions answer different user intentions.
Evaluate a cleanup transaction by its instructions
A cleanup tool can bundle several closures or excess withdrawals. Review the account list, recovered amount, destination, network fees and any service charge. A token burn changes token ownership or supply accounting and is a separate action from recovering a zero-balance account's storage reserve.
If ten illustrative accounts each return 0.0005 SOL, the gross recovery is 0.005 SOL. Subtract a hypothetical 0.0002 SOL service charge and 0.00001 SOL network cost to get 0.00479 SOL net. Use the actual preview and accepted movements for a real cleanup.
Verify the resulting accounts and SOL movements after acceptance. Keep the transaction signature; a hidden token row or a tool's success banner does not establish where the recovered lamports went.
Sources and documentation
- Solana: current minimum balance by account data size
- Solana: phased rent reduction
- Solana: close a token account
- Solana: withdraw excess lamports
- Account modification rules
- Solana transaction fees
Found an error or an outdated detail? Send a correction.
