Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
LIGHTNING-KEYSEND(7)					  LIGHTNING-KEYSEND(7)

NAME
       lightning-keysend -- Send funds to a node without an invoice

SYNOPSIS
       keysend	destination  amount_msat  [label]  [maxfeepercent] [retry_for]
       [maxdelay] [exemptfee] [routehints] [extratlvs] [maxfee]

DESCRIPTION
       The keysend RPC command attempts	to find	a route	to the given  destina-
       tion,  and  send	the specified amount to	it. Unlike the pay RPC command
       the keysend command does	not require an invoice,	instead	 it  uses  the
       destination node	ID, and	amount to find a route to the specified	node.

       In  order for the destination to	be able	to claim the payment, the pay-
       ment_key	is randomly generated by the sender and	included  in  the  en-
       crypted	payload	 for  the  destination.	 As a consequence there	is not
       proof-of-payment, like there is with an invoice where  the  payment_key
       is  generated on	the destination, and the only way sender could have it
       is by sending a payment.	Please ensure that this	matches	your  use-case
       when using keysend.

       When  using  $ lightning-cli, you may skip optional parameters by using
       null. Alternatively, use	-k option to provide parameters	by name.

         destination (pubkey):	The 33 byte, hex-encoded, node ID of the  node
	  that the payment should go to.
         amount_msat  (msat):	A  whole number, or a whole number with	suffix
	  msat or sat, or a three decimal point	number with suffix sat,	or  an
	  1 to 11 decimal point	number suffixed	by btc.
         label	(string, optional): Used to attach a label to payments,	and is
	  returned in lightning-listpays(7) and	lightning-listsendpays(7).
         maxfeepercent	 (number,  optional): Limits the money paid in fees as
	  percentage of	the total amount that is to be	transferred.  The  de-
	  fault	is 0.5.
         retry_for  (u32, optional): Until retry_for seconds passes, the com-
	  mand will keep finding routes	and retrying the payment.  However,  a
	  payment  may	be  delayed for	up to maxdelay blocks by another node;
	  clients should be prepared for this worst case. The  default	is  60
	  seconds.
         maxdelay  (u32,  optional):  Number of blocks	the payment may	be de-
	  layed.
         exemptfee (msat, optional): Used for tiny payments  which  would  be
	  dominated  by	the fee	leveraged by forwarding	nodes. Setting exempt-
	  fee allows the maxfeepercent check to	be skipped on  fees  that  are
	  smaller than exemptfee. The default is 5000 millisatoshi.
         routehints (array of arrays, optional):

	    (array of objects)
	    id	(pubkey)
	    scid (short_channel_id)
	    feebase (msat)
	    feeprop (u32)
	    expirydelta (u16)
         extratlvs (object, optional):	Dictionary of additional fields	to in-
	  sert into the	final tlv. The format is 'fieldnumber':	'hexstring'.:
         maxfee (msat,	optional): maxfee overrides both maxfeepercent and ex-
	  emptfee  defaults  (and if you specify maxfee	you cannot specify ei-
	  ther of those), and creates an absolute limit	on what	 fee  we  will
	  pay.	This  allows  you to implement your own	heuristics rather than
	  the primitive	ones used here.	(added v24.11)

RANDOMIZATION
       To protect user privacy,	the payment algorithm performs some randomiza-
       tion.

       1: Route	Randomization

       Route randomization means the payment algorithm does not	always use the
       lowest-fee or shortest route. This prevents some	highly-connected  node
       from learning all of the	user payments by reducing their	fees below the
       network average.

       2: Shadow Route

       Shadow  route  means  the  payment  algorithm will virtually extend the
       route by	adding delays and fees along it, making	it appear to  interme-
       diate nodes that	the route is longer than it actually is. This prevents
       intermediate  nodes  from  reliably  guessing  their  distance from the
       payee.

       Route randomization will	never exceed  maxfeepercent  of	 the  payment.
       Route  randomization and	shadow routing will not	take routes that would
       exceed maxdelay.

RETURN VALUE
       On success, an object is	returned, containing:

         payment_preimage (secret): The proof of payment: SHA256 of this pay-
	  ment_hash.
         payment_hash (hash): The hash	of  the	 payment_preimage  which  will
	  prove	payment.
         created_at  (number):	 The  UNIX timestamp showing when this payment
	  was initiated.
         parts	(u32): How many	attempts this took.
         amount_msat (msat): Amount the recipient received.
         amount_sent_msat (msat): Total amount	we sent	(including fees).
         status (string) (always "complete"): Status of payment.
         destination (pubkey, optional): The final destination	 of  the  pay-
	  ment.

       The following warnings may also be returned:

         warning_partial_completion:  Not  all	 parts of a multi-part payment
	  have completed.

       You can monitor the progress and	retries	of a payment using the	light-
       ning-paystatus(7) command.

