2.7 KiB
The 'lnaddress' Recipient Type
An lnaddress
address is a
"lightning address" that resolves to the uri of
a payment options file which contains one or more payment destination addresses. For example, an lnaddress
of
"johndoe@example.com" would be converted to the uri "https://example.com/.well-known/lnurlp/johndoe/options" which MUST
contain an appropriately formatted JSON file.
Options File
The payment options file MUST contain a JSON object that holds exactly one options
array. The purpose of the payment
options file is to hold all the various payment receipt methods (and corresponding destination info for each) that a
user has available to them. It looks like this:
{
"status": "OK",
"options": [
{
"type": "lnurlp",
"callback": "https://example.com/v1/lnurlp/johndoe/pay",
"minSendable": 1000,
"maxSendable": 1000000000000,
"metadata": "[[\"text/plain\",\"Pay @johndoe on example wallet\"]]",
"commentAllowed": 500
},
{
"type": "keysend",
"pubkey": "03b6f613e88bd874177c28c6ad83b3baba43c4c656f56be1f8df84669556054b79",
"customData": [
{
"customKey": "906608",
"customValue": "01hIWsCYxdBJzlDvu5zpT3"
}
]
}
]
}
Options array
Each member of the options
array is a distinct payment method describing a payment destination for a user. The
properties available for an "option" depends on it's type
and should be taken from the definition of that type as it
exists in the primary documentation. Using the above example, we can see that there are two payment options defined
for user John Doe - lnurlp
and keysend
. The structure and properties for lnurlp
are defined
here, while the structure and properties for keysend
are defined
here.
Keysend option
The keysend
payment option has a type of keysend
and has the following properties:
pubkey
(required) - The public address of the lightning node that will receive the keysend payment.customData
- An array that contains two members:customKey
- A text value that defines a routing key for the receiving node.customValue
- A text value that defines a routing value for the receiving node.
The customData
array is optional for cases where the receiving node is a front-end for a multi-wallet
system. In this context, the customKey
will be what the receiving system looks up inside the payment in order to
retreive the customValue
which is a virtual wallet identifier.
BOLT12 option
Under development...