Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to the guide
THE FINANCEBASE List yours

Guide

How to Recover an Offline-Signed Solana Transaction That Is Delayed or Fails

By TheFinanceBase Team 10 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A delayed Solana transaction is not automatically a failed transaction. First preserve the original signature, cluster, signed bytes, and lifetime type. Then check the signature on that same cluster. If the transaction uses a recent blockhash and is still within its validity window, rebroadcast the identical signed bytes. If the blockhash has expired, verify that the original did not execute before rebuilding and collecting signatures again. Durable-nonce transactions follow a different rule: the nonce is single-use, so an advanced nonce prevents reuse of the old signed transaction.

A successful sendTransaction response only means that an RPC endpoint accepted the submission. It does not prove that the transaction was included, finalized, or executed successfully.

As an Amazon Associate I earn from qualifying purchases.

Why is my Solana transaction pending?

Solana transaction handling has separate stages that wallets often compress into one spinner or status label:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Submission: an RPC node receives the serialized transaction and returns its signature.
  • Inclusion: the transaction is accepted into a block.
  • Execution: the runtime processes its instructions.
  • Confirmation or finalization: the network reaches the commitment level you are checking.

A timeout, a missing wallet result, or an explorer that has not indexed the transaction does not establish that the transaction failed. Conversely, an RPC response containing a signature does not establish that it executed. Use the original signature and inspect its status on the cluster where it was submitted.

What the common statuses mean

Observation What it establishes What it does not establish
RPC returned a signature The RPC accepted the submission request and gave you a transaction identity. Inclusion, execution, confirmation, or finalization.
Status is still null The node has no status at the commitment level being queried. That the transaction definitely failed; it may be delayed, unindexed, dropped, or still within its lifetime.
Status contains an error The transaction reached processing and reported an execution or transaction error. That every earlier or related transaction failed.
Confirmed or finalized status The transaction was included at the reported commitment level. That every instruction succeeded; inspect the error field and transaction details.
Block height passed the recorded validity limit A recent-blockhash transaction can no longer be accepted under that blockhash. That the transaction never landed; it may have executed before expiry.

First recovery steps: preserve identity before changing anything

  1. Save the signature. Copy the complete base58 transaction signature returned by the RPC or wallet. Do not rely on a shortened display string.
  2. Record the cluster. Mainnet-beta, devnet, and testnet have separate ledgers. A valid signature on one cluster will not describe a transaction on another.
  3. Preserve the exact serialized transaction. Keep the fully signed bytes, including every signer signature. Do not decode and reserialize them unless your tooling guarantees byte-for-byte identity.
  4. Identify the lifetime mechanism. Determine whether the message uses an ordinary recent blockhash or a durable nonce. The recovery decision depends on this distinction.
  5. Record the blockhash metadata. For a recent-blockhash transaction, save the lastValidBlockHeight returned when the blockhash was fetched. For a durable nonce transaction, record the nonce account address and the nonce value embedded in the message.

Check the signature with a trusted explorer configured for the same cluster or directly through an RPC endpoint. A wallet’s local spinner is not a ledger result.

Recent blockhash versus durable nonce

These two mechanisms provide different ways to determine whether an offline-signed transaction can still be submitted.

Question Recent blockhash Durable nonce
How long can the signed message remain acceptable? Until the recent-blockhash processing window ends. Solana documentation describes a 150-slot window, roughly 60–90 seconds under typical slot timing; the wall-clock estimate varies. Beyond the ordinary recent-blockhash window, provided the stored nonce is still the current value and the transaction has not consumed it.
How is expiry or reuse determined? Compare the saved lastValidBlockHeight with a confirmed getBlockHeight result. Read the nonce account and compare its stored nonce with the value in the signed transaction.
Can identical bytes be rebroadcast? Yes, while the blockhash remains valid and the transaction has not already landed. Only while the nonce is still current and unused.
What happens after the lifetime ends? Build a new message with a fresh blockhash and obtain signatures for that new message. Refetch the nonce account and build a new transaction if the nonce advanced or was consumed.
What if execution fails? Instruction state changes roll back, but transaction fees can still be charged. If validation passed, the nonce advances and fees can be charged even when later instructions fail.

How to check a Solana transaction

Use the original signature and query the same cluster with a consistent commitment level. In a Solana client library, the relevant operations are:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • getSignatureStatuses([signature]) to see whether the signature has a processed, confirmed, or finalized result and whether an error was recorded.
  • getTransaction(signature, options) to retrieve the transaction, metadata, logs, and error details when the node retains the record.
  • getBlockHeight({ commitment: 'confirmed' }) to obtain the current block height for expiry comparison.
  • getAccountInfo(nonceAccount, { commitment: 'confirmed' }) to inspect a durable nonce account before attempting a delayed submission.

A minimal status check in JavaScript looks like this:

const statusResponse = await connection.getSignatureStatuses([signature]);
const status = statusResponse.value[0];

if (status === null) {
  console.log('No status at this commitment yet');
} else {
  console.log(status.confirmationStatus, status.err);
}

Querying at a different commitment from the one used to fetch the blockhash can create confusing results. In most recovery cases, use confirmed commitment consistently for block-height and status checks, and use the same preflight commitment when resubmitting.

Rank #2
Sale
The Psychology of Money: Timeless lessons on wealth, greed, and happiness
  • Ideal for Gifting
  • Ideal for a bookworm
  • Compact for travelling

How to recover a recent-blockhash transaction

1. Determine whether the original is still alive

When you fetched the blockhash, the RPC response included a blockhash and lastValidBlockHeight. Fetch the current confirmed block height and compare the two values. If the current height is not greater than the saved limit, the transaction has not yet expired under this test. The 150-slot figure is a protocol window, not a guaranteed timer; slot production can make the elapsed seconds shorter or longer than the approximate range.

2. Rebroadcast the same fully signed bytes

If the original signature is not confirmed and the blockhash remains valid, submit the exact serialized transaction again. Keep the original signature as the identity you monitor. Do not edit instructions, fee settings, account lists, or signatures during this step.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
const rawTransaction = signedTransactionBytes;
await connection.sendRawTransaction(rawTransaction, {
  preflightCommitment: 'confirmed'
});

const status = await connection.getSignatureStatuses([originalSignature]);

Rebroadcasting is different from signing a replacement. A network or RPC delay can allow the first copy to arrive after the retry. If both copies are valid, both can be accepted for processing; changing the message before the original expires can therefore duplicate an action such as a transfer, swap, or account update.

3. Continue checking the original signature

After each rebroadcast, query the original signature rather than treating a new RPC response as proof of execution. If the transaction becomes confirmed, inspect its error field and metadata. Confirmation with a non-null error means the transaction was processed but an instruction or transaction-level check failed.

4. Treat a passed validity limit as expiry

When confirmed block height is greater than the saved lastValidBlockHeight, the recent-blockhash transaction is expired. Before constructing anything new, check the original signature one more time. Expiry means the old transaction can no longer be accepted with that blockhash; it does not prove that it failed to execute earlier.

5. Rebuild and recollect every required signature

If the original did not execute, fetch a fresh blockhash and construct a new message. A blockhash is part of the serialized message covered by signatures. You cannot replace only the blockhash inside the old signed payload and keep the old signatures. Every required signer must sign the new message, including offline or hardware-based signers.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Re-run simulation or preflight with the commitment you use for the blockhash, review destination accounts and amounts, then submit the newly signed transaction and monitor its new signature.

How durable nonce recovery differs

How a durable nonce transaction works

A durable nonce transaction places the stored nonce value in the message’s recent_blockhash field. Its first instruction must advance the nonce account. This design allows a transaction to be signed offline and submitted later without relying on the ordinary recent-blockhash window.

Before delayed submission, read the nonce account at confirmed commitment and compare its stored nonce with the value embedded in the signed message. Do not assume that an old offline copy is still usable merely because it was never submitted from your device.

If the nonce is still current

If the account contains the same nonce and the original signature has not landed, the old signed bytes may still be submitted. Preserve the original message and signatures, submit those bytes, and monitor the original signature. A nonce transaction is not made reusable by sending it to multiple RPC nodes; once one valid copy consumes the nonce, later copies are obsolete.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If the nonce has advanced

An advanced nonce means the old nonce value has been consumed or superseded. The old signed transaction cannot be submitted again. Refetch the nonce account, construct a new transaction with the current nonce, and collect new signatures from all required parties.

Validation failure versus execution failure

These outcomes have different financial consequences:

  • Validation failure: examples include a missing nonce account, a nonce that was already used, or missing required authority signatures. The transaction is dropped without fees or state changes under the current durable-nonce guidance.
  • Execution failure after validation: the nonce advances before instruction execution. If an instruction fails, ordinary state changes roll back, but the nonce remains advanced and the fee payer is charged. The remedy is a new transaction using the current nonce after you diagnose the program error.

“Durable nonces may be deprecated in a future release.”

Solana documentation, “Durable Nonces”

Because support may change, verify the current network and client documentation before designing a new long-lived offline workflow around durable nonces.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Diagnosing common apparent failures

“Blockhash not found” or stale blockhash

This error can indicate that the blockhash expired, but it can also result from RPC lag or a commitment mismatch. Confirm the saved validity metadata against a current confirmed block height. When fetching and submitting, align the preflight commitment with the commitment used to obtain the blockhash.

