Solana transaction simulation failed before sending: what to check
A "simulation failed" error means the Solana network ran a dry-run of your transaction and determined it would fail if submitted. This is a safety check, not a final rejection. The fix is to identify and correct the specific problem the simulation caught, then resubmit. Common causes include incorrect token amounts, expired blockhashes, missing account dependencies, or contract-specific logic errors.
What "simulation failed" actually means
When you send a transaction, your wallet or dApp first asks an RPC node to simulate it. The node checks whether the transaction would succeed under current network conditions. If the simulation returns an error, your wallet blocks the real submission to prevent wasting fees or losing funds. The error message often includes a reason code or a brief explanation, but the wording varies by wallet and dApp.
Step-by-Step Checks
1. Check the Error Message Details
The simulation failure message usually contains a clue. Common variations include:
- "Blockhash not found" or "blockhash expired" - the transaction took too long to prepare.
- "Instruction index 0" or similar - the error occurred at a specific step in a multi-instruction transaction.
- "Account not found" or "account not initialized" - a required account is missing or closed.
- "Insufficient lamports" - not enough SOL for fees or rent exemption.
- "Token account not initialized" - a token account hasn't been created yet.
- "Slippage tolerance exceeded" - the price moved beyond your limit during simulation.
- "Custom program error" - the specific smart contract rejected the transaction for its own reasons.
Copy the exact error text. If it's short, search it online or paste it into a Solana block explorer's transaction decoder.
2. Refresh the Blockhash
A stale blockhash is the most common fix. Solana blockhashes expire after about 60 seconds. If you composed the transaction, then waited, then tried to send, the simulation may fail because the blockhash is no longer valid.
Fix: Cancel the current transaction attempt. Refresh your wallet or the dApp page. Re-enter the amount or parameters. The wallet will fetch a fresh blockhash automatically.
3. Verify Token Balances and Account Existence
Simulation often fails because the wallet expects a token account that doesn't exist or has insufficient balance.
- Check your token balance on Solscan or your wallet. If the token doesn't appear, you may need to create the associated token account first. (Covered in the ATA article on this site.)
- If you're sending a token, ensure you have enough of that token, not just SOL. Simulation does not guess - it checks the exact accounts listed.
- If you're swapping, check that the token you're selling actually has a balance in the specific wallet you're using, not just somewhere else.
4. Check Slippage and Price Impact
For swaps, DEXs simulate the trade at current prices. If the simulated price would result in a worse rate than your slippage tolerance allows, the simulation fails.
Fix: Increase slippage tolerance (e.g., from 0.5% to 1% or 3%). Be aware that higher slippage risks worse execution. Alternatively, try a smaller trade amount or wait for lower volatility.
5. confirm all required accounts are connected
Some dApps require you to connect a specific wallet or account type. For example, staking or lending protocols may need a stake account or a margin account connected.
- Disconnect and reconnect your wallet.
- Ensure you are on the correct network (mainnet vs. devnet).
- If the dApp asks you to "approve" an account or "sign" a message, do so before attempting the transaction again.
6. Inspect for Contract-Specific Errors
If the error says "custom program error" or includes a number (e.g., "0x1771"), the smart contract itself rejected the transaction. These errors are unique to each protocol.
Fix: Look up the error code in the protocol's documentation or on a community forum. Common examples include: - "Token locked" - you tried to transfer a frozen or locked token. - "Unauthorized" - you are not the owner or delegate of the account. - "Insufficient liquidity" - the pool doesn't have enough tokens for the swap.
7. Try a Different RPC Endpoint
A slow or overloaded RPC node can return a false simulation failure. This is rare but possible.
Fix: In your wallet settings, switch to a different RPC provider (e.g., from a public endpoint to a private one, or from Helius to QuickNode). Then retry the transaction.
8. Clear Cache and Retry
Sometimes the wallet's local state is out of sync.
Fix: Close and reopen the wallet extension or app. Clear browser cache if using a web wallet. Restart your phone if using a mobile wallet. Then try again.
When to walk away
If none of these steps resolve the error, the transaction may be impossible under current conditions. Common dead ends include: - The token you're trying to send has been frozen by its issuer. - The smart contract has been paused or deprecated. - The dApp's liquidity has been drained. - The wallet itself has a bug (try a different wallet like Solflare or Backpack).
In those cases, do not keep retrying. You will only waste fees. Wait for the protocol to update or seek help from the dApp's support channels.
Not financial advice. gokuofsolana.xyz publishes market data and general information about Goku super saiyan. Crypto assets are volatile and you can lose everything you put in. Nothing here is a recommendation to buy, sell or hold, and we make no price predictions.
Prices are sourced from third parties and may be delayed or wrong. Verify anything you intend to act on against a primary source.