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.