Back to the Blog

Why Did My Lightning Network Payment Fail?

Everyone who runs a Lightning Network node will inevitably see a payment fail. You get an invoice from a friend or service, paste it in or scan the QR code, then you get that dreaded message. Payment failed. What happened? Why? This article is going to go through the most common reasons payments fail on the lightning network and what you can do to reduce the chance of failure.

The most common reason why your payment may fail is that you may not actually have enough funds to pay the invoice. Yes, this happens sometimes. It’s important to keep in mind that it is only your outbound side that you can spend. Make sure you always have enough funds when you plan to pay an invoice.

Another common reason is that the channels you have open are with peers that cannot route to the final destination. This is common. If you only have a few channels, the chance of a successful payment is lower than if you had for example, over ten. Be sure to have channels open with quality peers. Good features of peers include node uptime, total capacity, number of channels, and average size of channels. These stats can be found at amboss.space. Improve your chances of a successful route by having the majority of your channels with high quality peers that have a wide centrality. Centrality means their connection to the wider network.

Lightning Network payments are also constrained by the size of payment you are making. Generally smaller payments have a higher probability of succeeding over bigger payments. To remedy this, consider making smaller payments, or enabling AMP payments (Atomic Multi-Path) to spend out of multiple channels for a single payment. As the fiat value of bitcoin increases, channels can spend and forward more value for less sats.

While the two examples above are the most common reason for payments failing, there are a few less-common ways payments fail.

These include:

  1. The node you are trying to pay or forward-through is offline. This happens from time to time.
  2. The receiving node or forwarding node has a minimum HTLC set. This will limit the size of payments able to be sent.
  3. Your channel may show to have enough sats to send the desired amount, but you may not have enough for the routing fee. Trying to spend the maximum of your channel can easily fail due to this.

There are three components to the channel makeup of a well-run node.

  1. Quality. Your channel will likely be better if it is with a peer that has a large centrality to the wider network, and the channels that peer has going out are on average the same size or bigger than the channel you have with them. You can see stats on Terminal Web and Amboss.

2. Quantity. The more channels you have that meet the quality criteria of point #1 to a wide range of peers, the greater chance your payment will succeed. There are diminishing returns to this though. Around 10 quality channels is likely the sweet spot, but you can quite easily reach 90% or more of the network with 15-20 channels. If you have just one or two channels, you are relying on your peers more than if you had ten or more channels.

3. Dependability. Your peers must stay online, or your channel is effectively useless. Be sure to keep an eye on your peer’s status. If offline, the channel will show in red on Thunderhub. You can then click the channel and see how long they have been offline.

The initial stages of bootstrapping a node are the most time-consuming, but I would urge you not to be discouraged. Eventually, your node becomes its own organism, with channels flowing in and out naturally and inbound liquidity coming in periodically from other nodes on the network simply looking to connect to other high-quality nodes. Every node on the network started with zero reputation, but it is just that: a start. As always, support is available on the Voltage Discord server, and I look forward to chatting with you all there soon!

If you have any questions or comments either email us at support@voltage.cloud, use our live on-site chat, or join us in Discord. ⚡️