2019-08-31 14:30:56 +02:00
lightning-invoice -- Command for accepting payments
===================================================
2019-08-10 01:54:18 +02:00
SYNOPSIS
--------
2022-11-10 20:44:56 -05:00
**invoice** * amount\_msat * * label * * description * [*expiry*]
2022-03-24 10:27:20 +10:30
[*fallbacks*] [*preimage*] [*exposeprivatechannels*] [*cltv*] [*deschashonly*]
2019-08-10 01:54:18 +02:00
DESCRIPTION
-----------
The **invoice ** RPC command creates the expectation of a payment of a
given amount of milli-satoshi: it returns a unique token which another
lightning daemon can use to pay this invoice. This token includes a
*route hint* description of an incoming channel with capacity to pay the
invoice, if any exists.
2022-11-10 20:44:56 -05:00
The * amount\_msat * parameter can be the string "any", which creates an
2020-08-25 10:35:46 +09:30
invoice that can be paid with any amount. Otherwise it is a positive value in
2019-08-10 01:54:18 +02:00
millisatoshi precision; it can be a whole number, or a whole number
ending in * msat * or * sat * , or a number with three decimal places ending
in * sat * , or a number with 1 to 11 decimal places ending in * btc * .
The * label * must be a unique string or number (which is treated as a
string, so "01" is different from "1"); it is never revealed to other
nodes on the lightning network, but it can be used to query the status
of this invoice.
The * description * is a short description of purpose of payment, e.g. *1
cup of coffee*. This value is encoded into the BOLT11 invoice and is
2022-03-24 10:27:20 +10:30
viewable by any node you send this invoice to (unless * deschashonly * is
true as described below). It must be UTF-8, and cannot use * \\u * JSON
escape codes.
2019-08-10 01:54:18 +02:00
2022-04-01 14:42:45 +10:30
The * expiry * is optionally the time the invoice is valid for, in seconds.
If no value is provided the default of 604800 (1 week) is used.
2019-08-10 01:54:18 +02:00
The * fallbacks * array is one or more fallback addresses to include in
the invoice (in order from most-preferred to least): note that these
arrays are not currently tracked to fulfill the invoice.
The * preimage * is a 64-digit hex string to be used as payment preimage
for the created invoice. By default, if unspecified, lightningd will
generate a secure pseudorandom preimage seeded from an appropriate
entropy source on your system. **IMPORTANT ** : if you specify the
*preimage*, you are responsible, to ensure appropriate care for
generating using a secure pseudorandom generator seeded with sufficient
entropy, and keeping the preimage secret. This parameter is an advanced
feature intended for use with cutting-edge cryptographic protocols and
should not be used unless explicitly needed.
If specified, * exposeprivatechannels * overrides the default route hint
logic, which will use unpublished channels only if there are no
published channels. If * true * unpublished channels are always considered
2019-12-17 16:48:13 +10:30
as a route hint candidate; if * false * , never. If it is a short channel id
2022-08-09 05:28:07 +09:30
(e.g. * 1x1x3 * ) or array of short channel ids (or a remote alias), only those specific channels
2020-04-08 17:10:58 +09:30
will be considered candidates, even if they are public or dead-ends.
2019-08-10 01:54:18 +02:00
The route hint is selected from the set of incoming channels of which:
2022-12-10 10:10:19 +02:00
peer's balance minus their reserves is at least * amount\_msat * , state is
2019-08-10 01:54:18 +02:00
normal, the peer is connected and not a dead end (i.e. has at least one
other public channel). The selection uses some randomness to prevent
probing, but favors channels that become more balanced after the
payment.
2022-11-10 20:44:56 -05:00
If specified, * cltv * sets the * min\_final\_cltv\_expiry * for the invoice.
2021-01-08 15:13:50 +10:30
Otherwise, it's set to the parameter **cltv-final ** .
2022-07-28 09:04:12 +02:00
If * deschashonly * is true (default false), then the bolt11 returned
2022-03-24 10:27:20 +10:30
contains a hash of the * description * , rather than the * description *
itself: this allows much longer descriptions, but they must be
communicated via some other mechanism.
2019-08-10 01:54:18 +02:00
RETURN VALUE
------------
2021-06-16 10:35:17 +09:30
[comment]: # (GENERATE-FROM-SCHEMA-START)
On success, an object is returned, containing:
2022-09-06 07:03:09 +09:30
2021-06-16 10:35:17 +09:30
- **bolt11** (string): the bolt11 string
2023-01-30 16:54:16 +10:30
- **payment\_hash** (hash): the hash of the * payment\_preimage * which will prove payment
- **payment\_secret** (secret): the * payment\_secret * to place in the onion
2022-09-06 07:15:06 +09:30
- **expires\_at** (u64): UNIX timestamp of when invoice expires
2021-06-16 10:35:17 +09:30
The following warnings may also be returned:
2022-09-06 07:03:09 +09:30
2022-09-06 07:15:06 +09:30
- **warning\_capacity**: even using all possible channels, there's not enough incoming capacity to pay this invoice.
- **warning\_offline**: there would be enough incoming capacity, but some channels are offline, so there isn't.
- **warning\_deadends**: there would be enough incoming capacity, but some channels are dead-ends (no other public channels from those peers), so there isn't.
- **warning\_private\_unused**: there would be enough incoming capacity, but some channels are unannounced and * exposeprivatechannels * is * false * , so there isn't.
- **warning\_mpp**: there is sufficient capacity, but not in a single channel, so the payer will have to use multi-part payments.
2021-09-03 19:37:59 +09:30
2021-06-16 10:35:17 +09:30
[comment]: # (GENERATE-FROM-SCHEMA-END)
2019-08-10 01:54:18 +02:00
On failure, an error is returned and no invoice is created. If the
lightning process fails before responding, the caller should use
2021-06-16 10:35:17 +09:30
lightning-listinvoices(7) to query whether this invoice was created or
2019-08-10 01:54:18 +02:00
not.
The following error codes may occur:
- -1: Catchall nonspecific error.
- 900: An invoice with the given * label * already exists.
- 901: An invoice with the given * preimage * already exists.
2019-12-17 16:48:13 +10:30
- 902: None of the specified * exposeprivatechannels * were usable.
2019-08-10 01:54:18 +02:00
AUTHOR
------
Rusty Russell <<rusty@rustcorp .com.au>> is mainly responsible.
SEE ALSO
--------
2021-06-16 10:35:17 +09:30
lightning-listinvoices(7), lightning-delinvoice(7), lightning-pay(7).
2019-08-10 01:54:18 +02:00
RESOURCES
---------
Main web site: <https://github.com/ElementsProject/lightning>
2020-08-25 11:03:16 +09:30
2023-01-30 16:54:16 +10:30
[comment]: # ( SHA256STAMP:095393c4a1050a9a458eba1033162e99283019329747a66b6461a5bb13fa7a2f)