LIGHTNING-WAITSENDPAY(7)
========================
:doctype: manpage

NAME
----
lightning-waitsendpay - Command for sending a payment via a route.

SYNOPSIS
--------
*waitsendpay* 'payment_hash' ['timeout']

DESCRIPTION
-----------

The *waitsendpay* RPC command polls or waits for the status of
an outgoing payment that was initiated by a previous *sendpay*
invocation.

Optionally the client may provide a 'timeout', an integer in
seconds, for this RPC command to return.
If the 'timeout' is provided and the given amount of time
passes without the payment definitely succeeding or definitely
failing, this command returns with a 200 error code (payment
still in progress).
If 'timeout' is not provided this call will wait indefinitely.

Indicating a 'timeout' of 0 effectively makes this call a
pollable query of the status of the payment.

If the payment completed with success, this command returns
with success.
Otherwise, if the payment completed with failure, this command
returns an error.

RETURN VALUE
------------

On success, an object similar to the output of *listpayments* will
be returned.
This object will have a 'status' field that is the
string '"complete"'.

On error, if the error occurred from a node other than the final
destination, the route table will be updated so that getroute(7)
should return an alternate route (if any).  An error from the final
destination implies the payment should not be retried.

The following error codes may occur:

* -1. Catchall nonspecific error.
* 200. Timed out before the payment could complete.
* 202. Unparseable onion reply. The 'data' field of the error
  will have an 'onionreply' field, a hex string representation
  of the raw onion reply.
* 203. Permanent failure at destination. The 'data' field of
  the error will be routing failure object.
* 204. Failure along route; retry a different route. The 'data'
  field of the error will be routing failure object.
* 208. A payment for 'payment_hash' was never made and there is
  nothing to wait for.
* 209. The payment already failed, but the reason for failure
  was not stored. This should only occur when querying failed
  payments on very old databases.

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
------
ZmnSCPxj <ZmnSCPxj@protonmail.com> is mainly responsible.

SEE ALSO
--------
lightning-sendpay(7), lightning-pay(7).

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