Skip to content

Feature Parity 16: Send Advanced Fee Controls: Custom Fee and Subtract Fee #520

@johnny9

Description

@johnny9

Summary

Add manual/custom fee entry and include/subtract-fee behavior parity.

Complexity

  • XL

Dependencies

  • 10
  • 08
  • 02

Global Constraints

  • All implementation lives under gui-qml/.
  • No GUI runtime dependency on bitcoin/src/qt components. Reused logic must be moved/ported into gui-qml/.
  • Do not change interfaces::Wallet or interfaces::Node in this version.
  • Issue completion must satisfy DefinitionOfDone.md.

Scope

  • Replace hardcoded fee rate in WalletQmlModel::prepareTransaction with model-driven settings.
  • Add custom fee entry UI with validation and presets coexistence.
  • Expose subtract-fee-from-amount in single and multi-recipient flows.
  • Update review screen amounts (recipient totals, fee, effective send) correctly.

Acceptance Criteria (DoD-Aligned)

  1. User can switch between preset fee targets and custom fee input.
  2. Subtract fee from amount toggles correctly and matches transaction result.
  3. Validation handles insufficient funds, dust, and invalid fee input cleanly.

Required Tests

  • C++ unit tests: Unit tests for fee/subtract calculation and coin control mapping.
  • QML QTest: QTests for fee UI states and subtract toggle behavior.
  • Python E2E (qml/test/testbridge.h): E2E flow: send with custom fee + send with subtract-fee; validate review and broadcast outcomes.

Implementation Notes

  • Likely touches qml/models/sendrecipient.*, qml/models/walletqmlmodel.*, qml/components/FeeSelection.qml, send review pages.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions