Lightning Address
Set a Lightning Address on your .btc name. satoshi.btc resolves as a standard LNURL-pay endpoint. Compatible with any Lightning wallet that speaks LUD-06.
How it works
A Lightning Address (e.g. satoshi@getalby.com) is a human-readable pointer to a LNURL-pay endpoint. BNRP-IP-09 lets you attach one to your .btc name via an on-chain profile inscription. Resolvers and wallets can then use your .btc name directly as a payment target.
Add lnurlp to your BNRP profile record. Any Lightning Address format works: you@domain.com.
Any resolver hitting GET /.well-known/lnurlp/satoshi.btc gets a valid LNURL-pay response, proxied from your Lightning Address.
Any LNURL-compatible wallet can send to satoshi.btc directly. No clipboard, no QR scanning, no address lookup.
If no Lightning Address is set, the resolver returns a BIP-21 on-chain response using your taproot address. Payments still work.
Set your Lightning Address
Inscribe a BNRP profile op that includes the lnurlp field. This is additive — include only the fields you want to set.
{
"p": "bnrp",
"op": "profile",
"name": "satoshi.btc",
"v": 1,
"nonce": 3,
"records": {
"lnurlp": "satoshi@getalby.com", // ← Lightning Address
"btc_taproot": "bc1p..." // on-chain fallback
}
}
The lnurlp field accepts any valid Lightning Address in user@domain.com format. Raw LNURL bech32 strings are also accepted for wallets that don't support Lightning Addresses directly.
Resolve a name
API reference
BNRP exposes two LNURL-pay endpoints. The /.well-known/lnurlp/ path follows the Lightning Address standard (LUD-16). Any wallet that knows the user's .btc name can build the URL automatically.
| Endpoint | Description |
|---|---|
| GET /.well-known/lnurlp/{name} | Standard Lightning Address endpoint (LUD-16). Returns a LNURL-pay payRequest object. If a Lightning Address is set on the name, proxies to the upstream provider. If not, returns an on-chain BIP-21 fallback response. |
| GET /v1/lnurlp/{name} | BNRP alias — identical response. Includes a bnrp metadata block with the resolved name, owner, and inscription ID. |
| GET /v1/lnurlp/{name}/callback | LNURL-pay callback. Accepts ?amount= (millisats). Returns invoice or on-chain BIP-21 URI when no Lightning node is connected. |
# Lightning Address lookup for satoshi.btc
GET https://api.bnrp.name/.well-known/lnurlp/satoshi.btc
{
"status": "OK",
"tag": "payRequest",
"callback": "https://getalby.com/lnurlp/satoshi/callback",
"minSendable": 1000,
"maxSendable": 100000000000,
"metadata": "[[\"text/plain\",\"Pay satoshi@getalby.com\"]]",
"commentAllowed": 255,
"bnrp": {
"name": "satoshi.btc",
"owner": "bc1p...",
"inscription_id": "a8b2c1...",
"resolved_at": "2026-05-16T21:00:00.000Z"
}
}
{
"status": "OK",
"tag": "payRequest",
"callback": "https://api.bnrp.name/v1/lnurlp/satoshi.btc/callback",
"minSendable": 1000,
"maxSendable": 100000000000,
"metadata": "[[\"text/plain\",\"Pay to satoshi.btc via BNRP\"]]",
"bnrp": {
"name": "satoshi.btc",
"btc_taproot": "bc1p...",
"note": "No Lightning Address set — on-chain only"
}
}
Add to your app
Any app that wants to send Lightning payments to .btc names can use the BNRP LNURL endpoint directly. The base URL follows the Lightning Address convention, so existing LNURL libraries work without modification.
// Resolve any .btc name to its LNURL-pay endpoint async function resolveLightning(name) { const res = await fetch( `https://api.bnrp.name/.well-known/lnurlp/${encodeURIComponent(name)}` ); if (!res.ok) throw new Error('Name not found or no payment address set'); return res.json(); // Standard LNURL-pay payRequest object } // Get the invoice callback const payRequest = await resolveLightning('satoshi.btc'); const invoiceRes = await fetch( `${payRequest.callback}?amount=100000` // 100 sats in millisats ); const { pr } = await invoiceRes.json(); // BOLT-11 invoice string
import { resolve } from '@btc-native/bnrp'; const { addresses } = await resolve('satoshi.btc'); // addresses.lnurlp → "satoshi@getalby.com" // addresses.btc_taproot → "bc1p..." (on-chain fallback)
Set your Lightning Address
If you own a .btc name, add your Lightning Address through your profile editor. It takes one inscription — no service fees, no custody.
You need a Lightning Address from any provider. Any user@domain.com format works.
Cash App: enter your $cashtag — it auto-converts to cashtag@cash.app in the BNRP inscription.