From c7981da65578c0c3a2ba4886ee522e7b0bf3ebe5 Mon Sep 17 00:00:00 2001 From: andyyan162 Date: Wed, 22 Oct 2025 13:36:45 -0400 Subject: [PATCH] fix: Payment gives NO_ROUTE error on passing the amountMsat Ticket: BTC-2517 --- .../abstract-lightning/src/wallet/lightning.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/modules/abstract-lightning/src/wallet/lightning.ts b/modules/abstract-lightning/src/wallet/lightning.ts index a0c0a28c8c..c332fce0d9 100644 --- a/modules/abstract-lightning/src/wallet/lightning.ts +++ b/modules/abstract-lightning/src/wallet/lightning.ts @@ -283,9 +283,22 @@ export class LightningWallet implements ILightningWallet { }, }; + // Convert BigInt values to strings for proper JSON serialization to backend + // This fixes NO_ROUTE errors caused by BigInt serialization issues + const encodedPaymentIntent = t.type({ intent: LightningPaymentIntent }).encode(paymentIntent); + const intentAny = encodedPaymentIntent.intent as any; + if (intentAny.signedRequest) { + if (intentAny.signedRequest.amountMsat !== undefined) { + intentAny.signedRequest.amountMsat = intentAny.signedRequest.amountMsat.toString(); + } + if (intentAny.signedRequest.feeLimitMsat !== undefined) { + intentAny.signedRequest.feeLimitMsat = intentAny.signedRequest.feeLimitMsat.toString(); + } + } + const transactionRequestCreate = (await this.wallet.bitgo .post(this.wallet.bitgo.url('/wallet/' + this.wallet.id() + '/txrequests', 2)) - .send(t.type({ intent: LightningPaymentIntent }).encode(paymentIntent)) + .send(encodedPaymentIntent) .result()) as TxRequest; if (transactionRequestCreate.state === 'pendingApproval') { @@ -338,7 +351,6 @@ export class LightningWallet implements ILightningWallet { onchainRequest: { recipients: params.recipients, satsPerVbyte: params.satsPerVbyte, - numBlocks: params.numBlocks, }, intentType: 'payment', },