A Lightning invoice is the mechanism that makes Lightning Network payments possible. Every time you scan a QR code to pay someone over Lightning, your wallet ends up with an invoice: the QR code is either the invoice itself (BOLT11) or a reusable code, such as a BOLT12 offer or an LNURL, that your wallet uses to request a fresh one. The invoice contains all the information your wallet needs to route the payment: the destination, the amount, the payment hash, an expiration time, and routing hints. Understanding how Lightning invoices work — and the differences between the BOLT11 and BOLT12 standards — gives you a clearer picture of how payments actually move through the network and why the protocol is evolving.
This guide explains both invoice formats at a practical level, covers their differences, and discusses what BOLT12 means for the future of Lightning payments.
What Is a Lightning Invoice?
A Lightning invoice is a payment request. Unlike an on-chain Bitcoin address where you send whatever amount you choose, a Lightning invoice typically specifies exactly how much to pay, where to send it, and how long the request remains valid. The recipient generates the invoice, shares it with the sender, and the sender’s wallet reads the encoded data to construct and route the payment.
The term “invoice” is precise — it is a request for a specific payment, not a persistent address. Once paid or expired, a standard Lightning invoice cannot be reused. This is fundamentally different from on-chain Bitcoin addresses, which can receive multiple payments over an indefinite time period.
BOLT11: The Current Standard
BOLT11 (Basis of Lightning Technology, specification #11) has been the dominant Lightning invoice format since the network’s early days. If you have used the Lightning Network at all, you have interacted with BOLT11 invoices — even if you only saw them as QR codes.
Anatomy of a BOLT11 Invoice
A BOLT11 invoice looks like a long string of alphanumeric characters, typically starting with lnbc (for mainnet Bitcoin) followed by encoded payment data. Here is what is packed inside:
- Network prefix:
lnbc(mainnet),lntb(testnet), orlnbcrt(regtest) - Amount: The payment amount, encoded in the string (e.g.,
lnbc500n= 50 satoshis). Can be omitted for “any amount” invoices. - Timestamp: When the invoice was created
- Payment hash: A 256-bit hash that the payment is conditional on. The recipient knows the preimage (the secret that hashes to this value); the sender does not. This is the cryptographic glue that makes multi-hop payments atomic.
- Payment secret: A second random value, separate from the preimage. Only someone who holds the invoice knows it, and the recipient rejects payments that do not carry it, so nodes along the route cannot test which node is the recipient. Every BOLT11 invoice must include one.
- Destination (payee node ID): The public key of the recipient’s Lightning node. It is usually not written out: your wallet recovers it from the signature.
- Description: A human-readable description of what the payment is for (e.g., “Coffee at Shop X”)
- Expiry: How long the invoice remains valid (default: 1 hour, configurable)
- Routing hints: Suggested routes for reaching the destination, particularly useful when the recipient’s node is not well-connected to the public graph
- Signature: Cryptographic signature from the recipient, proving they created the invoice
How a BOLT11 Payment Works
- The recipient generates a random 32-byte secret (the preimage).
- The recipient hashes the preimage to produce the payment hash and encodes it into a BOLT11 invoice.
- The recipient shares the invoice with the sender (QR code, text, NFC, etc.).
- The sender’s wallet decodes the invoice, reads the destination and amount, and finds a route through the network.
- The payment travels hop by hop through intermediary nodes, each one holding funds conditional on receiving the preimage (these are Hash Time-Locked Contracts, or HTLCs).
- The final recipient reveals the preimage to the last hop, which reveals it back through the chain. Each hop resolves its HTLC, and the payment settles.
BOLT11 Limitations
BOLT11 has served the Lightning Network well but has several structural limitations:
- Single-use by design. Each invoice contains a unique payment hash. Once paid, it cannot be paid again. Merchants generating thousands of invoices for web checkout need a backend that creates fresh invoices for each customer — adding complexity.
- Recipient privacy leak. The invoice includes the recipient’s node public key. Anyone who sees the invoice knows which node is receiving the payment, which can potentially be linked to an IP address or real-world identity.
- Size. BOLT11 invoices are cryptographically signed and can be quite long, especially with routing hints. This makes them harder to display in compact QR codes that lower-quality cameras might struggle to read.
- No native reusability. Workarounds like LNURL exist to provide reusable payment endpoints, but these are add-on protocols, not part of the Lightning specification itself.
- Requires an online recipient. The recipient must be online to generate an invoice. If a merchant’s node is temporarily offline, no invoices can be created and no payments can be received.
BOLT12: The Next Generation
BOLT12 (also called “Offers”) addresses BOLT11’s limitations with a fundamentally redesigned payment flow. Proposed by Rusty Russell (Core Lightning developer), BOLT12 introduces a two-step request-response model that enables reusable payment codes, recipient privacy, and more flexible payment interactions.
How BOLT12 Offers Work
Instead of generating a single-use invoice, the recipient creates an offer — a reusable payment code. Here is the flow:
- The recipient creates a BOLT12 offer and publishes it (on their website, social media, printed on a card, etc.). The offer is identified by a string starting with
lno. - The sender scans or pastes the offer.
- The sender’s wallet sends an invoice request directly to the recipient’s node via an onion-routed message.
- The recipient’s node automatically generates a unique invoice in response and sends it back to the sender.
- The sender’s wallet pays the invoice using the standard HTLC mechanism.
The key difference: the offer itself contains no payment hash, and an amount is optional. It is just a lightweight pointer that says “contact this node to get an invoice.” The actual invoice is generated on demand, uniquely for each payment.
BOLT12 Key Improvements
| Property | BOLT11 | BOLT12 |
|---|---|---|
| Reusability | Single-use | Reusable (same offer, many payments) |
| Recipient privacy | Node ID exposed in invoice | Blinded paths hide recipient identity |
| QR code size | Large (signed invoice with full data) | Short if the offer names the recipient’s node (from 60 characters). Each blinded path adds about 250 characters or more, so a private offer can be as long as a BOLT11 invoice. |
| Offline generation | No (requires online recipient) | Offer can be created offline, but recipient must be online when payment arrives |
| Recurring payments | Not natively supported | Not in the merged spec. Recurrence was part of early drafts and is now an open proposal (bolts PR #1240) |
| Proof of payment | Preimage proves payment | Preimage proves payment. Since July 2026 the spec also defines payer proofs (prefix lnp), which let the payer prove they paid a specific invoice (bolts PR #1346, merged 27 July 2026) |
| Refund flow | No standard mechanism | Built-in refund protocol |
Blinded Paths: Hiding the Recipient
One of BOLT12’s most significant features is blinded paths. Instead of including the recipient’s node ID in the offer, the offer can contain a blinded route — a path where intermediate hops are encrypted so that only each hop knows the next step, not the final destination. The sender can route a payment to the recipient without ever learning the recipient’s node identity.
This is a meaningful privacy upgrade. With BOLT11, every invoice reveals the recipient’s node public key. Chain analysis firms and surveillance companies can build maps of which nodes receive payments. Blinded paths break this link, making Lightning payments more private at the protocol level.
Recurring Payments and Subscriptions
Recurring payments are not part of BOLT 12 as merged. Recurrence was in early drafts of offers, but it was left out of the version merged into the specification in September 2024 (bolts PR #798), and the spec now lists “Re-add recurrence” under possible future extensions. The proposal to bring it back, bolts PR #1240, was still open on 3 November 2026.
If it is merged and wallets implement it, a subscription offer would specify a payment schedule (for example, monthly) and the payer’s wallet could send each payment at the set interval. That would remove the custom subscription layers developers build on top of Lightning today. Until then, any “subscription” you see over Lightning is built by the app, not by the protocol.
Current Adoption Status (2026)
BOLT12 support varies across implementations:
- Core Lightning (CLN): Full BOLT12 support. CLN was the first major implementation to support offers natively.
- Eclair (and Phoenix Wallet): BOLT12 support implemented. Phoenix can send and receive via BOLT12 offers.
- LND: LND 0.21 (June 2026) added onion-message forwarding and pathfinding, the transport BOLT 12 needs, but still has no native offers (0.21 release notes; latest release v0.21.6, 30 October 2026). BOLT 12 message formats are being merged into LND’s main branch for the next major release, which was not out as of 3 November 2026. Until then, LNDK (v0.3.0, September 2025) adds offers to LND as a separate daemon.
- LDK: BOLT12 support has been implemented, making it available to wallets built on the Lightning Dev Kit.
- OCEAN mining pool: Supports BOLT12 offers for mining payouts — miners can receive regular small payouts to their Lightning wallet via a reusable offer.
The adoption is progressing but not yet universal. Most users in 2026 still primarily interact with BOLT11 invoices. BOLT12 is gaining traction as implementations mature and wallets expose the feature in their interfaces. The backward compatibility of the Lightning protocol means both formats coexist — your wallet can support both BOLT11 and BOLT12 simultaneously.
LNURL: The Bridge Protocol
Between BOLT11 and BOLT12, the community developed LNURL — a set of protocols that add missing functionality to BOLT11 without changing the core specification. LNURL-pay provides reusable payment links. LNURL-withdraw enables pull payments. LNURL-auth enables login with Lightning. Lightning Addresses (user@domain.com format) are built on LNURL-pay.
LNURL solved many of BOLT11’s limitations before BOLT12 was ready. However, LNURL requires a web server to mediate the interaction, which introduces a centralized point of failure and a potential privacy leak. BOLT12 achieves similar functionality natively at the protocol level without requiring external infrastructure.
The long-term expectation is that BOLT12 will gradually absorb many LNURL use cases, but LNURL will persist for backward compatibility and specific web-integration scenarios.
Practical Implications for Users
What does all this mean if you are a regular Lightning user, not a protocol developer?
- For paying invoices: Your wallet handles the technical details. Whether you scan a BOLT11 invoice or a BOLT12 offer, the payment experience is similar — scan, confirm amount, pay. Modern wallets like Phoenix support both formats transparently.
- For receiving payments: BOLT12 offers mean you can publish a single payment code on your website or social profile. Anyone can pay you multiple times using the same code — no need to generate fresh invoices for each transaction.
- For privacy: If privacy matters to you, prefer wallets and services that support BOLT12 with blinded paths. This prevents your node identity from being exposed in every payment request.
- For subscriptions: Recurrence is not in BOLT 12 today; it is an open proposal. If it is added and wallets support it, subscribing to paid content or services over Lightning could work natively without custom infrastructure.
Frequently Asked Questions
Can I use BOLT11 and BOLT12 at the same time?
Yes. Wallets that support both formats can send and receive using either. BOLT11 remains the fallback for interacting with wallets and services that have not yet adopted BOLT12. There is no conflict between the two — they coexist on the same Lightning Network.
Do I need to do anything to switch to BOLT12?
No active migration is needed. As your wallet software updates to support BOLT12, you will gain the ability to create and pay offers alongside traditional invoices. Check your wallet’s release notes for BOLT12 support status.
Are BOLT12 payments faster than BOLT11?
The payment itself moves at the same speed — both use the same HTLC routing mechanism. BOLT12 adds one extra round trip before the payment is sent: your wallet sends an invoice request and the recipient’s node sends back an invoice, each as a small onion message over Lightning.
What is a Lightning Address?
A Lightning Address looks like an email address (user@domain.com) and is built on LNURL-pay. When someone pays your Lightning Address, their wallet contacts a web server at your domain to fetch a BOLT11 invoice. It is convenient but requires a web server and does not provide the privacy benefits of BOLT12 blinded paths.
Will BOLT11 stop working?
No. BOLT11 is deeply embedded in the Lightning ecosystem and will remain functional for the foreseeable future. BOLT12 is an addition, not a replacement. The Lightning specification is designed for backward compatibility — new features coexist with existing ones.
Related Articles
- Running a Lightning Node: Complete 2026 Guide
- Lightning Network Regulation: Access Challenges
- Lightning Troubleshooting: Failed Transactions



