Pay Lightning Invoice
Overview
Payment receivers generate a Lightning invoice. You can pay a valid invoice by providing the invoice string and optional parameters such as fee limits and additional metadata. Payments route over the Lightning Network and typically settle (or fail) immediately.
NoteCurrently, BitGo limits individual Lightning transactions to a value of $500 USD or less.
Prerequisites
- Get Started.
- Set Up Go Account.
- Sign a Lightning license (
custodyLightningWalletfor custody wallets andcustodyGoLightningfor Go Lighting) for your enterprise by contacting [email protected]. - Fund Go Account (
ofcbtc/ofctbtc), is using Go Lightning.
Recipe
Need just the steps? Expand the recipe below to get started:
1. Pay Invoice
Endpoint: Lightning - Pay a Lightning Invoice
export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="tlnbtc"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export ADDRESS="<DESTINATION_ADDRESS>"
export AMOUNT="<AMOUNT_IN_BASE_UNITS>"
export WALLET_PASSPHRASE="<YOUR_WALLET_PASSPHRASE>"
curl -X POST \
https://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/$WALLET_ID/lightning/payment \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d '{
"invoice": string, # Encoded payment request (required)
"passphrase": "'"$WALLET_PASSPHRASE"'", # Wallet passphrase (required)
"amountMsat": string, # Amount to pay in millisatoshis (optional, required for zero-amount invoices)
"feeLimitMsat": string, # Maximum fee to pay in millisatoshis
"feeLimitRatio": number, # Maximum fee expressed as a ratio of the payment amount
"sequenceId": string, # Custom identifier for tracking the payment
"comment": string # Additional note or comment for internal reference
}' const { BitGo } = require('bitgo');
const { getLightningWallet } = require('@bitgo/abstract-lightning');
const accessToken = '<YOUR_ACCESS_TOKEN>';
// Initialize the SDK
const bitgo = new BitGo({
accessToken: accessToken,
env: 'test',
customRootURI: 'https://app.bitgo-test.com',
});
// Enter your Lightning wallet
const walletId = '<YOUR_WALLET_ID>'
const existingWallet = await bitgo.coin('tlnbtc').wallets().get({ id: walletId });
const lightningWallet = getLightningWallet(existingWallet);
const payInvoice = await lightningWallet.payInvoice({
invoice: 'lnbtc...',
passphrase: 'your wallet passphrase',
});
console.dir(payInvoice);Step Result
{
"txRequestId": string,
"txRequestState": delivered,
"paymentStatus": {
"status": pending,
"paymentHash": string,
"paymentPreimage": string,
"amountMsat": string,
"feeMsat": string,
"failureReason": string
},
"transfer": {
"id": string,
"coin": string,
"wallet": string,
"walletType": string,
"enterprise": string,
"organization": string,
"txid": string,
"state": string,
"type": string,
"value": number,
"valueString": string,
"coinSpecific": {
"isOffchain": boolean,
"invoice": string
}
}
}See Also
Updated 11 days ago