Best Value
Sale
I Will Teach You to Be Rich: No Guilt. No Excuses. Just a 6-Week Program That Works (Second Edition)
  • It can be a gift option
  • Comes with secure packaging
  • Helpful in various ways

RPC timeout or missing response

A timeout describes the communication path, not the ledger outcome. Preserve the signature and bytes, query the original signature, and rebroadcast the identical transaction while its lifetime remains valid. Do not sign a replacement solely because the first RPC call timed out.

Explorer shows no transaction

Check that the explorer is set to the correct cluster and that you copied the complete signature. Indexing can lag behind RPC observations. Use an RPC status query as the authoritative diagnostic for the node and commitment you selected, then check again at a stronger commitment when needed.

Program or instruction error

Retrieve transaction details and program logs. Solana instruction execution is atomic: if an instruction fails, state changes made by that transaction revert. Fees can still be charged, so a failed transaction may reduce the fee payer’s balance even though the intended account changes did not occur.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Offline signing took too long

With a normal recent blockhash, collecting signatures across devices can outlast the validity window. If that happens, verify that the original did not land, then rebuild with a fresh blockhash and obtain all signatures again. For future workflows, design the signing sequence so the blockhash is fetched close to final signing, or evaluate a currently supported durable-nonce process with its single-use and deprecation considerations.

Can I resend a failed Solana transaction?

Use this decision sequence:

  1. Is the transaction confirmed or finalized with an error? Do not resend identical bytes expecting the same instructions to succeed. Inspect the program error, correct the cause, and construct a new message.
  2. Is there no status, and is a recent blockhash still valid? Rebroadcast the same fully signed bytes and monitor the original signature.
  3. Has the recent blockhash expired? Check the original signature for prior inclusion, then rebuild with a fresh blockhash and new signatures.
  4. Does a durable nonce transaction’s nonce still match the account? If yes, the original bytes may be submitted once; if no, create a new transaction with the current nonce.

Never alter a signed message while retaining signatures from the old message. Never create a replacement before checking whether the original can still land unless you have deliberately accepted the risk of duplicate execution.

A safer offline-signing operating procedure

Before signing

  • Write down the cluster, fee payer, blockhash or nonce account, and intended instruction details.
  • For a recent blockhash, save lastValidBlockHeight with the blockhash.
  • For a nonce transaction, read the nonce account and verify the nonce authority and first-instruction requirement.
  • Estimate the time needed for every signer, including devices that are physically offline.

After each signature

  • Verify that the signer approved the same message bytes, not a reconstructed message with a changed blockhash or account order.
  • Keep a copy of the partially signed transaction and identify which signatures are present.
  • Do not submit a partially signed transaction unless the protocol and required signers permit it.

After submission

  • Store the returned signature immediately.
  • Check status on the submission cluster.
  • Use one commitment strategy for blockhash, preflight, and status checks.
  • Keep the original bytes until the transaction is confirmed, finalized, or demonstrably expired and checked.

What a hardware wallet changes—and what it does not

A hardware wallet can serve as an offline signer, but it does not extend a recent blockhash, reverse an executed transaction, or restore a consumed durable nonce. The device must sign the exact message bytes that will be submitted. If the blockhash expires, the hardware wallet must sign the newly built message; its previous signature cannot be carried over.

The same rule applies to any multi-signer arrangement: a changed blockhash creates a changed message, so every required signature must be collected again.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick Recap

SaleBestseller No. 1
SaleBestseller No. 2
The Psychology of Money: Timeless lessons on wealth, greed, and happiness
The Psychology of Money: Timeless lessons on wealth, greed, and happiness
Ideal for Gifting; Ideal for a bookworm; Compact for travelling
$10.99
SaleBestseller No. 5
I Will Teach You to Be Rich: No Guilt. No Excuses. Just a 6-Week Program That Works (Second Edition)
I Will Teach You to Be Rich: No Guilt. No Excuses. Just a 6-Week Program That Works (Second Edition)
It can be a gift option; Comes with secure packaging; Helpful in various ways
$9.15

Recovery checklist

  • Signature copied in full.
  • Correct cluster selected.
  • Original serialized bytes preserved.
  • Lifetime identified as recent blockhash or durable nonce.
  • Status checked through RPC or a correctly configured explorer.
  • Recent-blockhash expiry tested with saved lastValidBlockHeight and confirmed block height.
  • Identical bytes rebroadcast only while the original remains valid.
  • Original signature checked before any rebuild.
  • Fresh message signed by every required signer after expiry or nonce consumption.
  • Program logs reviewed before retrying an execution failure.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a comment

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More guides

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.