From e3cc2313cfa30c0ed111cd2085475f5d93272b41 Mon Sep 17 00:00:00 2001 From: Ross Savage Date: Sat, 7 Jun 2025 20:18:21 +0200 Subject: [PATCH] Add BOLT12 payer note --- examples/breez-nodeless-llms/breez-nodeless-dart-llms.md | 3 ++- .../breez-nodeless-llms/breez-nodeless-python-llms.md | 4 +++- .../breez-nodeless-reactnative-llms.md | 4 +++- examples/breez-nodeless-llms/breez-nodeless-rust-llms.md | 8 ++++++++ examples/breez-nodeless-llms/breez-nodeless-wasm-llms.md | 4 +++- snippets/csharp/SendPayment.cs | 4 +++- snippets/dart_snippets/lib/send_payment.dart | 7 ++++++- snippets/go/send_payment.go | 2 ++ .../kotlin/com/example/kotlinmpplib/SendPayment.kt | 4 +++- snippets/python/src/send_payment.py | 4 +++- snippets/react-native/send_payment.ts | 4 +++- snippets/rust/src/non_bitcoin_asset.rs | 2 ++ snippets/rust/src/send_payment.rs | 3 +++ snippets/swift/BreezSDKExamples/Sources/SendPayment.swift | 4 +++- snippets/wasm/send_payment.ts | 4 +++- src/guide/send_payment.md | 2 +- 16 files changed, 51 insertions(+), 12 deletions(-) diff --git a/examples/breez-nodeless-llms/breez-nodeless-dart-llms.md b/examples/breez-nodeless-llms/breez-nodeless-dart-llms.md index 41e5923c..cc956aa3 100644 --- a/examples/breez-nodeless-llms/breez-nodeless-dart-llms.md +++ b/examples/breez-nodeless-llms/breez-nodeless-dart-llms.md @@ -292,8 +292,9 @@ Future prepareSendPaymentLightningBolt12() async { try { PayAmount_Bitcoin optionalAmount = PayAmount_Bitcoin(receiverAmountSat: BigInt.from(5000)); + String optionalComment = ""; PrepareSendResponse prepareSendResponse = await breezSDKLiquid.instance!.prepareSendPayment( - req: PrepareSendRequest(destination: destination, amount: optionalAmount), + req: PrepareSendRequest(destination: destination, amount: optionalAmount, comment: optionalComment), ); return prepareSendResponse; } catch (error) { diff --git a/examples/breez-nodeless-llms/breez-nodeless-python-llms.md b/examples/breez-nodeless-llms/breez-nodeless-python-llms.md index 1c82858c..0d383682 100644 --- a/examples/breez-nodeless-llms/breez-nodeless-python-llms.md +++ b/examples/breez-nodeless-llms/breez-nodeless-python-llms.md @@ -260,11 +260,13 @@ def prepare_send_payment_lightning_bolt12(sdk: BindingLiquidSdk): destination = "" try: optional_amount = PayAmount.BITCOIN(5_000) + optional_comment = "" prepare_response = sdk.prepare_send_payment( PrepareSendRequest( destination=destination, - amount=optional_amount + amount=optional_amount, + comment=optional_comment ) ) diff --git a/examples/breez-nodeless-llms/breez-nodeless-reactnative-llms.md b/examples/breez-nodeless-llms/breez-nodeless-reactnative-llms.md index ae26caa6..5592ae2f 100644 --- a/examples/breez-nodeless-llms/breez-nodeless-reactnative-llms.md +++ b/examples/breez-nodeless-llms/breez-nodeless-reactnative-llms.md @@ -1205,10 +1205,12 @@ const prepareSendPaymentLightningBolt12 = async () => { type: PayAmountVariant.BITCOIN, receiverAmountSat: 5_000 } + const optionalComment = '' const prepareResponse = await prepareSendPayment({ destination: '', - amount: optionalAmount + amount: optionalAmount, + comment: optionalComment }) return prepareResponse diff --git a/examples/breez-nodeless-llms/breez-nodeless-rust-llms.md b/examples/breez-nodeless-llms/breez-nodeless-rust-llms.md index b50b2d16..f6bfbaf1 100644 --- a/examples/breez-nodeless-llms/breez-nodeless-rust-llms.md +++ b/examples/breez-nodeless-llms/breez-nodeless-rust-llms.md @@ -230,6 +230,7 @@ async fn prepare_send_payment_lightning_bolt11(sdk: Arc) -> Result<() .prepare_send_payment(&PrepareSendRequest { destination: "".to_string(), amount: None, + comment: None, }) .await?; @@ -245,10 +246,12 @@ async fn prepare_send_payment_lightning_bolt12(sdk: Arc) -> Result<() let optional_amount = Some(PayAmount::Bitcoin { receiver_amount_sat: 5_000, }); + let optional_comment = Some("".to_string()); let prepare_response = sdk .prepare_send_payment(&PrepareSendRequest { destination: "".to_string(), amount: optional_amount, + comment: optional_comment, }) .await?; @@ -268,6 +271,7 @@ async fn prepare_send_payment_liquid(sdk: Arc) -> Result<()> { .prepare_send_payment(&PrepareSendRequest { destination: "".to_string(), amount: optional_amount, + comment: None, }) .await?; @@ -285,6 +289,7 @@ async fn prepare_send_payment_liquid_drain(sdk: Arc) -> Result<()> { .prepare_send_payment(&PrepareSendRequest { destination: "".to_string(), amount: optional_amount, + comment: None, }) .await?; @@ -723,6 +728,7 @@ async fn prepare_send_payment_asset(sdk: Arc) -> Result<()> { .prepare_send_payment(&PrepareSendRequest { destination: "".to_string(), amount: optional_amount, + comment: None, }) .await?; @@ -1084,6 +1090,7 @@ async fn main() -> Result<()> { let prepare_response = sdk.prepare_send_payment(&PrepareSendRequest { destination, amount, + comment: None, }).await?; // Send payment @@ -1304,6 +1311,7 @@ async fn safe_payment(sdk: Arc, destination: String, amount_sat: u64, let prepare_response = sdk.prepare_send_payment(&PrepareSendRequest { destination, amount: Some(PayAmount::Bitcoin { receiver_amount_sat: amount_sat }), + comment: None, }).await?; // Check if fees are acceptable diff --git a/examples/breez-nodeless-llms/breez-nodeless-wasm-llms.md b/examples/breez-nodeless-llms/breez-nodeless-wasm-llms.md index 843aa8c4..9cc04be0 100644 --- a/examples/breez-nodeless-llms/breez-nodeless-wasm-llms.md +++ b/examples/breez-nodeless-llms/breez-nodeless-wasm-llms.md @@ -247,10 +247,12 @@ const prepareSendPaymentLightningBolt12 = async (sdk) => { type: 'bitcoin', receiverAmountSat: 5_000 }; + const optionalComment = '' const prepareResponse = await sdk.prepareSendPayment({ destination: '', - amount: optionalAmount + amount: optionalAmount, + comment: optionalComment }); return prepareResponse; diff --git a/snippets/csharp/SendPayment.cs b/snippets/csharp/SendPayment.cs index 22001cbb..cb623f2a 100644 --- a/snippets/csharp/SendPayment.cs +++ b/snippets/csharp/SendPayment.cs @@ -30,7 +30,9 @@ public void PrepareSendPaymentLightningBolt12(BindingLiquidSdk sdk) try { var optionalAmount = new PayAmount.Bitcoin(5000); - var prepareResponse = sdk.PrepareSendPayment(new PrepareSendRequest(destination, optionalAmount)); + var optionalComment = ""; + var prepareRequest = new PrepareSendRequest(destination, optionalAmount, optionalComment); + var prepareResponse = sdk.PrepareSendPayment(prepareRequest); } catch (Exception) { diff --git a/snippets/dart_snippets/lib/send_payment.dart b/snippets/dart_snippets/lib/send_payment.dart index 8926df57..d56fa857 100644 --- a/snippets/dart_snippets/lib/send_payment.dart +++ b/snippets/dart_snippets/lib/send_payment.dart @@ -19,8 +19,13 @@ Future prepareSendPaymentLightningBolt12() async { // ANCHOR: prepare-send-payment-lightning-bolt12 // Set the bolt12 offer you wish to pay PayAmount_Bitcoin optionalAmount = PayAmount_Bitcoin(receiverAmountSat: 5000 as BigInt); + String optionalComment = ""; PrepareSendResponse prepareSendResponse = await breezSDKLiquid.instance!.prepareSendPayment( - req: PrepareSendRequest(destination: "", amount: optionalAmount), + req: PrepareSendRequest( + destination: "", + amount: optionalAmount, + comment: optionalComment + ), ); // ANCHOR_END: prepare-send-payment-lightning-bolt12 return prepareSendResponse; diff --git a/snippets/go/send_payment.go b/snippets/go/send_payment.go index 5fc477e4..7e4f45d0 100644 --- a/snippets/go/send_payment.go +++ b/snippets/go/send_payment.go @@ -31,9 +31,11 @@ func PrepareSendPaymentLightningBolt12(sdk *breez_sdk_liquid.BindingLiquidSdk) { var optionalAmount breez_sdk_liquid.PayAmount = breez_sdk_liquid.PayAmountBitcoin{ ReceiverAmountSat: uint64(5_000), } + optionalComment := "" prepareRequest := breez_sdk_liquid.PrepareSendRequest{ Destination: destination, Amount: &optionalAmount, + Comment: &optionalComment, } prepareResponse, err := sdk.PrepareSendPayment(prepareRequest) if err != nil { diff --git a/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/SendPayment.kt b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/SendPayment.kt index f2c691d0..86e0798a 100644 --- a/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/SendPayment.kt +++ b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/SendPayment.kt @@ -25,7 +25,9 @@ class SendPayment { val destination = "" try { val optionalAmount = PayAmount.Bitcoin(5_000.toULong()) - val prepareResponse = sdk.prepareSendPayment(PrepareSendRequest(destination, optionalAmount)) + val optionalComment = "" + val prepareRequest = PrepareSendRequest(destination, optionalAmount, optionalComment) + val prepareResponse = sdk.prepareSendPayment(prepareRequest) } catch (e: Exception) { // handle error } diff --git a/snippets/python/src/send_payment.py b/snippets/python/src/send_payment.py index cfbe5d90..dd50254a 100644 --- a/snippets/python/src/send_payment.py +++ b/snippets/python/src/send_payment.py @@ -28,11 +28,13 @@ def prepare_send_payment_lightning_bolt12(sdk: BindingLiquidSdk): destination = "" try: optional_amount = PayAmount.BITCOIN(5_000) + optional_comment = "" prepare_response = sdk.prepare_send_payment( PrepareSendRequest( destination=destination, - amount=optional_amount + amount=optional_amount, + comment=optional_comment ) ) diff --git a/snippets/react-native/send_payment.ts b/snippets/react-native/send_payment.ts index bba5b82b..235bd587 100644 --- a/snippets/react-native/send_payment.ts +++ b/snippets/react-native/send_payment.ts @@ -26,10 +26,12 @@ const examplePrepareSendPaymentLightningBolt12 = async () => { type: PayAmountVariant.BITCOIN, receiverAmountSat: 5_000 } + const optionalComment = '' const prepareResponse = await prepareSendPayment({ destination: '', - amount: optionalAmount + amount: optionalAmount, + comment: optionalComment }) // ANCHOR_END: prepare-send-payment-lightning-bolt12 } diff --git a/snippets/rust/src/non_bitcoin_asset.rs b/snippets/rust/src/non_bitcoin_asset.rs index 55efc260..d88b07f1 100644 --- a/snippets/rust/src/non_bitcoin_asset.rs +++ b/snippets/rust/src/non_bitcoin_asset.rs @@ -43,6 +43,7 @@ async fn prepare_send_payment_asset(sdk: Arc) -> Result<()> { .prepare_send_payment(&PrepareSendRequest { destination, amount: optional_amount, + comment: None, }) .await?; @@ -67,6 +68,7 @@ async fn prepare_send_payment_asset_fees(sdk: Arc) -> Result<()> { .prepare_send_payment(&PrepareSendRequest { destination, amount: optional_amount, + comment: None, }) .await?; diff --git a/snippets/rust/src/send_payment.rs b/snippets/rust/src/send_payment.rs index 5f3222a3..01f0a40f 100644 --- a/snippets/rust/src/send_payment.rs +++ b/snippets/rust/src/send_payment.rs @@ -11,6 +11,7 @@ async fn prepare_send_payment_lightning_bolt11(sdk: Arc) -> Result<() .prepare_send_payment(&PrepareSendRequest { destination: "".to_string(), amount: None, + comment: None, }) .await?; @@ -27,10 +28,12 @@ async fn prepare_send_payment_lightning_bolt12(sdk: Arc) -> Result<() let optional_amount = Some(PayAmount::Bitcoin { receiver_amount_sat: 5_000, }); + let optional_comment = Some("".to_string()); let prepare_response = sdk .prepare_send_payment(&PrepareSendRequest { destination: "".to_string(), amount: optional_amount, + comment: optional_comment, }) .await?; // ANCHOR_END: prepare-send-payment-lightning-bolt12 diff --git a/snippets/swift/BreezSDKExamples/Sources/SendPayment.swift b/snippets/swift/BreezSDKExamples/Sources/SendPayment.swift index b1e58e89..1db45ba4 100644 --- a/snippets/swift/BreezSDKExamples/Sources/SendPayment.swift +++ b/snippets/swift/BreezSDKExamples/Sources/SendPayment.swift @@ -19,10 +19,12 @@ func prepareSendPaymentLightningBolt12(sdk: BindingLiquidSdk) -> PrepareSendResp // ANCHOR: prepare-send-payment-lightning-bolt12 // Set the bolt12 offer you wish to pay let optionalAmount = PayAmount.bitcoin(receiverAmountSat: 5_000) + let optionalComment = "" let prepareResponse = try? sdk .prepareSendPayment(req: PrepareSendRequest ( destination: "", - amount: optionalAmount + amount: optionalAmount, + comment: optionalComment )) // ANCHOR_END: prepare-send-payment-lightning-bolt12 return prepareResponse diff --git a/snippets/wasm/send_payment.ts b/snippets/wasm/send_payment.ts index 35279a77..b01a827c 100644 --- a/snippets/wasm/send_payment.ts +++ b/snippets/wasm/send_payment.ts @@ -24,10 +24,12 @@ const examplePrepareSendPaymentLightningBolt12 = async (sdk: BindingLiquidSdk) = type: 'bitcoin', receiverAmountSat: 5_000 } + const optionalComment = '' const prepareResponse = await sdk.prepareSendPayment({ destination: '', - amount: optionalAmount + amount: optionalAmount, + comment: optionalComment }) // ANCHOR_END: prepare-send-payment-lightning-bolt12 } diff --git a/src/guide/send_payment.md b/src/guide/send_payment.md index 62949b66..e35c16e6 100644 --- a/src/guide/send_payment.md +++ b/src/guide/send_payment.md @@ -104,7 +104,7 @@ The SDK will also validate that the amount is within the send lightning limits o #### BOLT12 offer -Payments to a BOLT12 offer can be done in a similar way. However, when paying to a BOLT12 offer, the SDK's prepare request **must** include an amount. +Payments to a BOLT12 offer can be done in a similar way. However, when paying to a BOLT12 offer, the SDK's prepare request **must** include an amount. The payment can also include an optional `comment`, which will be included in the invoice as a payer note.
Rust