Overview
LNURL is a suite of protocols designed to improve the user experience of the Lightning Network by abstracting away the complexities of invoice generation and payment flows. Instead of requiring a fresh invoice for every payment, LNURL uses HTTP callbacks to coordinate payment details between sender and receiver dynamically.
Key LNURL Protocols
┌─────────────────────────────────────────────┐
│ LNURL Protocol Suite │
├──────────────┬──────────────────────────────┤
│ LNURL-pay │ Static payment links/QR │
│ LNURL-withdraw│ Pull payments, faucets │
│ LNURL-auth │ Passwordless login │
│ LNURL-channel│ Hosted channel requests │
└──────────────┴──────────────────────────────┘
- LNURL-pay: Allows a recipient to present a static QR code or link. When scanned, the payer's wallet contacts the recipient's server to fetch a fresh invoice. This solves the single-use invoice problem.
- LNURL-withdraw: Enables pull payments, where a service creates a withdrawal link that a user can redeem. Common in faucets, rewards, and point-of-sale refunds.
- LNURL-auth: Provides cryptographic authentication using Lightning keys, enabling passwordless login to websites and services.
Lightning Address
The Lightning Address protocol ([email protected] format) is built on top of LNURL-pay. It maps a human-readable email-like address to an LNURL-pay endpoint, making receiving Lightning payments as simple as sharing an email address.
How It Works
- A service encodes a URL as a bech32 LNURL string
- The user's wallet decodes the string and fetches the URL
- The server responds with payment parameters (min/max amount, description)
- The wallet generates the appropriate Lightning action (pay, withdraw, etc.)
Common Misconceptions
LNURL requires the recipient to run an always-online HTTP server, which makes it inherently less decentralized than raw Lightning invoices. Users should be aware that the server operator can potentially log metadata about payment requests.