Deliver the approved saved payout destination UX and reusable typed service contracts for crypto addresses, bank cards and Russian personal accounts.
Approach
Implement Settings management and explicit saved/new/one-time payout preparation in Flutter. Separate canonical identity, metadata/execution revisions, ownership, provider bindings, contextual eligibility and saving outcomes. Provide an isolated customer-scoped demo service and immutable demo quote acceptance checks. Preserve the existing live provisioned payout path with explicit selection; fail closed for new destination types when live capabilities are unavailable.
Acceptance criteria
Settings save/rename/replace/remove, grouped search and recent ordering work without default destination selection.
One-time destinations never implicitly save; optional save failure/unknown outcomes and duplicate reuse have distinct recovery.
Creation outcomes replay created/duplicate deterministically; customer scopes and concurrency are tested.
Canonical asset/network/token identity, bank lookup/paste and card authorization recovery remain service-driven.
EN/RU, narrow layouts, full review details and privacy-safe semantic outcomes are validated.
Required frontend review/validation passes and scope/limitations/PR links are recorded.
Notes
Primary module payout-destinations; secondary modules shared wallet, analytics and consumer app. This implements UX and supporting contracts with process-local demo persistence, not a production registry, provider integration, ownership infrastructure, routing or execution engine. New live capabilities require BFF implementation; no fake persistence is used for authenticated live wallets. Base branch local-stand-52 depends on PRs #47 → #49 → #51 → #53. Preserve the unrelated notifications runtime change. No live payment, deployment or merge is authorized. Branch payout-destinations-54; project SXCHNGE (16); assignee tech. UX/contract and integration limitations: docs/ux/payout-destinations.md.
Delivery: #55. Implementation 24af794; delivery record bd67535. Required frontend checks passed; production registry/provider/acceptance implementation remains outside this UX/contracts delivery.
### Goal
Deliver the approved saved payout destination UX and reusable typed service contracts for crypto addresses, bank cards and Russian personal accounts.
### Approach
Implement Settings management and explicit saved/new/one-time payout preparation in Flutter. Separate canonical identity, metadata/execution revisions, ownership, provider bindings, contextual eligibility and saving outcomes. Provide an isolated customer-scoped demo service and immutable demo quote acceptance checks. Preserve the existing live provisioned payout path with explicit selection; fail closed for new destination types when live capabilities are unavailable.
### Acceptance criteria
- [x] Settings save/rename/replace/remove, grouped search and recent ordering work without default destination selection.
- [x] One-time destinations never implicitly save; optional save failure/unknown outcomes and duplicate reuse have distinct recovery.
- [x] Creation outcomes replay created/duplicate deterministically; customer scopes and concurrency are tested.
- [x] Metadata edits preserve execution quotes; removal/binding changes invalidate execution. Accepted history retains snapshots.
- [x] Canonical asset/network/token identity, bank lookup/paste and card authorization recovery remain service-driven.
- [x] EN/RU, narrow layouts, full review details and privacy-safe semantic outcomes are validated.
- [x] Required frontend review/validation passes and scope/limitations/PR links are recorded.
### Notes
Primary module payout-destinations; secondary modules shared wallet, analytics and consumer app. This implements UX and supporting contracts with process-local demo persistence, not a production registry, provider integration, ownership infrastructure, routing or execution engine. New live capabilities require BFF implementation; no fake persistence is used for authenticated live wallets. Base branch local-stand-52 depends on PRs #47 → #49 → #51 → #53. Preserve the unrelated notifications runtime change. No live payment, deployment or merge is authorized. Branch payout-destinations-54; project SXCHNGE (16); assignee tech. UX/contract and integration limitations: docs/ux/payout-destinations.md.
Delivery: https://git.sendico.io/tech/sxchnge/pulls/55. Implementation 24af794; delivery record bd67535. Required frontend checks passed; production registry/provider/acceptance implementation remains outside this UX/contracts delivery.
Delivered in PR #55: #55 (base local-stand-52). Implementation commit 24af794; delivery documentation follows on the same branch.
Implemented Settings save/details/rename/replacement/removal; explicit saved/new/one-time payout preparation; independent optional saving and recovery; canonical crypto identity; reviewed bank lookup/paste; separate metadata/execution revisions; stable created/duplicate outcomes; customer-scoped isolation; masked-card binding restoration and immutable demo quote/history snapshots. EN/RU and 320px/1.6× layouts covered.
Validation passed: formatting all 44 changed Dart files, flutter analyze in app/wallet/analytics, make test-frontend (all seven suites, 89 app tests), flutter build web and Wasm dry run. Browser smoke inspection verified bank form rendering, accessibility labels and keyboard focus. Earlier test/layout findings were fixed. An exploratory repository-root analysis reported unrelated standalone website Dart-context errors; required affected-package analyses are clean. No security scanner runs requested/performed.
Scope boundary: new destination persistence/captures/bindings are simulated and reset on reload. New live functionality requires the documented BFF registry, capability/directory/provider adapters and atomic acceptance contract. Existing provisioned live payout remains supported with explicit selection. No real financial operation, provider/routing implementation, deployment or merge performed. Full specification and review evidence: docs/ux/payout-destinations.md.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Goal
Deliver the approved saved payout destination UX and reusable typed service contracts for crypto addresses, bank cards and Russian personal accounts.
Approach
Implement Settings management and explicit saved/new/one-time payout preparation in Flutter. Separate canonical identity, metadata/execution revisions, ownership, provider bindings, contextual eligibility and saving outcomes. Provide an isolated customer-scoped demo service and immutable demo quote acceptance checks. Preserve the existing live provisioned payout path with explicit selection; fail closed for new destination types when live capabilities are unavailable.
Acceptance criteria
Notes
Primary module payout-destinations; secondary modules shared wallet, analytics and consumer app. This implements UX and supporting contracts with process-local demo persistence, not a production registry, provider integration, ownership infrastructure, routing or execution engine. New live capabilities require BFF implementation; no fake persistence is used for authenticated live wallets. Base branch local-stand-52 depends on PRs #47 → #49 → #51 → #53. Preserve the unrelated notifications runtime change. No live payment, deployment or merge is authorized. Branch payout-destinations-54; project SXCHNGE (16); assignee tech. UX/contract and integration limitations: docs/ux/payout-destinations.md.
Delivery: #55. Implementation 24af794; delivery record
bd67535. Required frontend checks passed; production registry/provider/acceptance implementation remains outside this UX/contracts delivery.Save and reuse customer payout destinationsto Add saved payout destination UX and service contractsDelivered in PR #55: #55 (base local-stand-52). Implementation commit 24af794; delivery documentation follows on the same branch.
Implemented Settings save/details/rename/replacement/removal; explicit saved/new/one-time payout preparation; independent optional saving and recovery; canonical crypto identity; reviewed bank lookup/paste; separate metadata/execution revisions; stable created/duplicate outcomes; customer-scoped isolation; masked-card binding restoration and immutable demo quote/history snapshots. EN/RU and 320px/1.6× layouts covered.
Validation passed: formatting all 44 changed Dart files, flutter analyze in app/wallet/analytics, make test-frontend (all seven suites, 89 app tests), flutter build web and Wasm dry run. Browser smoke inspection verified bank form rendering, accessibility labels and keyboard focus. Earlier test/layout findings were fixed. An exploratory repository-root analysis reported unrelated standalone website Dart-context errors; required affected-package analyses are clean. No security scanner runs requested/performed.
Scope boundary: new destination persistence/captures/bindings are simulated and reset on reload. New live functionality requires the documented BFF registry, capability/directory/provider adapters and atomic acceptance contract. Existing provisioned live payout remains supported with explicit selection. No real financial operation, provider/routing implementation, deployment or merge performed. Full specification and review evidence: docs/ux/payout-destinations.md.
Stack merge order: #47 → #49 → #51 → #53 → #55. Unrelated infra/local/notifications/runtime.yml edit remains outside task commits.