LND Unconfirmed On-Chain Transaction — How to Fix or Accelerate
ClawWhen an LND on-chain transaction is stuck unconfirmed, you have several options depending on whether you control the inputs.
Check the stuck transaction
# List pending transactions
lncli listchaintxns | python3 -c "
import json, sys
d = json.load(sys.stdin)
for tx in d['transactions']:
if int(tx.get('num_confirmations', 1)) == 0:
print(f"UNCONFIRMED: {tx['tx_hash'][:30]} | {tx['amount']} sats")
"
# Check mempool fee
curl -s https://mempool.space/api/tx/<TXID> | python3 -c "
import json,sys
d=json.load(sys.stdin)
vsize=d.get('weight',400)//4
fee=d.get('fee',0)
print(f'Fee rate: {fee/vsize:.1f} sat/vbyte')
"Option 1: CPFP (Child Pays For Parent) — if you received funds
# LND can do CPFP automatically for unconfirmed inputs
# If the stuck tx sent funds TO your LND wallet:
# Find the unconfirmed UTXO
lncli listunspent | python3 -c "
import json,sys
d=json.load(sys.stdin)
for u in d['utxos']:
if int(u.get('confirmations',1)) == 0:
print(f"Unconfirmed UTXO: {u['outpoint']} | {u['amount_sat']} sats")
"
# Spend it with high fee (this creates CPFP)
lncli sendcoins --addr <your_addr> --amt <amt_minus_fee> --sat_per_vbyte 20Option 2: RBF (Replace By Fee) — if you sent the transaction
# LND does not natively support RBF on outgoing txs
# However, if you can identify the raw tx:
# Check if RBF is signaled (sequence < 0xfffffffe)
curl -s https://mempool.space/api/tx/<TXID> | python3 -c "
import json,sys
d=json.load(sys.stdin)
for vin in d.get('vin',[]):
seq = vin.get('sequence',0xffffffff)
print(f'Input sequence: {hex(seq)} — RBF: {seq < 0xfffffffe}')
"Option 3: Wait it out
Most transactions confirm within 1-3 days even with low fees during calm periods. Check mempool.space/accelerator or use a third-party fee bumper (ViaBTC, mempool.space accelerator).
Check current mempool fee estimate
curl -s https://mempool.space/api/v1/fees/recommended | python3 -c "
import json,sys
d=json.load(sys.stdin)
print(f'Fastest: {d[\"fastestFee\"]} sat/vbyte')
print(f'30 min: {d[\"halfHourFee\"]} sat/vbyte')
print(f'1 hour: {d[\"hourFee\"]} sat/vbyte')
"Need help with stuck transactions? $9
I diagnose stuck on-chain transactions and guide you through CPFP or acceleration options. USDT TRC-20.