Why is my transaction not getting confirmed and what can I do about it?
I sent a transaction
- without (or with an exceptionally small) transaction fee
- using extremely small or unconfirmed inputs
- while the stars were not standing right.
For whatever reason, I have been waiting forever for my transaction to confirm.
Why is it taking so long for my transaction to confirm? What can I do to speed-up the transaction’s confirmation?
This is a canonical question serving as a lightning rod for the flood of "unconfirmed transaction" questions we are experiencing lately. Please provide a detailed and broad answer to serve a wide range of these questions.
Also see these related questions: • How to unstuck a low-fee transaction with Electrum?, • How do miners select which transactions to include in a block?, • Do unconfirmed transactions expire?, • What happens if my transaction is not accepted because I did not pay fees?, • How to unstuck a low-fee transaction with blockchain.info?
@Avram: Hey, I generalized your question further to use it as a canonical question to catch a wide range of the "unconfirmed" questions we are getting lately. I hope you don’t mind that I recycled it in such a fashion.
It would be nice for this question to have answers that address other software besides Bitcoin Core...
@NateEldredge: Perhaps we should ask questions on how to do this with specific other wallets and then merge them into this one?
How Bitcoin Mining Works
Bitcoin transactions are mined (processed) by Miners, and Miners want to benefit from their work. By mining transactions with higher fees, they make more money. Some miners can decide to mine all transactions no matter the fee but they still must compete with every other financially motivated miner.
Why is it taking so long for my transaction to confirm?
If you have sent a transaction
without (or with an exceptionally small) transaction fee
expect it to be ignored for an unknown amount of time until a miner decides to process it and solves the block; this could be several days to several weeks, possibly never. Your wallet and any Bitcoin node will show it as unconfirmed, your transaction is stuck in limbo.
Block sizes are limited, which means that only a limited number of transactions can be processed in a certain timeframe. In the beginning of bitcoin, there was lots of free space in each block because there were not many transactions. However, now that Bitcoin is quite popular there are more transactions than can be processed into the current block. This is why transaction fees have increased, and as long as someone is still willing to pay more they will keep increasing.
What can I do to speed-up the transaction’s confirmation?
Nothing. The next best thing is to cancel and resend the transaction.
- Make a note of the individual bitcoin address(es) that the unconfirmed transaction was sent from.
- Run Bitcoin Core with the
-zapwallettxesoption (or wait a few days until your wallet stops broadcasting the transaction and it falls out of the global transaction mempool). (Issue with mempool.dat resolved by #10330 in 0.15.0).
- Send all your bitcoins from the addresses recorded in step 1 to a new address with the recommended or higher than recommended fee.
- Make original transaction again using the recommended fee.
What to watch out for
- Sites that claim to "speed up your unconfirmed bitcoin transaction". From personal experience, these sites are either scams or just don't work.
- DOUBLE PAYMENTS. If the addresses used in the original transaction have sufficient bitcoin in them to cover the transaction, it can always be completed at a later date. To avoid this, follow step 3 to empty the associated addresses and do not reuse them.
What is the recommended fee?
Transaction fees vary by the size of your transaction, and not all transactions are the same size. The fee for same sized transactions also depends on how busy the bitcoin network is at the moment. An estimate (at the time of original post) was between 11-20 satoshi/byte (0.00011-0.00020BTC/kB) but now can be much higher. Most wallets have a feature which dynamically calculates the rate based on network congestion.
See https://bitcoinfees.earn.com/ for a live chart of suggested transaction fees
Very good! Thank you. Perhaps you could add a sentence please where you explain that blocks have gotten fuller and that’s why fewer miners pick up low-fee transactions.
As of core 0.14+ using `zapwallettxes` is not enough as mempool persists on disk. So you may consider deleting `mempool.dat` from disk as an additional measure to get rid of stuck transaction.
@AntonKrouglov: That sounds like a bug. Please file an issue on http://github.com/bitcoin/bitcoin. Update: There is an issue already: https://github.com/bitcoin/bitcoin/issues/9710, and the proposed solution is to indeed delete mempool.dat.
I agree except for "your transaction is stuck in limbo". A transaction is never in limbo, either it has been included in a block or it hasn't. The wallet may say "unconfirmed transaction" and it may show a different balance as if the transaction was actually confirmed but the network itself agrees on the fact that you transaction did not take place. The "limbo" is the danger to be in a double spending scenario, aka during the first 1 or 2 confirmations
@GianlucaGhettini "limbo" means "an uncertain period of awaiting a decision or resolution; an intermediate state or condition". Since the transaction is awaiting inclusion in a block, limbo describes the situation well. Once a transaction is broadcast I would say it is in limbo as long as it is valid, even if it is no longer in any public mempools. The only resolutions are to confirm or invalidate (by double spending) the transaction. Double spending is not a danger in this situation because you are the sender, not the receiver.
After running bitcoin core with `-zapwallettxes` it showed 0BTC in my wallet. Though just needed to finish syncing... but now sync is done and it is not showing the BTCs I had there (not even the ones out of the transaction). Not sure what now...
For anyone doing this, please note that for me there was still a very un-nerving wait of about 3 hours (even with a big fee paid). If you're moving around big units of currency I feel for you. Bitcoin is *really* slow.
@GianlucaGhettini I think the nuance lies in the fact the _coins_ are not in limbo but the _transaction_ is.
Would your input address from step 1 not be cleared anyway if you just make sure that the remainder of your transaction goes to a new/other change address? Wouldn't that be sufficient to prevent double spending? You shouldn't actually be required to pay the transaction fee twice...
Yes, there is a way to save a borked transmission. A restart of the wallet and some patience typically fixes the issue.
How to stop/reverse a Bitcoin transaction without confirmations:
This makes the wallet "forget" any unconfirmed transactions, thus enabling you to reuse their inputs.
- Create a new transaction to make your payment and add an appropriate fee this time.
- The unconfirmed transaction is still valid and may still be floating around in the network, so be sure to spend its inputs to yourself, or the transaction may be confirmed at a later time and you'll end up double-paying.
The simplest way is to send all your bitcoins to yourself. Don't forget an appropriate fee. ;)
here is a very interesting thread on reddit about canceling a transaction and double spending, I never knew the protocol actually allowed it http://www.reddit.com/r/Bitcoin/comments/1s4zdn/it_currently_costs_around_5_to_send_someone/?utm_medium=twitter&;utm_source=Fancy+Show+Tech
In the case that your fee is too low: Now that child-pays-for-parent has been merged, you(or any of the recipients of your unconfirmed transaction) could spend the Bitcoin received and the fee associated with that second transaction will help prioritize the confirmation of the original transaction.
This does require more fine grained control of which outputs you spend, which not all wallets provide.
The behavior from miners prioritizing this way has existed in some pools for a while, but now it is the default.
This is a far better option than the accepted answer. Helped me a lot. A bit more detailed explanation can be found here: https://www.reddit.com/r/Bitcoin/comments/5uzgvu/how_to_issue_a_cpfp/
Here is a guide for as many wallets as I could figure out how to perform an RBF with. This is adapted from my bitcointalk post: https://bitcointalk.org/index.php?topic=1802212.0
What is a "Stuck" transaction? How are they caused?
A "stuck" transaction is a transaction which has remained unconfirmed for period of time which either the receiver or the sender is uncomfortable with. Stuck transactions can be annoying as it means that recipients often consider the senders to not have paid yet, or the recipient needs the money as soon as possible.
Stuck transactions are typically caused by low transaction fee rates. However other things can cause stuck transactions such as spending from an unconfirmed transaction, having dust outputs in the transaction, or being a double spend of another transaction. If a transaction has a double spending transaction and the double spend confirms, then the transaction will be "stuck" forever as it can never confirm.
What can I do to make my stuck transaction confirm?
There are several options for confirming stuck transactions:
For both the recipient and the sender of the transaction, you can:
- Wait for the transaction to confirm
- Wait for the network to "forget" about the transaction
- Ask a miner to confirm it for you
For the sender of a transaction, you can also:
- Attempt an Replace-By-Fee double spend transaction
- If you have a change output, you can attempt a Child-Pays-For-Parent transaction
For the recipient of a transaction, you can also:
- Attempt a Child-Pays-For-Parent transaction
Waiting for a confirmation
If you are incapable of performing any of the other options or are too afraid to do so, you can simply wait and hope that the transaction will eventually confirm. To ensure the network is constantly being reminded of the transaction, you can rebroadcast the transaction periodically. Most wallets will rebroadcast automatically, so simply leaving your wallet open will allow rebroadcasting to happen.
Waiting for the network to "forget" about the transaction
If a transaction remains unconfirmed for too long, it can be eventually "forgotten" by most nodes on the Bitcoin network if no one rebroadcasts the transaction. This happens due to node restarts, mempool expiry times, or mempool eviction because the minimum mempool fee has increased. This process typically takes a few days (usually 3). Once a transaction has been "forgotten", you may not see it in your wallet and you probably will not see the transaction in most block explorers. Once the transaction has been "forgotten", you can simply send the Bitcoin again but include a higher transaction fee. If you still see the transaction in your wallet but don't find it on any block explorers, you will need to follow the instructions in the next Replace-By-Fee Section.
Note that some wallets will continuously rebroadcast the transaction while the wallet is on, so you either have to remove the transaction from the wallet using the instructions in the RBF section, or shut down the wallet and keep it off for several days.
Ask a miner for help
Some mining pools and miners offer services to allow you to prioritize your transaction in their mempool so that it is chosen sooner for inclusion in a block. One such service is https://pool.viabtc.com/tools/txaccelerator/. Note that ViaBTC does have a limit the accelerator to 100 transactions every hour and requires that it pays a minimum fee rate of 10 satoshis/byte, so their accelerator may not necessarily work. Another such service is https://pushtx.btc.com/#/. Not that BTC.com does require another form of payment in order to "accelerate" your transaction.
Also note that if you attempt a Replace-By-Fee transaction, both the original transaction and the RBF transaction will be considered double spends. Miners will likely not help with any transactions marked as double spends.
Attempting a Replace-By-Fee (RBF) double spend transaction
What is an RBF transaction
A Replace-By-Fee transaction is a transaction that is nearly identical to your stuck transaction but pays a higher transaction fee. Since the original transaction most likely does not use Opt-in RBF, the RBF transaction that we will be creating will be considered a double spend and marked as such. The transaction uses Full-RBF and thus may still take a little bit longer to confirm as it is technically a double spend.
The difference between the types of RBF transactions
Replace-By-Fee transactions have 3 different types, First-Seen-Safe(FSS) RBF, Full RBF, and Opt-in RBF. FSS RBF requires that the RBF transaction include the same outputs as the transaction it replaces and consumes the same inputs. Full RBF means that the transaction is simply a double spend of another transaction but pays a higher transaction fee than the one(s) it replaces. Opt-in RBF means that the RBF transaction can only replace a transaction that has Opted-in to allowing itself to be replaced. Opt-in RBF follows BIP 125.
The instructions given in this section will be for making Full RBF transactions. Opt-in RBF transactions will be described in the "Avoiding Stuck Transactions In The Future" section.
How to make a Full RBF transaction
Making a Full RBF transaction depends entirely on the wallet that you are using. Some wallets support the advanced functionality required to make a Full RBF transaction, others do not. The following will be guides for each wallet on how to make a Full RBF transaction with that wallet. In general the procedure is to remove the unconfirmed transaction from the wallet and then resend the Bitcoin but with a higher transaction fee.
When making a Full RBF transaction, the transaction should include the recommended fee rate effective at the time of creating the transaction. See the "Avoiding this issue in the future" section for help with that.
Bitcoin Core makes making Full RBF transactions very easy. Simply go to the transactions list, right click the transaction that is stuck, and choose the
If that option is greyed out, go to the Bitcoin Core
datadirand delete the
mempool.datfile. Then restart Bitcoin Core with the
-walletbroadcast=0option and then you should be able to use
If the above two options fail for some reason, start Bitcoin Core with the
-zapwallettxesoption to clear all unconfirmed transactions from your wallet.
Once the transaction is either Abandoned or cleared from the wallet, you can simply go to the Send tab and send the Bitcoin again but make sure that you include a sufficient transaction fee.
Bitcoin Armory also makes making Full RBF transactions very easy. Go to
Help > Clear All Unconfirmed Transactionsand restart Armory. This will clear all of the unconfirmed transactions from the wallet and thus allow you to create the Full RBF transaction. Once Armory has restarted, simply send the Bitcoin again as you normally would but be sure to include a sufficient transaction fee.
MultiBit HD allows for making Full RBF transactions fairly easy as well. Go to
Manage Walletand click on
Repair Walletand follow the wizard. This process will clear all of the unconfirmed transactions from your wallet much like Bitcoin Core and Armory do. Once repair wallet has completed, simply send the Bitcoin again as you normally would. Note that some users have had trouble with this method in the past and it may not always work. You may need to wait for the transaction to be "forgotten" in order for this method to work.
Wallets that do not allow you to or ones that I don't know how to make Full RBF transactions
Not all wallets support the creation of Full RBF transactions. Many wallets do not allow clearing all unconfirmed transactions to allow for making Full RBF transactions. The following is a list of wallet software which do not support Full RBF transactions. If a wallet on this list does support FullRBF transactions, please let me know and provide instructions for that so I can add it above.
- Blockchain.info and web wallets in general
- Electrum (supports Opt-in RBF, but not Full RBF)
- MultiBit Classic
- Bitcoin Wallet for Android
Attempting a Child-Pays-For-Parent transaction
What is a Child-Pays-For-Parent transaction?
A Child-Pays-For-Parent (CPFP) transaction is exactly as the name implies, a child transaction spends from an unconfirmed parent transaction and includes a transaction fee which covers both the fee of the child and the parent. However creating CPFP transactions are much more difficult as it requires spending from an unconfirmed transaction, something that many wallets do not allow.
How can I avoid making Stuck transactions in the future?
Using Dynamic Fees
The best way to avoid having stuck transactions is to make sure that you are not spending from an unconfirmed transaction, and include a sufficient transaction fee. If your wallet supports dynamic transaction fees, you should use those. If you want very fast confirmations, set the dynamic fees to choose the fastest fee possible. Dynamic fees are calculated by the wallet by analyzing the current state of the network and determining an optimal transaction fee from there. Since the state of the network constantly changes, the optimal transaction fee calculated one day may not necessarily be the best fee for the next day.
If your wallet does not support dynamic fees but does support setting a custom transaction fee rate for each transaction, you can look up the optimal fee rate on sites like http://bitcoinfees.21.co/ and https://bitcoinfees.github.io/ and set the fee rate for each transaction based on those sites. You must do this for each transaction you make otherwise you may end up paying a sub-optimal fee.
If your wallet does not support any sort of fee rate or does not allow setting custom transaction fees, you should upgrade to a new wallet. Using a fixed fee or fixed fee rate is no longer a good idea as the network constantly changes. You can use this formula:
<in>*148 + <out>*34 + 10where
<in>is the number of inputs and
<out>is the number of outputs to estimate the size of your transaction and determine the optimal fee for it.
Note that some wallets (e.g. blockchain.info), even though they use dynamic fees, set an upper limit to the transaction fee. If you notice that your transactions are constantly being stuck even though you are using dynamic fees, you should check the settings of your wallet and perhaps even switch to a new wallet which has no limit to the transaction fee.
Use Opt-In RBF
Opt-In RBF is a feature that allows for an RBF transaction to be more easily created as these transactions will not be rejected by nodes supporting Opt-In RBF.
Currently few wallets support creating Opt-In RBF transactions
To create a transaction that can be replaceable, go to Tools > Preferences and check the box "Enable Replace-By-Fee". Then when you want to send some Bitcoin, next to the Fee slider is a box labeled "Replaceable". Check that box so that while the transaction is still unconfirmed you can replace the transaction with one that pays a higher fee.
To increase the fee of a transaction that uses Opt-In RBF, right click the transaction in the history list and choose the "Increase Fee" option.
Armory also allows for the creation of RBF transactions. When sending a transaction, choose the checkbox "Enable RBF".
To increase the fee of a transaction that uses Opt-In RBF, right click the transaction in the transactions list and choose the "Bump Fee" option. Transactions whose fee can be increased are labeled clearly in the transactions list.
I just experienced a "gotcha" in Bitcoin Core 0.15 for an opt-in RBC transaction. The transaction required no "change" address since it was spending exactly the amount of the input. When attempting an RBF to speed up the transaction, bitcoin-qt complains that there is no change address present in the transaction, so RBF cannot be used.
@MaxVernon, see my question exactly about this issue: https://bitcoin.stackexchange.com/questions/64814/increase-transaction-fee-with-bitcoin-core-client-fails-because-of-no-change-out
why does deleting mempool.dat make a difference?! (it does, as I just tested this!) it ought not to though!
@Rebroad Why not? The mempool.dat file is the mempool stored to disk. When you start again, everything that was there is loaded into the mempool again. so the initial state is not an empty mempool. If your stuck transaction is in that file, then it'll end up in the mempool again which blocks `abandontransaction`. By deleting this file, the mempool will start out empty without your transaction so it can be abandoned.
The other answers cover most useful information already, I'd like to add one point though:
The fee estimation of most wallets has significantly improved since blocks have gotten full. If you're running an outdated version, it's likely that it is doing a bad job of guessing the fee. That may cause you to either overpay or your transactions not getting confirmed in a timely fashion.
To avoid fee-related delays in the future, it is advantageous to run a current version of your wallet software.
If you are using Electrum, there is no equivalent to
-zapwallettxes. The closest thing you can do is to restore your wallet from a seed. This will wipe your client of any unconfirmed transactions.
Then, you can resend the transaction with a higher fee.
There's many ways to get your transaction confirmed.
- push your transaction
https://www.f2pool.com/pushtx (Needs referral code from pool operator.)
Pay to mining pools to confirm your transaction
Some websites ask for hex format transaction ID, You could convert it like that:
There is currently a backlog of unconfirmed Bitcoin transactions and typically only the transactions with the highest fees will be confirmed until the backlog clears.
You have a few options:
- Submit your transaction to the ViaBTC Transaction Accelerator
- If you control either of the receiving addresses, send a new transaction from one of them with a much larger fee, encouraging a miner to pick up the whole chain of transactions (Child-Pays-For-Parent).
- Wait. The transaction should be either confirmed or removed from the memory pool within about 72 hours.
Here is a good fee estimator for future transactions: https://bitcoinfees.earn.com/
I've merged the question this answer was posted on originally into this more canonical topic. Please check if you should edit your answer to adapt it to this topic.