Skip to content

feat(ramps-controller): read US bank deposit details from autoramps - #10878

Merged
saustrie-consensys merged 5 commits into
mainfrom
saustrie/ramps-us-bank-deposit-instructions
Oct 21, 2026
Merged

saustrie-consensys merged 5 commits into
mainfrom
saustrie/ramps-us-bank-deposit-instructions

Conversation

@saustrie-consensys

@saustrie-consensys saustrie-consensys commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Explanation

Mobile is moving the virtual bank account flow beyond Brazil. Autoramps can already be created for any fiat code (buildMusdAutorampRequest), but NeoBankService can only read PIX deposit details, so a US customer has no way to see the account they should send dollars to.

This PR adds a reader for the US rails MoonPay returns in deposit_rails:

  • extractUsBankDepositInstructions reads an ACH, Wire, RTP, or FedNow rail. All four share the same fields (recipient_name, routing_number, account_number, bank_name, plus optional bank_address and recipient_address). ACH is preferred when more than one is listed. Rails missing a required field are skipped.
  • NeoBankService.getDepositInstructions(autorampId) returns whichever rail the autoramp has, discriminated by type (Pix or UsBank), or null. It is exposed on the messenger. getPixDepositInstructions is unchanged.
  • mapNeoBankAutorampToRemoteSnapshot now fills depositRailsSummary.currency from the rail type (Pix to BRL, US rails to USD, SEPA to EUR). The field already existed on the type but was never set.

The new code is additive, so nothing breaks.

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

Note

Medium Risk
Changes deposit-rail parsing and persisted autoramp currency metadata used for VBA UI; mistakes could show wrong fiat labels or bank details, though behavior is additive and covered by new tests.

Overview
Extends neo-bank autoramp support so US virtual-bank customers can see where to send fiat, not only PIX.

NeoBankService adds getDepositInstructions (messenger action) and extractUsBankDepositInstructions, with types UsBankDepositInstructions, UsBankDepositRail, and AutorampDepositInstructions. The unified API returns PIX (type: 'Pix') or US bank details (type: 'UsBank' for ACH, Wire, RTP, FedNow), preferring ACH when several US rails exist. getPixDepositInstructions is unchanged.

Snapshot mapping fills depositRailsSummary.currency from the first complete rail (BRL / USD / EUR for SEPA). Incomplete PIX stubs—including empty instruction—no longer count as complete, so they cannot mislabel currency or mask a US rail.

Local state uses mergeDepositRailsSummary in applyAutorampRemoteStatus to keep a stored currency when a later remote snapshot omits it, while still accepting an explicit remote update.

Reviewed by Cursor Bugbot for commit 0534603. Bugbot is set up for automated code reviews on this repo. Configure here.

