LND Circular Rebalancing - Fix No Route and Fee Errors

LND Circular Rebalancing - Fix No Route and Fee Errors


What Is LND Circular Rebalancing?

Circular rebalancing moves liquidity through a loop: pay yourself via a circular route to shift balance from outbound-heavy channels to inbound-heavy ones. No channel close needed.

Common Errors

  • no route found for circular payment
  • insufficient local balance to send rebalance
  • FAILURE_REASON_NO_ROUTE: rebalance failed
  • fee too high: rebalance unprofitable

Manual Circular Rebalance via lncli

# Get your own node pubkey
lncli getinfo | grep identity_pubkey

# Find a circular route
lncli queryroutes --dest=<your_pubkey> --amt=100000 \
  --outgoing_chan_id=<outbound_channel> \
  --last_hop=<inbound_channel_peer_pubkey>

# Send the rebalance payment
lncli sendtoroute --payment_hash=$(lncli addinvoice --amt 100000 | python3 -c "import json,sys; print(json.load(sys.stdin)['r_hash'])") \
  --routes=<route_json>

Using balance-of-satoshis (bos)

# Install bos
npm install -g balanceofsatoshis

# Rebalance: move 500k sats from channel A to channel B
bos rebalance \
  --out <peer_pubkey_outbound> \
  --in <peer_pubkey_inbound> \
  --amount 500000 \
  --max-fee-rate 200

Using lnd-rebalance script

git clone https://github.com/C-Otto/rebalance-lnd
cd rebalance-lnd
pip install -r requirements.txt

# List unbalanced channels
python rebalance.py -l

# Rebalance specific channel
python rebalance.py -t <channel_id> --amount 500000 --fee-rate 150

Tips

  • Keep max-fee-rate low (100-300 ppm) or rebalancing costs more than it earns
  • Target channels with >80% local or <20% local balance
  • Schedule rebalancing during low-fee periods (weekends)

Struggling with circular rebalancing? DM on Nostr.

Report Page