Methods for working with BOLT 11 payment requests
npm install invoicesUtility methods for parsing Lightning Network BOLT 11 payment requests, as well
as encoding unsigned requests and signing payment requests.
Derive a payment request from request data.
{
encoded:
[mtokens]:
network:
words:
}
@throws
@returns
{
request:
}
Example:
``node
const {byteDecodeRequest} = require('invoices');
// Get a BOLT 11 payment request for this invoice data
const {request} = byteDecodeRequest({
encoded: paymentRequestDetailsHexString,
mtokens: '0',
network: 'bitcoin',
});
`
Derive bytes for payment request details
{
request:
}
@throws
@returns
{
encoded:
mtokens:
network:
words:
}
Example:
`node
const {byteEncodeRequest} = require('invoices');
// Get the bytes for a payment request
const {encoded, mtokens, network} = byteEncodeRequest({
request: bolt11EncodedPaymentRequestString,
});
`
Assemble a signed payment request
{
destination:
hrp:
signature:
tags: [
}
@throws
@returns
{
request:
}
Example:
`node
const {createSignedRequest} = require('invoices');
// Get hrp and signature from createUnsignedRequest
// Get signature via standard private key signing, or LND signBytes
const {request} = createSignedRequest({
destination: nodePublicKey,
hrp: amountAndNetworkHrp,
signature: signedPreimageHash,
tags: paymentRequestTags,
});
`
Create an unsigned payment request
{
[chain_addresses]: [
[cltv_delta]:
[created_at]:
[description]:
[description_hash]:
destination:
[expires_at]:
features: [{
bit:
}]
id:
[mtokens]:
network:
[payment]:
[routes]: [[{
[base_fee_mtokens]:
[channel]:
[cltv_delta]:
[fee_rate]:
public_key:
}]]
[tokens]:
}
@returns
{
hash:
hrp:
preimage:
tags: []
}
Example:
`node
const {createUnsignedRequest} = require('invoices');
const unsignedComponents = createUnsignedRequest({
destination: nodePublicKey,
id: rHashHexString,
network: 'bitcoin',
});
// Use createSignedRequest and a signature to create a complete request
`
Parse a BOLT 11 payment request into its component data
Note: either description or description_hash will be returned
{
request:
}
@throws
@returns
{
[chain_addresses]: [
cltv_delta:
created_at:
[description]:
[description_hash]:
destination:
expires_at:
features: [{
bit:
is_required:
type:
}]
id:
is_expired:
[mtokens]:
network:
[payment]:
[routes]: [[{
[base_fee_mtokens]:
[channel]:
[cltv_delta]:
[fee_rate]:
public_key:
}]]
[safe_tokens]:
[tokens]:
}
`node
const {parsePaymentRequest} = require('invoices');
// Decoded details of the payment request
const requestDetails = parsePaymentRequest({request: 'paymentRequestString'});
``