Skip to content

fix(ramps-controller): compare internal order ids during order processing#9159

Merged
amitabh94 merged 2 commits into
mainfrom
fix/tram-3539-internal-order-id-comparison
Jun 16, 2026
Merged

fix(ramps-controller): compare internal order ids during order processing#9159
amitabh94 merged 2 commits into
mainfrom
fix/tram-3539-internal-order-id-comparison

Conversation

@amitabh94

@amitabh94 amitabh94 commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes duplicate fiat-on-ramp Activity rows (TRAM-3539) when redirect providers (Moonpay, PayPal, Coinbase, etc.) return a provider-native id in providerOrderId while the precreated stub used MetaMask's internal order code (c-{guid}).

Root cause: RampsController merged orders on providerOrderId. After precreate, stub and API/callback updates often disagree on that field even though they represent the same buy.

Fix: Introduce getInternalOrderCode() to derive the canonical code from order.id (/providers/{provider}/orders/{code}), then merge/heal in addOrder, getOrder, and addPrecreatedOrder on that key. Stored providerOrderId is normalized to the internal code so polling continues to use c-{guid} (supported by on-ramp-api → Moonpay /v1/transactions/ext/{code}).

Changes

  • Export getInternalOrderCode() from @metamask/ramps-controller
  • Merge orders by internal order code, not provider-native providerOrderId
  • Regression test: precreated stub + API order with mismatched providerOrderId → single merged row
  • Changelog entry under [Unreleased] → Fixed

Preview build

@metamask-previews/ramps-controller@14.2.0-preview-589a499

Related PRs

Out of scope

  • No on-ramp-api changes (BE already resolves Moonpay orders by internal c- code)
  • Mobile follow-up after merge: bump to released @metamask/ramps-controller (drop preview)

Test plan

  • yarn workspace @metamask/ramps-controller run jest packages/ramps-controller/src/RampsController.test.ts (285 tests)
  • Moonpay redirect buy on mobile preview PR: single Activity row after completion

Fixes TRAM-3539

@amitabh94 amitabh94 requested review from a team as code owners June 16, 2026 18:10
@amitabh94

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-previews

