Getting StartedHow it works
How It Works
Lightning Address is built on top of LNURL-pay, which itself is built on the Lightning Network. Here's how the pieces fit together.
The Flow
When someone sends Bitcoin to your Lightning Address:
- Parse the address — The sender's wallet splits
user@domain.cominto username and domain - Fetch metadata — The wallet makes an HTTP request to
https://domain.com/.well-known/lnurlp/user - Get payment params — The server responds with min/max amounts, currency, and supported features
- Generate invoice — The wallet requests an invoice for the specific amount
- Pay the invoice — The sender's wallet pays the Lightning invoice as normal
Sender Receiver's Server | | | GET /.well-known/lnurlp/user | |-------------------------------------->| | | | { callback, minSendable, ... } | |<--------------------------------------| | | | GET callback?amount=1000 | |-------------------------------------->| | | | { pr: "lnbc...", ... } | |<--------------------------------------| | | | Pay Lightning Invoice | |======================================>|Technical Details
The Well-Known Endpoint
When a wallet encounters user@domain.com, it constructs this URL:
https://domain.com/.well-known/lnurlp/userThe server responds with a JSON payload:
{ "callback": "https://domain.com/lnurlp/user/callback", "minSendable": 1000, "maxSendable": 100000000000, "metadata": "[[\"text/plain\",\"Pay user\"]]", "tag": "payRequest", "commentAllowed": 255}The Callback
When the sender specifies an amount, the wallet calls the callback URL:
GET https://domain.com/lnurlp/user/callback?amount=10000The server responds with a Lightning invoice:
{ "pr": "lnbc100n1p3...", "routes": []}Payment
The sender's wallet pays the invoice using standard Lightning Network protocols. The receiver gets the sats.
Why LNURL?
LNURL provides the foundation that makes Lightning Address possible:
- Dynamic invoices — Generate fresh invoices on demand
- Rich metadata — Support comments, currencies, and verification
- Standard protocol — Works across all compatible wallets
- Extensible — New capabilities via LUD specifications
Lightning Address (LUD-16) is essentially a human-friendly wrapper around LNURL-pay that uses DNS for discovery.