@saustrie-consensys

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@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@11.0.1-preview-c9f31ce
@metamask-previews/accounts-controller@40.1.0-preview-c9f31ce
@metamask-previews/address-book-controller@8.0.0-preview-c9f31ce
@metamask-previews/advanced-chart-core@1.0.0-preview-c9f31ce
@metamask-previews/ai-controllers@2.0.0-preview-c9f31ce
@metamask-previews/analytics-controller@4.0.0-preview-c9f31ce
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-c9f31ce
@metamask-previews/announcement-controller@9.0.0-preview-c9f31ce
@metamask-previews/app-metadata-controller@3.0.0-preview-c9f31ce
@metamask-previews/approval-controller@10.0.0-preview-c9f31ce
@metamask-previews/assets-controller@19.1.0-preview-c9f31ce
@metamask-previews/assets-controllers@112.1.2-preview-c9f31ce
@metamask-previews/authenticated-user-storage@4.1.0-preview-c9f31ce
@metamask-previews/base-controller@10.1.0-preview-c9f31ce
@metamask-previews/base-data-service@2.1.0-preview-c9f31ce
@metamask-previews/bitcoin-regtest-up@2.0.0-preview-c9f31ce
@metamask-previews/bridge-controller@82.0.3-preview-c9f31ce
@metamask-previews/bridge-status-controller@76.4.0-preview-c9f31ce
@metamask-previews/build-utils@4.0.0-preview-c9f31ce
@metamask-previews/chain-agnostic-permission@2.0.0-preview-c9f31ce
@metamask-previews/chomp-api-service@6.0.1-preview-c9f31ce
@metamask-previews/claims-controller@1.0.3-preview-c9f31ce
@metamask-previews/client-controller@2.0.0-preview-c9f31ce
@metamask-previews/client-utils@3.0.4-preview-c9f31ce
@metamask-previews/compliance-controller@3.0.0-preview-c9f31ce
@metamask-previews/composable-controller@13.0.0-preview-c9f31ce
@metamask-previews/config-registry-controller@5.0.0-preview-c9f31ce
@metamask-previews/connectivity-controller@1.0.0-preview-c9f31ce
@metamask-previews/controller-utils@13.0.0-preview-c9f31ce
@metamask-previews/core-backend@12.3.0-preview-c9f31ce
@metamask-previews/cryptography@1.1.2-preview-c9f31ce
@metamask-previews/delegation-controller@4.0.0-preview-c9f31ce
@metamask-previews/earn-controller@13.0.2-preview-c9f31ce
@metamask-previews/eip-5792-middleware@4.0.1-preview-c9f31ce
@metamask-previews/eip-7702-internal-rpc-middleware@1.0.0-preview-c9f31ce
@metamask-previews/eip1193-permission-middleware@3.0.0-preview-c9f31ce
@metamask-previews/eth-block-tracker@16.0.0-preview-c9f31ce
@metamask-previews/eth-json-rpc-middleware@25.0.0-preview-c9f31ce
@metamask-previews/eth-json-rpc-provider@7.0.0-preview-c9f31ce
@metamask-previews/foundryup@2.0.0-preview-c9f31ce
@metamask-previews/gas-fee-controller@27.0.0-preview-c9f31ce
@metamask-previews/gator-permissions-controller@6.0.1-preview-c9f31ce
@metamask-previews/geolocation-controller@2.0.0-preview-c9f31ce
@metamask-previews/java-tron-up@2.0.0-preview-c9f31ce
@metamask-previews/json-rpc-engine@11.0.0-preview-c9f31ce
@metamask-previews/json-rpc-middleware-stream@9.0.0-preview-c9f31ce
@metamask-previews/keyring-controller@28.2.0-preview-c9f31ce
@metamask-previews/kyc-controller@0.10.0-preview-c9f31ce
@metamask-previews/local-node-utils@2.0.0-preview-c9f31ce
@metamask-previews/logging-controller@10.0.0-preview-c9f31ce
@metamask-previews/message-manager@15.0.0-preview-c9f31ce
@metamask-previews/messenger@3.0.0-preview-c9f31ce
@metamask-previews/messenger-cli@1.0.0-preview-c9f31ce
@metamask-previews/money-account-api-data-service@2.2.0-preview-c9f31ce
@metamask-previews/money-account-balance-service@3.1.2-preview-c9f31ce
@metamask-previews/money-account-controller@2.0.0-preview-c9f31ce
@metamask-previews/money-account-mfa-whitelist@0.1.0-preview-c9f31ce
@metamask-previews/money-account-upgrade-controller@5.1.0-preview-c9f31ce
@metamask-previews/money-account-utils@2.1.0-preview-c9f31ce
@metamask-previews/multichain-account-service@14.1.0-preview-c9f31ce
@metamask-previews/multichain-api-middleware@5.0.0-preview-c9f31ce
@metamask-previews/multichain-network-controller@4.0.0-preview-c9f31ce
@metamask-previews/multichain-transactions-controller@8.0.0-preview-c9f31ce
@metamask-previews/name-controller@10.0.0-preview-c9f31ce
@metamask-previews/network-connection-banner-controller@1.0.0-preview-c9f31ce
@metamask-previews/network-controller@37.1.0-preview-c9f31ce
@metamask-previews/network-enablement-controller@7.0.2-preview-c9f31ce
@metamask-previews/notification-services-controller@29.0.3-preview-c9f31ce
@metamask-previews/passkey-controller@4.1.0-preview-c9f31ce
@metamask-previews/permission-controller@14.0.0-preview-c9f31ce
@metamask-previews/permission-log-controller@6.0.0-preview-c9f31ce
@metamask-previews/perps-controller@20.1.0-preview-c9f31ce
@metamask-previews/phishing-controller@18.2.1-preview-c9f31ce
@metamask-previews/platform-api-docs@0.2.1-preview-c9f31ce
@metamask-previews/polling-controller@17.0.0-preview-c9f31ce
@metamask-previews/preferences-controller@24.0.0-preview-c9f31ce
@metamask-previews/profile-controller@1.1.0-preview-c9f31ce
@metamask-previews/profile-metrics-controller@5.1.3-preview-c9f31ce
@metamask-previews/profile-sync-controller@34.0.3-preview-c9f31ce
@metamask-previews/ramps-controller@27.0.1-preview-c9f31ce
@metamask-previews/rate-limit-controller@8.0.0-preview-c9f31ce
@metamask-previews/react-data-query@2.0.0-preview-c9f31ce
@metamask-previews/remote-feature-flag-controller@7.0.0-preview-c9f31ce
@metamask-previews/sample-controllers@6.0.0-preview-c9f31ce
@metamask-previews/seedless-onboarding-controller@12.0.0-preview-c9f31ce
@metamask-previews/selected-network-controller@27.0.0-preview-c9f31ce
@metamask-previews/sentinel-api-service@2.1.0-preview-c9f31ce
@metamask-previews/shield-controller@7.0.4-preview-c9f31ce
@metamask-previews/signature-controller@40.0.0-preview-c9f31ce
@metamask-previews/smart-transactions-controller@27.1.0-preview-c9f31ce
@metamask-previews/snap-account-service@4.0.0-preview-c9f31ce
@metamask-previews/social-controllers@3.8.0-preview-c9f31ce
@metamask-previews/solana-test-validator-up@2.0.0-preview-c9f31ce
@metamask-previews/stellar-quickstart-up@0.0.0-preview-c9f31ce
@metamask-previews/storage-service@2.0.0-preview-c9f31ce
@metamask-previews/subscription-controller@14.0.0-preview-c9f31ce
@metamask-previews/transaction-controller@72.2.1-preview-c9f31ce
@metamask-previews/transaction-pay-controller@30.1.0-preview-c9f31ce
@metamask-previews/transaction-pay-middleware@0.0.0-preview-c9f31ce
@metamask-previews/user-operation-controller@42.0.1-preview-c9f31ce
@metamask-previews/utils@12.0.0-preview-c9f31ce
@metamask-previews/wallet@18.0.0-preview-c9f31ce
@metamask-previews/wallet-cli@0.0.0-preview-c9f31ce

