LND Circular Rebalancing - Fix Liquidity Imbalance Without Closing Channels

LND Circular Rebalancing - Fix Liquidity Imbalance Without Closing Channels


What Is LND Circular Rebalancing?

Circular rebalancing sends a payment from your node, through other nodes, back to yourself — shifting sats from outbound-heavy channels to inbound-heavy ones without closing anything.

Common Errors

  • unable to find a path to destination
  • insufficient local balance
  • fee budget exceeded during rebalance
  • circular payment rejected by intermediate node

Manual Circular Rebalance

# Get your own node pubkey
lncli getinfo | grep identity_pubkey

# Find a route through a specific channel
lncli queryroutes --dest <your_pubkey> --amt 100000 \
  --outgoing_chan_id <source_chan_id>

# Send the circular payment
lncli sendpayment --dest <your_pubkey> --amt 100000 \
  --outgoing_chan_id <source_chan_id> \
  --last_hop <dest_chan_peer_pubkey> \
  --keysend

Using balance-of-satoshis (bos)

# Install bos
npm install -g balanceofsatoshis

# Rebalance: move 200k sats from chan A to chan B
bos rebalance \
  --out <outgoing_peer_pubkey> \
  --in <incoming_peer_pubkey> \
  --amount 200000 \
  --max-fee-rate 500

Reduce Fees During Rebalance

# Set strict fee limit
bos rebalance --out <peer> --in <peer> \
  --amount 100000 \
  --max-fee 100 \
  --max-fee-rate 200

# Or via lncli with fee limit
lncli sendpayment --fee_limit_sat 50 ...

Automation with charge-lnd

# charge-lnd can auto-rebalance based on channel ratios
# Install: pip3 install charge-lnd
# Config: /etc/charge-lnd/charge-lnd.config
[rebalance]
strategy = use_proportional
proportional.base = 0
proportional.rate = 0
min_htlc_msat = 1000000

Struggling with channel liquidity? DM on Nostr for rebalancing strategy help.

Report Page