Skip to content

feat: add getPaymentMethodsForContext to ramps-controller - #9801

Draft
saustrie-consensys wants to merge 3 commits into
mainfrom
saustrie/tram-3838-payment-methods-for-context
Draft

feat: add getPaymentMethodsForContext to ramps-controller#9801
saustrie-consensys wants to merge 3 commits into
mainfrom
saustrie/tram-3838-payment-methods-for-context

Conversation

@saustrie-consensys

@saustrie-consensys saustrie-consensys commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Explanation

Money account "Pay with" (MM Pay / Headless Buy) currently lists payment methods from the Buy flow's globally selected provider and token via useRampsPaymentMethods, while deposit quotes use getQuotes against the deposit asset with autoSelectProvider + restrictToKnownOrNativeProviders (and moneyHeadlessAllProviders allowlist pick). That mismatch surfaces Revolut Pay and similar Buy-only methods in Money, then fails quoting (TRAM-3838 / metamask-mobile#34109).

This PR adds RampsController.getPaymentMethodsForContext, a generic context-scoped API aligned with getQuotes provider options:

  • explicit providers
  • auto-select / restrictToKnownOrNativeProviders, including flag-off restricted/native resolution and flag-on supporting providers (intersect allowlist when non-empty for pick survivors)
  • selected-provider-only when resolution flags and providers are omitted (UB2)

By default the call is request-only and does not mutate Buy paymentMethods.data / .selected. Pass updateState: true only when a caller wants catalog write semantics. Fan-out results are deduped by payment-method id with conservative delay, best score, and deterministic name/icon merge. Partial provider failures still return methods from successful fetches.

Phase 1 of Option C only. Does not land getSmartSelectedQuote, applyQuoteContext, or full UB2 dumbification (tracked as TRAM-3856).

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Add a context-scoped payment-method API aligned with getQuotes provider
resolution so Headless/MM Pay can list request-eligible methods for a
deposit asset without mutating the Buy payment-method catalog (TRAM-3838).
@saustrie-consensys

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-previews