An incomplete PIX stub was labeling the autoramp as BRL even when the readable rail was ACH.
@saustrie-consensys

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@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@11.0.1-preview-0bedd99c0
@metamask-previews/accounts-controller@40.1.0-preview-0bedd99c0
@metamask-previews/address-book-controller@8.0.0-preview-0bedd99c0
@metamask-previews/advanced-chart-core@1.0.0-preview-0bedd99c0
@metamask-previews/ai-controllers@2.0.0-preview-0bedd99c0
@metamask-previews/analytics-controller@4.0.0-preview-0bedd99c0
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-0bedd99c0
@metamask-previews/announcement-controller@9.0.0-preview-0bedd99c0
@metamask-previews/app-metadata-controller@3.0.0-preview-0bedd99c0
@metamask-previews/approval-controller@10.0.0-preview-0bedd99c0
@metamask-previews/assets-controller@19.1.0-preview-0bedd99c0
@metamask-previews/assets-controllers@112.1.2-preview-0bedd99c0
@metamask-previews/authenticated-user-storage@4.1.0-preview-0bedd99c0
@metamask-previews/base-controller@10.1.0-preview-0bedd99c0
@metamask-previews/base-data-service@2.1.0-preview-0bedd99c0
@metamask-previews/bitcoin-regtest-up@2.0.0-preview-0bedd99c0
@metamask-previews/bridge-controller@82.0.3-preview-0bedd99c0
@metamask-previews/bridge-status-controller@76.4.0-preview-0bedd99c0
@metamask-previews/build-utils@4.0.0-preview-0bedd99c0
@metamask-previews/chain-agnostic-permission@2.0.0-preview-0bedd99c0
@metamask-previews/chomp-api-service@6.0.1-preview-0bedd99c0
@metamask-previews/claims-controller@1.0.3-preview-0bedd99c0
@metamask-previews/client-controller@2.0.0-preview-0bedd99c0
@metamask-previews/client-utils@3.0.4-preview-0bedd99c0
@metamask-previews/compliance-controller@3.0.0-preview-0bedd99c0
@metamask-previews/composable-controller@13.0.0-preview-0bedd99c0
@metamask-previews/config-registry-controller@5.0.0-preview-0bedd99c0
@metamask-previews/connectivity-controller@1.0.0-preview-0bedd99c0
@metamask-previews/controller-utils@13.0.0-preview-0bedd99c0
@metamask-previews/core-backend@12.3.0-preview-0bedd99c0
@metamask-previews/cryptography@1.1.2-preview-0bedd99c0
@metamask-previews/delegation-controller@4.0.0-preview-0bedd99c0
@metamask-previews/earn-controller@13.0.2-preview-0bedd99c0
@metamask-previews/eip-5792-middleware@4.0.1-preview-0bedd99c0
@metamask-previews/eip-7702-internal-rpc-middleware@1.0.0-preview-0bedd99c0
@metamask-previews/eip1193-permission-middleware@3.0.0-preview-0bedd99c0
@metamask-previews/eth-block-tracker@16.0.0-preview-0bedd99c0
@metamask-previews/eth-json-rpc-middleware@25.0.0-preview-0bedd99c0
@metamask-previews/eth-json-rpc-provider@7.0.0-preview-0bedd99c0
@metamask-previews/foundryup@2.0.0-preview-0bedd99c0
@metamask-previews/gas-fee-controller@27.0.0-preview-0bedd99c0
@metamask-previews/gator-permissions-controller@6.0.1-preview-0bedd99c0
@metamask-previews/geolocation-controller@2.0.0-preview-0bedd99c0
@metamask-previews/java-tron-up@2.0.0-preview-0bedd99c0
@metamask-previews/json-rpc-engine@11.0.0-preview-0bedd99c0
@metamask-previews/json-rpc-middleware-stream@9.0.0-preview-0bedd99c0
@metamask-previews/keyring-controller@28.2.0-preview-0bedd99c0
@metamask-previews/kyc-controller@0.10.0-preview-0bedd99c0
@metamask-previews/local-node-utils@2.0.0-preview-0bedd99c0
@metamask-previews/logging-controller@10.0.0-preview-0bedd99c0
@metamask-previews/message-manager@15.0.0-preview-0bedd99c0
@metamask-previews/messenger@3.0.0-preview-0bedd99c0
@metamask-previews/messenger-cli@1.0.0-preview-0bedd99c0
@metamask-previews/money-account-api-data-service@2.2.0-preview-0bedd99c0
@metamask-previews/money-account-balance-service@3.1.2-preview-0bedd99c0
@metamask-previews/money-account-controller@2.0.0-preview-0bedd99c0
@metamask-previews/money-account-mfa-whitelist@0.1.0-preview-0bedd99c0
@metamask-previews/money-account-upgrade-controller@5.1.0-preview-0bedd99c0
@metamask-previews/money-account-utils@2.1.0-preview-0bedd99c0
@metamask-previews/multichain-account-service@14.1.0-preview-0bedd99c0
@metamask-previews/multichain-api-middleware@5.0.0-preview-0bedd99c0
@metamask-previews/multichain-network-controller@4.0.0-preview-0bedd99c0
@metamask-previews/multichain-transactions-controller@8.0.0-preview-0bedd99c0
@metamask-previews/name-controller@10.0.0-preview-0bedd99c0
@metamask-previews/network-connection-banner-controller@1.0.0-preview-0bedd99c0
@metamask-previews/network-controller@37.1.0-preview-0bedd99c0
@metamask-previews/network-enablement-controller@7.0.2-preview-0bedd99c0
@metamask-previews/notification-services-controller@29.0.3-preview-0bedd99c0
@metamask-previews/passkey-controller@4.1.0-preview-0bedd99c0
@metamask-previews/permission-controller@14.0.0-preview-0bedd99c0
@metamask-previews/permission-log-controller@6.0.0-preview-0bedd99c0
@metamask-previews/perps-controller@20.1.0-preview-0bedd99c0
@metamask-previews/phishing-controller@18.2.1-preview-0bedd99c0
@metamask-previews/platform-api-docs@0.2.1-preview-0bedd99c0
@metamask-previews/polling-controller@17.0.0-preview-0bedd99c0
@metamask-previews/preferences-controller@24.0.0-preview-0bedd99c0
@metamask-previews/profile-controller@1.1.0-preview-0bedd99c0
@metamask-previews/profile-metrics-controller@5.1.3-preview-0bedd99c0
@metamask-previews/profile-sync-controller@34.0.3-preview-0bedd99c0
@metamask-previews/ramps-controller@27.0.1-preview-0bedd99c0
@metamask-previews/rate-limit-controller@8.0.0-preview-0bedd99c0
@metamask-previews/react-data-query@2.0.0-preview-0bedd99c0
@metamask-previews/remote-feature-flag-controller@7.0.0-preview-0bedd99c0
@metamask-previews/sample-controllers@6.0.0-preview-0bedd99c0
@metamask-previews/seedless-onboarding-controller@12.0.0-preview-0bedd99c0
@metamask-previews/selected-network-controller@27.0.0-preview-0bedd99c0
@metamask-previews/sentinel-api-service@2.1.0-preview-0bedd99c0
@metamask-previews/shield-controller@7.0.4-preview-0bedd99c0
@metamask-previews/signature-controller@40.0.0-preview-0bedd99c0
@metamask-previews/smart-transactions-controller@27.1.0-preview-0bedd99c0
@metamask-previews/snap-account-service@4.0.0-preview-0bedd99c0
@metamask-previews/social-controllers@3.8.0-preview-0bedd99c0
@metamask-previews/solana-test-validator-up@2.0.0-preview-0bedd99c0
@metamask-previews/stellar-quickstart-up@0.0.0-preview-0bedd99c0
@metamask-previews/storage-service@2.0.0-preview-0bedd99c0
@metamask-previews/subscription-controller@14.0.0-preview-0bedd99c0
@metamask-previews/transaction-controller@72.2.1-preview-0bedd99c0
@metamask-previews/transaction-pay-controller@30.1.0-preview-0bedd99c0
@metamask-previews/transaction-pay-middleware@0.0.0-preview-0bedd99c0
@metamask-previews/user-operation-controller@42.0.1-preview-0bedd99c0
@metamask-previews/utils@12.0.0-preview-0bedd99c0
@metamask-previews/wallet@18.0.0-preview-0bedd99c0
@metamask-previews/wallet-cli@0.0.0-preview-0bedd99c0

An empty PIX instruction is not a complete rail, and a later autoramp snapshot that omits currency no longer clears one the client already stored.
@saustrie-consensys

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@saustrie-consensys
saustrie-consensys marked this pull request as ready for review October 21, 2026 12:46
@saustrie-consensys
saustrie-consensys requested review from a team as code owners October 21, 2026 12:46
Keep the unreleased US bank deposit notes ahead of the released 27.0.2 section.
@saustrie-consensys
saustrie-consensys added this pull request to the merge queue Oct 21, 2026
Merged via the queue into main with commit a3e418a Oct 21, 2026
48 checks passed
@saustrie-consensys
saustrie-consensys deleted the saustrie/ramps-us-bank-deposit-instructions branch October 21, 2026 14:33
@cursor cursor Bot mentioned this pull request Oct 21, 2026
4 tasks
github-merge-queue Bot pushed a commit that referenced this pull request Oct 21, 2026
## Explanation

<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

## 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](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Version and dependency bumps only; functional changes were merged in
prior PRs and are documented in the ramps-controller 27.1.0 changelog.
> 
> **Overview**
> **Release 1350.0.0** cuts the monorepo from `1349.0.0` to `1350.0.0`
and publishes **`@metamask/ramps-controller@27.1.0`** by finalizing its
changelog (moving the existing Unreleased notes into `[27.1.0]`) and
bumping the package version from `27.0.2`.
> 
> **`@metamask/transaction-pay-controller`** is updated to depend on
**`@metamask/ramps-controller@^27.1.0`** (from `^27.0.2`), with a
matching changelog entry and **`yarn.lock`** refresh. There are **no
application source changes** in this diff—only version, changelog, and
lockfile updates.
> 
> The **27.1.0** release notes being shipped include neo-bank **deposit
instructions** (`getDepositInstructions`, US bank types/rails),
**`depositRailsSummary.currency`** mapping fixes, and related autoramp
snapshot behavior from earlier PRs ([#10878], etc.).
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
150a304. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Poovarasan-Sandhanam pushed a commit to Poovarasan-Sandhanam/metamask-mobile that referenced this pull request Oct 21, 2026
…sk#37739)

## **Description**

Stacked on
[MetaMask#37737](MetaMask#37737). Part
of TRAM-4130.

The account details screen could only show PIX. This PR lets it show
whichever deposit rail the autoramp has:

- **US bank transfer layout** from the "VBA Created / US Details Page"
Figma frame: "Add money by bank transfer", then copyable rows for
account holder, routing number, account number, and bank name, then
Done. The Figma frame also has an "Account type: Checking" row.
MoonPay's US rails (`ACH`, `Wire`, `RTP`, `FedNow`) have no account type
field, so that row is left out rather than hard-coded. Until the final
illustration is ready, the existing `bank-transfer.png` stands in for
the PIX logo.
- **Reader.** The screen calls `NeoBankService.getDepositInstructions`,
added in
[MetaMask/core#10878](MetaMask/core#10878). It
falls back to `getPixDepositInstructions` when the installed
ramps-controller does not have the new method yet, so this PR works
before and after the bump.
- **Copy.** The loading and waiting strings no longer say PIX ("Loading
account details", "Your account details appear here once the account is
approved.").

US users still create BRL accounts. Once the ramps-controller release
with `getDepositInstructions` is installed, a follow-up commit bumps the
package and adds `USD` to `VBA_CURRENCIES_WITH_DEPOSIT_DETAILS` in
`getVbaSourceCurrency.ts`. That commit is what turns on USD creation.

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Refs:
[TRAM-4130](https://consensyssoftware.atlassian.net/browse/TRAM-4130)

## **Manual testing steps**

```gherkin
Feature: Money Account deposit details by rail

  Scenario: Brazilian user sees PIX details
    Given the wallet has an Approved BRL autoramp with a PIX rail

    When user opens the account details screen
    Then "Add money with Pix" shows with the PIX Copia e Cola and PIX key rows

  Scenario: US user sees bank transfer details
    Given ramps-controller exposes getDepositInstructions
    And the wallet has an Approved USD autoramp with an ACH rail

    When user opens the account details screen
    Then "Add money by bank transfer" shows
    And account holder, routing number, account number, and bank name rows show
    And tapping a copy button copies that value
```

## **Screenshots/Recordings**

### **Before**

N/A: only the PIX layout existed.

### **After**

N/A: a US autoramp needs the ramps-controller bump to render on device.
The layout follows the Figma US details frame without the account type
row.

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

#### Performance checks (if applicable)

- [ ] I've tested on Android
  - Ideally on a mid-range device; emulator is acceptable
- [ ] I've tested with a power user scenario
- Use these [power-user
SRPs](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/edit-v2/401401446401?draftShareId=9d77e1e1-4bdc-4be1-9ebb-ccd916988d93)
to import wallets with many accounts and tokens
- [ ] I've instrumented key operations with Sentry traces for production
performance metrics
- See [`trace()`](/app/util/trace.ts) for usage and
[`addToken`](/app/components/Views/AddAsset/components/AddCustomToken/AddCustomToken.tsx#L274)
for an example

For performance guidelines and tooling, see the [Performance
Guide](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/400085549067/Performance+Guide+for+Engineers).

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.


[TRAM-4130]:
https://consensyssoftware.atlassian.net/browse/TRAM-4130?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Changes how deposit instructions are fetched and displayed for Money
accounts, including copyable bank account numbers; incorrect data or API
mismatch could mislead users funding their account.
> 
> **Overview**
> Extends the Money **VBA details** screen so it renders deposit
instructions for **either PIX or US bank transfer**, based on what
`NeoBankService` returns for the autoramp.
> 
> The screen now loads details via **`getDepositInstructions`**, with a
**fallback to `getPixDepositInstructions`** for older ramps-controller
builds. A shared **`buildDetailRows`** path drives copyable rows (PIX
Copia e Cola / key vs account holder, routing number, account number,
bank name). **Title, description, hero image**, and **loading
accessibility copy** switch between PIX and bank-transfer variants;
generic strings replace PIX-only wording.
> 
> Tests cover US rows, PIX via the unified reader, routing copy, and
skeleton behavior when no rail is ready yet.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
e182a69. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
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