LIGHTNING-SENDINVOICE(7)

πŸ“¦
version 26.06.9 Β· 2 versions
, in nixpkgs unstable

πŸ¦‹ LIGHTNING-SENDINVOICE(7) β€” the sendinvoice glow-up

okay so bestie, welcome to the lightning-sendinvoice page (yes, it's a whole Β§7 manual page, we're fancy like that ✨). This is the one that goes and sends an actual invoice to the person who asked for one. It's giving "you asked, I delivered, now pay me" energy πŸ’…


🌸 NAME

sendinvoice β€” the command for sending an invoice for an offer, fr fr


✨ SYNOPSIS

sendinvoice invreq label [amount_msat] [timeout] [quantity]

πŸ’– DESCRIPTION

so the sendinvoice RPC command creates and sends an invoice to the issuer of an invoice_request, so they can pay it: lightning-invoicerequest(7). Iconic, honestly 🫢

If fetchinvoice-noconnect is not specified in the configuation, it will connect to the destination in the (currently common!) case where it cannot find a route which supports option_onion_messages. Like, it'll just brute-force the connection because finding a route is being difficult 😭

Now the args, one by one:

  • invreq (string) β€” the BOLT12 invoice_request string, and it begins with lnr1. That's your starting point, bestie, no cap.
  • label (string) β€” the unique label to use for this invoice. Unique. As in don't reuse it πŸ™ˆ
  • amount_msat (msat, optional) β€” Required if the offer doesn't specify an amount at all, or specifies it in a different currency. Otherwise you may set it (e.g. to provide a tip πŸ’Έ). The default is the amount contained in the offer (multiplied by quantity if any).
  • timeout (u32, optional) β€” seconds to wait for the offering node to pay the invoice or return an error. This will also be the timeout on the invoice that is sent. The default is 90 seconds ⏳
  • quantity (u64, optional) β€” quantity is is required if the offer specifies quantity_max, otherwise it is not allowed. Rules are rules πŸŽ€

πŸ‘‘ RETURN VALUE

on success you get an object back, containing all of this:

  • label (string) β€” unique label supplied at invoice creation.
  • description (string) β€” description used in the invoice.
  • payment_hash (hash) β€” the hash of the payment_preimage which will prove payment.
  • status (string) (one of "unpaid", "paid", "expired") β€” whether it's paid, unpaid or unpayable.
  • expires_at (u64) β€” UNIX timestamp of when it will become / became unpayable.
  • created_index (u64) β€” 1-based index indicating order this invoice was created in. (added v23.08)
  • amount_msat (msat, optional) β€” the amount required to pay this invoice.
  • bolt12 (string, optional) β€” the BOLT12 string.
  • updated_index (u64, optional) β€” 1-based index indicating order this invoice was changed (only present if it has changed since creation). (added v23.08)

And if status is "paid" πŸ‘€ β€” extra fields, because you ate:

  • pay_index (u64) β€” unique incrementing index for this payment.
  • amount_received_msat (msat) β€” the amount actually received (could be slightly greater than amount_msat, since clients may overpay β€” love a generous king πŸ’œ).
  • paid_at (u64) β€” UNIX timestamp of when it was paid.
  • payment_preimage (secret) β€” proof of payment.

πŸ’€ ERRORS

these error codes may occur, keep them in mind:

  • -1 β€” catchall nonspecific error.
  • 1002 β€” offer has expired.
  • 1003 β€” cannot find a route to the node making the offer.
  • 1004 β€” the node making the offer returned an error message.
  • 1005 β€” we timed out waiting for the invoice to be paid

🧚 AUTHOR

Rusty Russell rusty@rustcorp.com.au is mainly responsible. legend behavior tbh πŸ‘‘


🌈 SEE ALSO

lightning-fetchinvoice(7)


⭐ RESOURCES

Main web site: https://github.com/ElementsProject/lightning


πŸ“ EXAMPLES

Example 1 β€” okay so here's the whole thing, request then response:

Request:

$ lightning-cli sendinvoice -k "invreq"="lno1qgsq000bolt210002100021000210002100021000210002100021000210002100021000210002100021000210002100021000210002100021000210002100021000210002100021000" "label"="test sendinvoice"
{
  "id": "example:sendinvoice#1",
  "method": "sendinvoice",
  "params": {
    "invreq": "lno1qgsq000bolt210002100021000210002100021000210002100021000210002100021000210002100021000210002100021000210002100021000210002100021000210002100021000",
    "label": "test sendinvoice"
  }
}

Response:

{
  "label": "test sendinvoice",
  "bolt12": "lno1qgsq000boltsi100si100si100si100si100si100si100si100si100si100si100si100si100si100si100si100si100si100si100si100si100si100si100si100",
  "payment_hash": "paymenthashsdinvsi10si10si10si10si10si10si10si10si10si10si10si10",
  "amount_msat": 1000000,
  "status": "paid",
  "pay_index": 2,
  "amount_received_msat": 1000000,
  "paid_at": 1738500000,
  "payment_preimage": "paymentpreimagei010101010101010101010101010101010101010101010101",
  "description": "Simple test",
  "expires_at": 1739000000,
  "created_index": 4,
  "updated_index": 2
}

okay that's the whole page bestie, go get that invoice paid πŸ’– This was Core Lightning v26.06.9, page LIGHTNING-SENDINVOICE(7) β€” slay, bye πŸŽ€βœ¨

πŸ“¦ where this page comes from