@github-actions

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.5.2-preview-589a499
@metamask-previews/accounts-controller@39.0.1-preview-589a499
@metamask-previews/address-book-controller@7.1.2-preview-589a499
@metamask-previews/ai-controllers@0.7.0-preview-589a499
@metamask-previews/analytics-controller@1.1.1-preview-589a499
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-589a499
@metamask-previews/announcement-controller@8.1.0-preview-589a499
@metamask-previews/app-metadata-controller@2.0.1-preview-589a499
@metamask-previews/approval-controller@9.0.2-preview-589a499
@metamask-previews/assets-controller@9.0.1-preview-589a499
@metamask-previews/assets-controllers@109.1.0-preview-589a499
@metamask-previews/authenticated-user-storage@2.0.0-preview-589a499
@metamask-previews/base-controller@9.1.0-preview-589a499
@metamask-previews/base-data-service@0.1.3-preview-589a499
@metamask-previews/bridge-controller@75.1.1-preview-589a499
@metamask-previews/bridge-status-controller@72.1.0-preview-589a499
@metamask-previews/build-utils@3.0.4-preview-589a499
@metamask-previews/chain-agnostic-permission@1.6.2-preview-589a499
@metamask-previews/chomp-api-service@3.1.0-preview-589a499
@metamask-previews/claims-controller@0.5.3-preview-589a499
@metamask-previews/client-controller@1.0.1-preview-589a499
@metamask-previews/compliance-controller@2.1.0-preview-589a499
@metamask-previews/composable-controller@12.0.1-preview-589a499
@metamask-previews/config-registry-controller@0.4.1-preview-589a499
@metamask-previews/connectivity-controller@0.2.0-preview-589a499
@metamask-previews/controller-utils@12.2.0-preview-589a499
@metamask-previews/core-backend@6.3.3-preview-589a499
@metamask-previews/delegation-controller@3.0.2-preview-589a499
@metamask-previews/earn-controller@12.2.0-preview-589a499
@metamask-previews/eip-5792-middleware@3.0.4-preview-589a499
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-589a499
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-589a499
@metamask-previews/ens-controller@19.1.3-preview-589a499
@metamask-previews/eth-block-tracker@15.0.1-preview-589a499
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-589a499
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-589a499
@metamask-previews/foundryup@1.0.1-preview-589a499
@metamask-previews/gas-fee-controller@26.2.2-preview-589a499
@metamask-previews/gator-permissions-controller@4.2.0-preview-589a499
@metamask-previews/geolocation-controller@0.1.3-preview-589a499
@metamask-previews/json-rpc-engine@10.5.0-preview-589a499
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-589a499
@metamask-previews/keyring-controller@27.1.0-preview-589a499
@metamask-previews/logging-controller@8.0.2-preview-589a499
@metamask-previews/message-manager@14.1.2-preview-589a499
@metamask-previews/messenger@1.2.0-preview-589a499
@metamask-previews/messenger-cli@0.2.0-preview-589a499
@metamask-previews/money-account-balance-service@2.0.0-preview-589a499
@metamask-previews/money-account-controller@0.3.3-preview-589a499
@metamask-previews/money-account-upgrade-controller@2.0.5-preview-589a499
@metamask-previews/multichain-account-service@10.0.3-preview-589a499
@metamask-previews/multichain-api-middleware@3.1.4-preview-589a499
@metamask-previews/multichain-network-controller@3.1.3-preview-589a499
@metamask-previews/multichain-transactions-controller@7.1.1-preview-589a499
@metamask-previews/name-controller@9.1.2-preview-589a499
@metamask-previews/network-controller@32.0.0-preview-589a499
@metamask-previews/network-enablement-controller@5.3.0-preview-589a499
@metamask-previews/notification-services-controller@24.1.3-preview-589a499
@metamask-previews/passkey-controller@2.0.1-preview-589a499
@metamask-previews/permission-controller@13.1.1-preview-589a499
@metamask-previews/permission-log-controller@5.1.0-preview-589a499
@metamask-previews/perps-controller@8.1.0-preview-589a499
@metamask-previews/phishing-controller@17.2.0-preview-589a499
@metamask-previews/polling-controller@16.0.6-preview-589a499
@metamask-previews/preferences-controller@23.1.0-preview-589a499
@metamask-previews/profile-metrics-controller@3.2.0-preview-589a499
@metamask-previews/profile-sync-controller@28.2.0-preview-589a499
@metamask-previews/ramps-controller@14.2.0-preview-589a499
@metamask-previews/rate-limit-controller@7.0.1-preview-589a499
@metamask-previews/react-data-query@0.2.1-preview-589a499
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-589a499
@metamask-previews/sample-controllers@5.0.1-preview-589a499
@metamask-previews/seedless-onboarding-controller@10.0.2-preview-589a499
@metamask-previews/selected-network-controller@26.1.3-preview-589a499
@metamask-previews/shield-controller@5.1.2-preview-589a499
@metamask-previews/signature-controller@39.2.5-preview-589a499
@metamask-previews/smart-transactions-controller@24.2.1-preview-589a499
@metamask-previews/snap-account-service@0.3.1-preview-589a499
@metamask-previews/social-controllers@2.3.0-preview-589a499
@metamask-previews/storage-service@1.0.2-preview-589a499
@metamask-previews/subscription-controller@6.2.0-preview-589a499
@metamask-previews/transaction-controller@68.0.0-preview-589a499
@metamask-previews/transaction-pay-controller@23.8.0-preview-589a499
@metamask-previews/user-operation-controller@41.2.4-preview-589a499
@metamask-previews/wallet@3.0.0-preview-589a499
@metamask-previews/wallet-cli@0.0.0-preview-589a499

@amitabh94 amitabh94 added this pull request to the merge queue Jun 16, 2026
Merged via the queue into main with commit 9a9df94 Jun 16, 2026
379 checks passed
@amitabh94 amitabh94 deleted the fix/tram-3539-internal-order-id-comparison branch June 16, 2026 21:50
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.

2 participants