Skip to content
lncash
Menu

Guide

BOLT11 invoice, explained

The basic unit of Lightning payment requests. What's in one, why it expires, and when to use BOLT11 vs Lightning Address vs LNURL.

Published May 18, 2026 · Last updated May 18, 2026 · For developer, beginner

Affiliate disclosure. Some links on this page are partner links. LN Cash may earn a commission if you sign up. This does not change which tools we recommend — see our methodology and the full disclosure.

A BOLT11 invoice is the basic payment-request format on the Lightning Network. When you see a long string starting with lnbc..., that’s a BOLT11 invoice. It encodes everything a sender’s wallet needs to pay you.

What’s encoded in a BOLT11 invoice

A standard BOLT11 invoice contains:

  • Amount. In satoshis, optionally zero for “let the sender choose.”
  • Payment hash. The recipient’s node has a corresponding preimage; revealing it on settlement is what proves payment.
  • Recipient’s public key. Identifies the node that should receive the payment.
  • Routing hints. Optional hints that help the sender’s wallet find a path through the network.
  • Description. A free-text field, often a memo or order ID.
  • Expiry. How long the invoice is valid. Default is often 1 hour but varies by wallet.
  • Signature. Cryptographic proof that the invoice was generated by the holder of the recipient’s private key.

The encoding is bech32, the same scheme used for native SegWit Bitcoin addresses. That’s why BOLT11 invoices look the way they do.

When to use BOLT11 directly

BOLT11 is the right primitive when:

  • The sender and recipient are coordinating a specific transaction (an invoice for goods, a refund, a one-off transfer).
  • You need an exact amount and a recipient signature for accounting.
  • You’re building API-level integration where the wallet generates one invoice per payment.

BOLT11 is not the right primitive when:

How a BOLT11 invoice gets paid

  1. The recipient’s wallet generates the invoice — picks an amount, creates a payment hash, signs the whole thing.
  2. The recipient shares the invoice (QR, copy-paste, API).
  3. The sender’s wallet decodes the invoice and looks up a route to the recipient’s node.
  4. The sender pays. Along the route, each Lightning node forwards the payment in exchange for a small fee.
  5. When the payment reaches the recipient, their node reveals the preimage. The preimage propagates back, settling each hop.

The whole process takes a few hundred milliseconds on a healthy network. If the route fails, the sender’s wallet typically retries with a different path. If retries fail, the payment never settles — Lightning is atomic.

BOLT11 vs LNURL-pay vs Lightning Address

The simplest framing:

  • BOLT11 is a single payment request. Specific. Expiring.
  • LNURL-pay is a server endpoint that produces BOLT11 invoices on demand. Static. Long-lived.
  • Lightning Address is a human-readable wrapper around an LNURL-pay endpoint. Same as LNURL-pay, but looks like an email address.

A poster at a café would typically encode a Lightning Address (pay@cafe.example). When a customer scans it, their wallet resolves the address to an LNURL-pay endpoint, asks for an amount, receives a fresh BOLT11 invoice, and pays it. The customer never sees the BOLT11 invoice — but it’s there in the protocol path.

Things to know if you’re building with BOLT11

  • Idempotency. A BOLT11 invoice settles exactly once. The same payment hash can never settle twice.
  • Hold invoices. Variants exist where the recipient delays revealing the preimage; useful for escrow-like flows.
  • Zero-amount invoices. Some wallets generate a BOLT11 with no fixed amount, letting the sender choose. Treat as a request to receive, not an invoice.
  • Description hash. Long descriptions are hashed into the invoice rather than embedded. The sender sees the hash; the recipient provides the matching plaintext on settlement.

Tools we’re building

A read-only BOLT11 decoder is on our tools roadmap. Paste an invoice, see the decoded fields, verify the recipient and amount. Never pays anything. Get notified when it ships.

Next step

FAQ

Is BOLT11 the same as Lightning Address? +

No. BOLT11 is a payment-request format — a specific amount to a specific recipient with an expiry. Lightning Address is a human-readable wrapper around an LNURL-pay endpoint that generates fresh BOLT11 invoices on demand.

Why do BOLT11 invoices expire? +

They reserve a payment hash that the recipient's node is prepared to settle against. Holding that hash open indefinitely consumes resources and creates routing-stability problems. Typical expiry is 5–60 minutes.

Can I reuse a BOLT11 invoice? +

Technically yes — until it expires. In practice, generate a fresh invoice for each payment. For ongoing payment relationships (donations, recurring), use a Lightning Address or LNURL-pay endpoint, not a static BOLT11.