ERRORS
       The following error codes may occur:

         -1: Catchall nonspecific error.
         203:	Permanent  failure at destination. The data field of the error
	  will be routing failure object.
         205: Unable to find a	route.
         206: Route too expensive. Either the fee or the needed  total	 lock-
	  time	for the	route exceeds your maxfeepercent or maxdelay settings,
	  respectively.	The data field of the error will indicate  the	actual
	  fee  as  well	 as  the feepercent percentage that the	fee has	of the
	  destination payment amount. It will also indicate the	 actual	 delay
	  along	the route.
         210: Payment timed out without a payment in progress.

       A routing failure object	has the	fields below:

       erring_index:  The  index of the	node along the route that reported the
       error. 0	for  the  local	 node,	1  for	the  first  hop,  and  so  on.
       erring_node:  The hex string of the pubkey id of	the node that reported
       the error.  erring_channel: The short channel ID	of  the	 channel  that
       has  the	 error,	 or  0:0:0  if	the destination	node raised the	error.
       failcode: The failure code, as per BOLT #4.   channel_update:  The  hex
       string  of  the	channel_update	message	received from the remote node.
       Only present if error is	from the remote	node and the failcode has  the
       UPDATE bit set, as per BOLT #4.

AUTHOR
       Christian Decker	<<decker@blockstream.com>> is mainly responsible.

SEE ALSO
       lightning-listpays(7),	  lightning-decodepay(7),    lightning-listin-
       voices(7), lightning-delinvoice(7),  lightning-getroute(7),  lightning-
       invoice(7)

RESOURCES
       Main web	site: <https://github.com/ElementsProject/lightning>

EXAMPLES
       Example 1:

       Request:

       $ lightning-cli keysend -k "destination"="nodeid030303030303030303030303030303030303030303030303030303030303" "amount_msat"=10000

       {
	 "id": "example:keysend#1",
	 "method": "keysend",
	 "params": {
	   "destination": "nodeid030303030303030303030303030303030303030303030303030303030303",
	   "amount_msat": 10000
	 }
       }

       Response:

       {
	 "destination":	"nodeid030303030303030303030303030303030303030303030303030303030303",
	 "payment_hash": "paymenthashkey01k101k101k101k101k101k101k101k101k101k101k101k101",
	 "created_at": 1738000000,
	 "parts": 1,
	 "amount_msat":	10000,
	 "amount_sent_msat": 10001,
	 "payment_preimage": "paymentpreimage1010101010101010101010101010101010101010101010101",
	 "status": "complete"
       }

       Example 2:

       Request:

       $ lightning-cli keysend -k "destination"="nodeid040404040404040404040404040404040404040404040404040404040404" "amount_msat"=10000000 "extratlvs"='{"133773310": "68656c6c6f776f726c64", "133773312": "66696c7465726d65"}'

       {
	 "id": "example:keysend#2",
	 "method": "keysend",
	 "params": {
	   "destination": "nodeid040404040404040404040404040404040404040404040404040404040404",
	   "amount_msat": 10000000,
	   "extratlvs":	{
	     "133773310": "68656c6c6f776f726c64",
	     "133773312": "66696c7465726d65"
	   }
	 }
       }

       Response:

       {
	 "destination":	"nodeid040404040404040404040404040404040404040404040404040404040404",
	 "payment_hash": "paymenthashkey02k201k201k201k201k201k201k201k201k201k201k201k201",
	 "created_at": 1738000000,
	 "parts": 1,
	 "amount_msat":	10000000,
	 "amount_sent_msat": 10000202,
	 "payment_preimage": "paymentpreimage2020202020202020202020202020202020202020202020202",
	 "status": "complete"
       }

       Example 3:

       Request:

       $ lightning-cli keysend -k "destination"="nodeid030303030303030303030303030303030303030303030303030303030303" "amount_msat"=10000 "routehints"='[[{"scid": "111x1x1", "id": "nodeid020202020202020202020202020202020202020202020202020202020202", "feebase": "1msat", "feeprop":	10, "expirydelta": 9}]]'

       {
	 "id": "example:keysend#3",
	 "method": "keysend",
	 "params": {
	   "destination": "nodeid030303030303030303030303030303030303030303030303030303030303",
	   "amount_msat": 10000,
	   "routehints": [
	     [
	       {
		 "scid": "111x1x1",
		 "id": "nodeid020202020202020202020202020202020202020202020202020202020202",
		 "feebase": "1msat",
		 "feeprop": 10,
		 "expirydelta":	9
	       }
	     ]
	   ]
	 }
       }

       Response:

       {
	 "destination":	"nodeid030303030303030303030303030303030303030303030303030303030303",
	 "payment_hash": "paymenthashkey03k301k301k301k301k301k301k301k301k301k301k301k301",
	 "created_at": 1738000000,
	 "parts": 2,
	 "amount_msat":	10000,
	 "amount_sent_msat": 10001,
	 "payment_preimage": "paymentpreimage3030303030303030303030303030303030303030303030303",
	 "status": "complete"
       }

Core Lightning v25.02					  LIGHTNING-KEYSEND(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=lightning-keysend&sektion=7&manpath=FreeBSD+Ports+14.3.quarterly>

home | help