$ bitcoin-cli -rpcwallet=mywallet gettransaction 3f1c...e9a2
{
"confirmations": 0,
"bip125-replaceable": "yes",
...
}
Hours later it still has zero confirmations. Nothing is broken. Miners fill blocks with the highest-feerate transactions they know about, and yours sits below the cutoff. You have two ways to raise its effective feerate: Replace-By-Fee (RBF), where the sender re-signs the transaction with a higher fee, and Child-Pays-For-Parent (CPFP), where anyone with an output of the transaction spends it with a high fee.
Why transactions get stuck
Block space is sold by virtual byte, not by amount. A transaction paying 2 sat/vB waits behind everything paying more. If fee pressure rises after you broadcast, the fee estimate that looked fine can end up far below the going rate.
Several things can happen next:
- Demand drops and it confirms on its own.
- Nodes whose mempools are full evict it for falling below their dynamic minimum feerate.
- It expires. Bitcoin Core drops mempool transactions after two weeks by default (
-mempoolexpiry).
Being evicted doesn't cancel anything. The signed transaction is still valid and can be rebroadcast by anyone who has it. Your wallet should treat it as pending until it confirms or something conflicting confirms.
Check where you stand:
bitcoin-cli getmempoolentry <txid> # errors if your node no longer has it
bitcoin-cli estimatesmartfee 3 # current estimate for ~3 blocks, in BTC/kvB
Replace-By-Fee (RBF)
RBF means broadcasting a new version of the transaction that spends at least one of the same inputs and pays a higher fee. Nodes swap it in for the original, and only one of the two can ever confirm.
Bitcoin Core's replacement policy (which grew out of BIP-125) requires, roughly, that the replacement:
- pays a higher feerate than the transaction(s) it replaces,
- pays a higher absolute fee than the originals combined, plus enough to cover relaying its own size at the incremental relay feerate,