fix: handle dust change in max transfer to spending #748
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #745
This PR fixes the "insufficient funds" error that occurs when transferring the maximum balance to spending.
Description
When users tried to transfer their full on-chain balance to Lightning (spending), they would sometimes encounter an "insufficient funds" error even though they had enough sats. This happened because:
Fee estimation mismatch - The LSP fee was estimated using
maxSendableamount, but order creation uses a differentclientBalancevalue. SincelspBalancedepends onclientBalanceSat, this caused off-by-few-sats discrepancies.Dust change handling - When the remaining change after the transfer would be below the dust limit (546 sats), the transaction would fail because Bitcoin nodes reject dust outputs.
Changes:
sendAllwhen remaining change would be below dust limitReference: iOS fix PR #416
Preview
Screen_recording_20260129_085609.webm
not-dust.webm
QA Notes
1. MAX transfer to spending
2. Near-dust change scenarios
sendAllis used (no dust output created)3. Regression - Partial transfers