@saustrie-consensys
saustrie-consensys force-pushed the saustrie/tram-3838-payment-methods-for-context branch from 0a0be4b to 1bbcc4b Compare August 7, 2026 13:25
@saustrie-consensys
saustrie-consensys force-pushed the saustrie/tram-3838-payment-methods-for-context branch from 1bbcc4b to 8321b8c Compare August 7, 2026 13:25
@saustrie-consensys

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-previews

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.6.1-preview-6e2b5fe
@metamask-previews/accounts-controller@39.0.7-preview-6e2b5fe
@metamask-previews/address-book-controller@7.1.2-preview-6e2b5fe
@metamask-previews/ai-controllers@0.8.0-preview-6e2b5fe
@metamask-previews/analytics-controller@2.0.0-preview-6e2b5fe
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-6e2b5fe
@metamask-previews/announcement-controller@8.1.0-preview-6e2b5fe
@metamask-previews/app-metadata-controller@2.0.1-preview-6e2b5fe
@metamask-previews/approval-controller@9.0.2-preview-6e2b5fe
@metamask-previews/assets-controller@13.1.1-preview-6e2b5fe
@metamask-previews/assets-controllers@111.1.0-preview-6e2b5fe
@metamask-previews/authenticated-user-storage@3.0.1-preview-6e2b5fe
@metamask-previews/base-controller@9.1.0-preview-6e2b5fe
@metamask-previews/base-data-service@0.1.3-preview-6e2b5fe
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-6e2b5fe
@metamask-previews/bridge-controller@79.0.1-preview-6e2b5fe
@metamask-previews/bridge-status-controller@75.0.0-preview-6e2b5fe
@metamask-previews/build-utils@3.0.4-preview-6e2b5fe
@metamask-previews/chain-agnostic-permission@1.7.0-preview-6e2b5fe
@metamask-previews/chomp-api-service@4.0.0-preview-6e2b5fe
@metamask-previews/claims-controller@0.5.4-preview-6e2b5fe
@metamask-previews/client-controller@1.0.1-preview-6e2b5fe
@metamask-previews/client-utils@2.0.1-preview-6e2b5fe
@metamask-previews/compliance-controller@2.1.0-preview-6e2b5fe
@metamask-previews/composable-controller@12.0.1-preview-6e2b5fe
@metamask-previews/config-registry-controller@2.0.1-preview-6e2b5fe
@metamask-previews/connectivity-controller@0.3.0-preview-6e2b5fe
@metamask-previews/controller-utils@12.3.0-preview-6e2b5fe
@metamask-previews/core-backend@8.1.1-preview-6e2b5fe
@metamask-previews/delegation-controller@3.0.2-preview-6e2b5fe
@metamask-previews/earn-controller@12.2.4-preview-6e2b5fe
@metamask-previews/eip-5792-middleware@3.0.5-preview-6e2b5fe
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-6e2b5fe
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-6e2b5fe
@metamask-previews/ens-controller@19.1.6-preview-6e2b5fe
@metamask-previews/eth-block-tracker@15.0.1-preview-6e2b5fe
@metamask-previews/eth-json-rpc-middleware@24.0.0-preview-6e2b5fe
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-6e2b5fe
@metamask-previews/foundryup@1.0.1-preview-6e2b5fe
@metamask-previews/gas-fee-controller@26.3.1-preview-6e2b5fe
@metamask-previews/gator-permissions-controller@5.0.1-preview-6e2b5fe
@metamask-previews/geolocation-controller@1.0.0-preview-6e2b5fe
@metamask-previews/java-tron-up@1.0.0-preview-6e2b5fe
@metamask-previews/json-rpc-engine@10.5.0-preview-6e2b5fe
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-6e2b5fe
@metamask-previews/keyring-controller@27.1.1-preview-6e2b5fe
@metamask-previews/kyc-controller@0.0.0-preview-6e2b5fe
@metamask-previews/local-node-utils@1.0.0-preview-6e2b5fe
@metamask-previews/logging-controller@8.0.2-preview-6e2b5fe
@metamask-previews/message-manager@14.1.2-preview-6e2b5fe
@metamask-previews/messenger@2.0.0-preview-6e2b5fe
@metamask-previews/messenger-cli@0.2.0-preview-6e2b5fe
@metamask-previews/money-account-api-data-service@0.4.0-preview-6e2b5fe
@metamask-previews/money-account-balance-service@2.4.1-preview-6e2b5fe
@metamask-previews/money-account-controller@1.0.0-preview-6e2b5fe
@metamask-previews/money-account-upgrade-controller@3.0.1-preview-6e2b5fe
@metamask-previews/money-account-utils@1.1.0-preview-6e2b5fe
@metamask-previews/multichain-account-service@13.0.1-preview-6e2b5fe
@metamask-previews/multichain-api-middleware@4.0.2-preview-6e2b5fe
@metamask-previews/multichain-network-controller@3.2.3-preview-6e2b5fe
@metamask-previews/multichain-transactions-controller@7.1.2-preview-6e2b5fe
@metamask-previews/name-controller@9.1.2-preview-6e2b5fe
@metamask-previews/network-connection-banner-controller@0.1.2-preview-6e2b5fe
@metamask-previews/network-controller@35.0.1-preview-6e2b5fe
@metamask-previews/network-enablement-controller@6.0.3-preview-6e2b5fe
@metamask-previews/notification-services-controller@26.0.1-preview-6e2b5fe
@metamask-previews/passkey-controller@3.0.0-preview-6e2b5fe
@metamask-previews/permission-controller@13.1.1-preview-6e2b5fe
@metamask-previews/permission-log-controller@5.1.0-preview-6e2b5fe
@metamask-previews/perps-controller@11.0.0-preview-6e2b5fe
@metamask-previews/phishing-controller@17.3.1-preview-6e2b5fe
@metamask-previews/platform-api-docs@0.0.0-preview-6e2b5fe
@metamask-previews/polling-controller@16.0.9-preview-6e2b5fe
@metamask-previews/preferences-controller@23.1.0-preview-6e2b5fe
@metamask-previews/profile-metrics-controller@4.0.3-preview-6e2b5fe
@metamask-previews/profile-sync-controller@29.0.0-preview-6e2b5fe
@metamask-previews/ramps-controller@20.0.0-preview-6e2b5fe
@metamask-previews/rate-limit-controller@7.0.1-preview-6e2b5fe
@metamask-previews/react-data-query@0.2.2-preview-6e2b5fe
@metamask-previews/remote-feature-flag-controller@5.0.0-preview-6e2b5fe
@metamask-previews/sample-controllers@5.0.4-preview-6e2b5fe
@metamask-previews/seedless-onboarding-controller@10.1.1-preview-6e2b5fe
@metamask-previews/selected-network-controller@26.1.6-preview-6e2b5fe
@metamask-previews/sentinel-api-service@1.0.0-preview-6e2b5fe
@metamask-previews/shield-controller@5.1.3-preview-6e2b5fe
@metamask-previews/signature-controller@39.2.9-preview-6e2b5fe
@metamask-previews/smart-transactions-controller@25.1.0-preview-6e2b5fe
@metamask-previews/snap-account-service@2.1.2-preview-6e2b5fe
@metamask-previews/social-controllers@2.7.1-preview-6e2b5fe
@metamask-previews/solana-test-validator-up@1.0.0-preview-6e2b5fe
@metamask-previews/stellar-quickstart-up@0.0.0-preview-6e2b5fe
@metamask-previews/storage-service@1.0.2-preview-6e2b5fe
@metamask-previews/subscription-controller@6.2.2-preview-6e2b5fe
@metamask-previews/transaction-controller@69.5.1-preview-6e2b5fe
@metamask-previews/transaction-pay-controller@26.2.3-preview-6e2b5fe
@metamask-previews/user-operation-controller@41.2.8-preview-6e2b5fe
@metamask-previews/wallet@9.0.0-preview-6e2b5fe
@metamask-previews/wallet-cli@0.0.0-preview-6e2b5fe

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.6.1-preview-8321b8c
@metamask-previews/accounts-controller@39.0.7-preview-8321b8c
@metamask-previews/address-book-controller@7.1.2-preview-8321b8c
@metamask-previews/ai-controllers@0.8.0-preview-8321b8c
@metamask-previews/analytics-controller@2.0.0-preview-8321b8c
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-8321b8c
@metamask-previews/announcement-controller@8.1.0-preview-8321b8c
@metamask-previews/app-metadata-controller@2.0.1-preview-8321b8c
@metamask-previews/approval-controller@9.0.2-preview-8321b8c
@metamask-previews/assets-controller@13.1.1-preview-8321b8c
@metamask-previews/assets-controllers@111.1.0-preview-8321b8c
@metamask-previews/authenticated-user-storage@3.0.1-preview-8321b8c
@metamask-previews/base-controller@9.1.0-preview-8321b8c
@metamask-previews/base-data-service@0.1.3-preview-8321b8c
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-8321b8c
@metamask-previews/bridge-controller@79.0.1-preview-8321b8c
@metamask-previews/bridge-status-controller@75.0.0-preview-8321b8c
@metamask-previews/build-utils@3.0.4-preview-8321b8c
@metamask-previews/chain-agnostic-permission@1.7.0-preview-8321b8c
@metamask-previews/chomp-api-service@4.0.0-preview-8321b8c
@metamask-previews/claims-controller@0.5.4-preview-8321b8c
@metamask-previews/client-controller@1.0.1-preview-8321b8c
@metamask-previews/client-utils@2.0.1-preview-8321b8c
@metamask-previews/compliance-controller@2.1.0-preview-8321b8c
@metamask-previews/composable-controller@12.0.1-preview-8321b8c
@metamask-previews/config-registry-controller@2.0.1-preview-8321b8c
@metamask-previews/connectivity-controller@0.3.0-preview-8321b8c
@metamask-previews/controller-utils@12.3.0-preview-8321b8c
@metamask-previews/core-backend@8.1.1-preview-8321b8c
@metamask-previews/delegation-controller@3.0.2-preview-8321b8c
@metamask-previews/earn-controller@12.2.4-preview-8321b8c
@metamask-previews/eip-5792-middleware@3.0.5-preview-8321b8c
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-8321b8c
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-8321b8c
@metamask-previews/ens-controller@19.1.6-preview-8321b8c
@metamask-previews/eth-block-tracker@15.0.1-preview-8321b8c
@metamask-previews/eth-json-rpc-middleware@24.0.0-preview-8321b8c
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-8321b8c
@metamask-previews/foundryup@1.0.1-preview-8321b8c
@metamask-previews/gas-fee-controller@26.3.1-preview-8321b8c
@metamask-previews/gator-permissions-controller@5.0.1-preview-8321b8c
@metamask-previews/geolocation-controller@1.0.0-preview-8321b8c
@metamask-previews/java-tron-up@1.0.0-preview-8321b8c
@metamask-previews/json-rpc-engine@10.5.0-preview-8321b8c
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-8321b8c
@metamask-previews/keyring-controller@27.1.1-preview-8321b8c
@metamask-previews/kyc-controller@0.0.0-preview-8321b8c
@metamask-previews/local-node-utils@1.0.0-preview-8321b8c
@metamask-previews/logging-controller@8.0.2-preview-8321b8c
@metamask-previews/message-manager@14.1.2-preview-8321b8c
@metamask-previews/messenger@2.0.0-preview-8321b8c
@metamask-previews/messenger-cli@0.2.0-preview-8321b8c
@metamask-previews/money-account-api-data-service@0.4.0-preview-8321b8c
@metamask-previews/money-account-balance-service@2.4.1-preview-8321b8c
@metamask-previews/money-account-controller@1.0.0-preview-8321b8c
@metamask-previews/money-account-upgrade-controller@3.0.1-preview-8321b8c
@metamask-previews/money-account-utils@1.1.0-preview-8321b8c
@metamask-previews/multichain-account-service@13.0.1-preview-8321b8c
@metamask-previews/multichain-api-middleware@4.0.2-preview-8321b8c
@metamask-previews/multichain-network-controller@3.2.3-preview-8321b8c
@metamask-previews/multichain-transactions-controller@7.1.2-preview-8321b8c
@metamask-previews/name-controller@9.1.2-preview-8321b8c
@metamask-previews/network-connection-banner-controller@0.1.2-preview-8321b8c
@metamask-previews/network-controller@35.0.1-preview-8321b8c
@metamask-previews/network-enablement-controller@6.0.3-preview-8321b8c
@metamask-previews/notification-services-controller@26.0.1-preview-8321b8c
@metamask-previews/passkey-controller@3.0.0-preview-8321b8c
@metamask-previews/permission-controller@13.1.1-preview-8321b8c
@metamask-previews/permission-log-controller@5.1.0-preview-8321b8c
@metamask-previews/perps-controller@11.0.0-preview-8321b8c
@metamask-previews/phishing-controller@17.3.1-preview-8321b8c
@metamask-previews/platform-api-docs@0.0.0-preview-8321b8c
@metamask-previews/polling-controller@16.0.9-preview-8321b8c
@metamask-previews/preferences-controller@23.1.0-preview-8321b8c
@metamask-previews/profile-metrics-controller@4.0.3-preview-8321b8c
@metamask-previews/profile-sync-controller@29.0.0-preview-8321b8c
@metamask-previews/ramps-controller@20.0.0-preview-8321b8c
@metamask-previews/rate-limit-controller@7.0.1-preview-8321b8c
@metamask-previews/react-data-query@0.2.2-preview-8321b8c
@metamask-previews/remote-feature-flag-controller@5.0.0-preview-8321b8c
@metamask-previews/sample-controllers@5.0.4-preview-8321b8c
@metamask-previews/seedless-onboarding-controller@10.1.1-preview-8321b8c
@metamask-previews/selected-network-controller@26.1.6-preview-8321b8c
@metamask-previews/sentinel-api-service@1.0.0-preview-8321b8c
@metamask-previews/shield-controller@5.1.3-preview-8321b8c
@metamask-previews/signature-controller@39.2.9-preview-8321b8c
@metamask-previews/smart-transactions-controller@25.1.0-preview-8321b8c
@metamask-previews/snap-account-service@2.1.2-preview-8321b8c
@metamask-previews/social-controllers@2.7.1-preview-8321b8c
@metamask-previews/solana-test-validator-up@1.0.0-preview-8321b8c
@metamask-previews/stellar-quickstart-up@0.0.0-preview-8321b8c
@metamask-previews/storage-service@1.0.2-preview-8321b8c
@metamask-previews/subscription-controller@6.2.2-preview-8321b8c
@metamask-previews/transaction-controller@69.5.1-preview-8321b8c
@metamask-previews/transaction-pay-controller@26.2.3-preview-8321b8c
@metamask-previews/user-operation-controller@41.2.8-preview-8321b8c
@metamask-previews/wallet@9.0.0-preview-8321b8c
@metamask-previews/wallet-cli@0.0.0-preview-8321b8c

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant