No Fianto fee during the beta. Any fee comes with at least 30 days notice. See pricing
Solana7 min read

Dropped vs failed Solana transactions: what happened, and what it cost.

A dropped Solana transaction never made it into a block: no validator processed it, so nothing moved and no fee was charged, and once its blockhash expires it never will. A failed transaction did make it into a block, but an instruction refused, so every change was reverted except the fee, which Solana still charges. A dropped transaction can still land until that expiry, so wait for it before you pay again.

On this page
What is the difference between a dropped and a failed transaction?Why do Solana transactions get dropped?Does a failed Solana transaction still cost a fee?How do you avoid paying for a transaction that will fail?How does Fianto decide whether a payment was dropped or failed?What happens to a Fianto payment that was dropped or failed?SourcesQuestions
TL;DR
  • Dropped: never processed, no fee, no record on chain. It can still land until its blockhash expires, so wait before trying again.
  • Failed: processed and reverted. No tokens move, but the fee is taken: "If the transaction fails, the fee is still charged."
  • Fianto calls a payment dropped only after its blockhash is 150 blocks dead and every RPC provider it asks has never seen it.

What is the difference between a dropped and a failed transaction?

The difference between a dropped and a failed transaction is whether a validator processed it. Everything else follows from that one fact:

DroppedFailed
Included in a blockNoYes, with an error
Tokens movedNoneNone: all changes are reverted
Fee chargedNoYes, in full
Recorded on chainNoYes, with its error
Can it still succeed laterYes, until its blockhash expiresNo, that signature is final
Safe to send a new oneOnly after the blockhash expiresYes, once you fix the cause

Solana's transactions documentation explains the revert: "If any instruction fails, the entire transaction fails and all state changes are reverted." The fee is the exception, because the network has already done the work. An explorer shows a failed one with its error; how to read a Solana payment on an explorer walks through both screens.

Why do Solana transactions get dropped?

Solana transactions get dropped when they never reach the leader that is producing blocks, or reach it too late, which happens most during network congestion. Solana's guide to retrying transactions opens with: "On some occasions, a seemingly valid transaction may be dropped before it is included in a block." It then lists the causes: lost network packets, the simplest one, overloaded validators, RPC nodes that are ahead of or behind each other, and temporary forks.

From the sender's side a dropped transaction simply vanishes: there is no error to read, because the signature never appears in a block. The same guide says RPC nodes keep forwarding a transaction to leaders every two seconds, until it is finalized or its blockhash expires; the expiry rule is explained in "blockhash not found".

Does a failed Solana transaction still cost a fee?

A failed Solana transaction still costs its full fee. Solana's fee structure page, read on 15 October 2026, says it in one line: "If the transaction fails, the fee is still charged." The same page explains when: "The total fee is deducted from the fee payer before execution begins." The learning page on transaction fees gives the reason: "Yes, because validators still process them."

For a USDC payment the amount is small. A one-off payment through Fianto costs 5,060 lamports, about 0.000005 SOL; the breakdown of every Fianto transaction is in how much a Solana transaction costs. Account rent is different: it is not taken by a failed transaction, because the accounts it would have opened are never created.

How do you avoid paying for a transaction that will fail?

You avoid paying for a failing transaction by simulating it before you send it. A simulation runs the transaction against current state without including it in a block, so a transfer that would fail shows its error for free. Wallets run the same kind of dry run to preview a transaction, and warn when it fails, as wallet transaction warnings explains. Sending with preflight on does this automatically: Solana's retry guide recommends keeping skipPreflight set to false.

Fianto checks at three points before a fee is at stake:

  1. Before your wallet opens, the checkout reads your USDC account, your SOL and the merchant's USDC account, and refuses a payment that could not succeed. You have signed nothing, so nothing is charged.
  2. After you sign, Fianto's first broadcast runs with preflight on. If the simulation fails inside an instruction, Fianto stops rebroadcasting that transaction, because sending it again without preflight would only let a validator charge you a fee for a transfer that cannot happen.
  3. Before each subscription renewal, Fianto simulates the unsigned charge. A renewal the simulation shows would fail is not signed or sent, which saves the fee.

Simulation cannot catch everything: state can change between the simulation and the block, so a transaction that simulated cleanly can still land and fail. It catches the common cases, such as an empty balance, before any fee is at stake.

How does Fianto decide whether a payment was dropped or failed?

Fianto decides whether a payment was dropped or failed from the chain alone, with a tracker that looks at every payment in flight every two seconds. A payment that has landed with an error is marked failed at once. A payment no node has seen is never called dropped early, because it might still land:

  1. While the blockhash is valid, the tracker rebroadcasts the signed transaction and waits. If the main RPC provider still has not seen it after ten seconds, the tracker also asks the others.
  2. It waits until the chain is 150 blocks past the transaction's lastValidBlockHeight, a margin on top of the expiry, so a lagging node cannot cause a false drop.
  3. It then asks every RPC provider it is configured with. Only if every one answers that it has never seen the signature is the payment marked dropped. If any provider stays silent, nothing is decided.
  4. A transaction any provider ever reported as confirmed is never dropped automatically, even if every provider later forgets it. It stays open and raises an alert for a person to check.

A payment still undecided 30 minutes after its blockhash died raises an alert, and support can settle it with an audited command after checking the chain by hand, as dropped or failed, never as a success. If a payment written off as dropped later turns up on chain, Fianto reopens it, settles it from the chain and records that in its audit log. These rules exist because the costly mistake is calling a payment dropped when the money did move: that would reopen the checkout and invite the customer to pay twice.

Fianto sends the transaction, tracks it to finality and tells your server once it counts.

Accept USDC on Solana

What happens to a Fianto payment that was dropped or failed?

A Fianto payment that was dropped or failed is marked failed, and the checkout stays payable while its link is still open, unless the USDC reached the merchant anyway, in which case the session closes. Neither sends order.paid, so a merchant whose server waits for that webhook never fulfils an order that did not settle. The customer reads: "This payment did not complete. Check your wallet's recent activity first: if the USDC left your account, do not pay again, and contact [merchant name]. If it did not, press Pay to try again."

The one case the merchant should look at is a payment marked failed whose USDC reached the merchant's wallet anyway. The dashboard's Needs attention page lists failed payments whose money landed, so you can refund them from your own wallet or fulfil them by hand.

Dropped and failed subscription renewals

Renewals treat the two differently. A dropped renewal says nothing about the customer's wallet, so it does not count toward the four attempts Fianto makes before a subscription ends; it is simply tried again. A failure counts only when the customer caused it: not enough USDC, the wallet approval revoked, or a USDC account that is frozen or closed. Fianto reads the customer's accounts before it sends a renewal, so most of these are caught without any transaction. The SOL fee of a renewal is drawn from Fianto's charging key, the fee payer on chain, and the customer contributes through the flat 0.01 USDC network fee charged today with every subscription charge on plans created since 6 October 2026; the merchant pays neither. The full retry schedule is in failed renewals and retries.

Sources
Questions

Questions about dropped and failed Solana transactions.

Do I pay a fee for a dropped Solana transaction?

No. A dropped transaction was never processed by a validator, so no fee was deducted. Only a transaction included in a block pays its fee.

Do you pay gas on a failed Solana transaction?

Yes. Solana deducts the fee before the transaction runs and keeps it if the transaction fails. The tokens it tried to move stay where they were.

How do I know if my Solana transaction was dropped?

Ask an RPC node for the signature's status once the chain is past the transaction's lastValidBlockHeight. A failed transaction is recorded in a block with its error; a dropped one has no status, and from then on it can never land.

Can a dropped transaction land later?

Yes, until its blockhash expires. After that it can never be processed, which is why you should wait for the expiry before sending a replacement.

Why did my Solana transaction fail but still take SOL?

The SOL was the transaction fee, which Solana charges for processing whether or not the instructions succeed. Nothing else left your wallet.

Read next.

Solana7 min read

"Blockhash not found": why a Solana payment expires if you wait to sign

"Blockhash not found" means the transaction names a recent block that the network no longer accepts, or does not know yet, so it will never be processed. Solana only takes a blockhash up to 151 blocks old, which makes every signed transaction a short-lived object: wait too long in the wallet and it expires unsent. Nothing moves and no fee is charged; the fix is to build a fresh transaction and sign it promptly.

SolanaData7 min read

How much does a Solana transaction cost? Base fee, priority fee and real payment numbers

A Solana transaction costs a base fee of 5,000 lamports (0.000005 SOL) per signature, plus an optional priority fee set by the compute-unit limit times the price per unit. A USDC payment through Fianto costs the customer 5,060 lamports, a first subscription 10,400 lamports, and a cancel or rent reclaim in the portal 5,100 lamports; the checkout shows its fee line as "paid by you, under $0.01". Rent for new accounts is separate from the fee, and the merchant pays none of it.

Solana8 min read

How to read a Solana payment on Solscan or Solana Explorer

Paste the transaction signature into Solscan or Solana Explorer and check five things: the status says success and finalized, the fee payer is the customer's wallet, the token is USDC (mint EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v), the merchant's USDC account went up by the price, and the transfer carries one extra read-only account, Fianto's reference. A one-off Fianto payment is one transaction with two compute-budget instructions and one USDC transfer, plus a second transfer to Fianto's treasury only when a service fee applies, which it does not during the beta.

Wait for the expiry, then retry.

Or let a checkout that tracks every signature do the waiting.

New posts are announced on X and Discord.