lightning-createinvoice – Low-level invoice creation


createinvoice invstring label preimage


The createinvoice RPC command signs and saves an invoice into the database.

The invstring parameter is of bolt11 form, but without the final signature appended. Minimal sanity checks are done. (Note: if experimental-offers is enabled, invstring can actually be an unsigned bolt12 invoice).

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 preimage is the preimage to supply upon successful payment of the invoice.


On success, an invoice object is returned, as per listinvoices(7).

On failure, an error is returned and no invoice is created. If the lightning process fails before responding, the caller should use lightning-listinvoices(7) to query whether this invoice was created or not.

The following error codes may occur:

  • -1: Catchall nonspecific error.

  • 900: An invoice with the given label already exists.


Rusty Russell <> is mainly responsible.


lightning-invoice(7), lightning-listinvoices(7), lightning-delinvoice(7), lightning-getroute(7), lightning-sendpay(7).


Main web site: