Withdrawals Webhooks
When initiating a Lightning Network withdrawal
, you can register a webhook URL (via callback_url
parameter). The webhook URL will notify you if your payment succeeded or failed to reach its destination.
Withdrawals status
status = confirmed
- Lightning Transaction is settledstatus = error
- Lightning Transaction failed. Checkerror
value for more information.
POST callback_url | application/x-www-form-urlencoded
{
id: id,
type: 'ln',
amount: amount,
reference: reference, // LN payment request
processed_at: processed_at,
address: address, // LN node's pubkey destination
fee: fee,
status: status, // confirmed or failed
error: error, // if status = failed
hashed_order: hashed_order
}
OpenNode signs all 'withdrawals' events it sends with a 'hashed_order' field on the event payload before we send the event to your endpoint. This validates that the events were sent by OpenNode and not a third party.
You can verify the signatures by computing an HMAC with the SHA256 hash function. Use the 'api-key' used on the 'withdrawal' creation as the key, and the 'withdrawal' id as the message.
const crypto = require('crypto');
const received = withdrawal.hashed_order;
const calculated = crypto.createHmac('sha256', MY_API_KEY).update(withdrawal.id).digest('hex');
if (received === calculated) {
//Signature is valid
} else {
//Signature is invalid. Ignore.
}
Lightning errors
-
timeout
- The payment attempt failed because it didn't complete in time, often due to network delays.
-
no_route
- The payment couldn't be routed because there were no available paths with enough liquidity.
-
incorrect_payment_details
- The payment failed due to incorrect details, like a mismatched payment hash or amount.
Updated 4 months ago