How are ERC-20/BEP-20 tokens registered or discovered for the Wallet Services Send asset selector?

In MetaMask Embedded Wallets / Wallet Services using EIP-4337 MetaMask Smart Accounts, how are ERC-20/BEP-20 tokens registered or discovered for the Wallet Services Send asset selector?

Our Smart Account on BNB Chain contains USDT and other BEP-20 tokens, and our application can read their balances directly. However, Wallet Services Send exposes only the native network asset. The same behavior occurs across networks: BSC shows BNB, Ethereum shows ETH, and Avalanche shows AVAX.

We are using @web3auth/modal 10.16.0 and @web3auth/ws-embed 5.6.0. WalletServicesConfig does not appear to expose a supported tokens, tokenList, or customTokens property.

In the MetaMask Developer dashboard, Tokens Display, Show Custom Tokens, and Send are all enabled.

What is the supported method for registering/discovering ERC-20/BEP-20 assets held by an EIP-4337 Smart Account so they appear in the Wallet Services Send selector? Is token metadata configured in the MetaMask Developer project, through another API, or should ERC-20 transfers be implemented directly by the dApp?

1 Like

Hi you cannot register arbitrary ERC-20/BEP-20 tokens in WalletServicesConfig**. There is no supported tokens, tokenList, or customTokens property in your SDK version.

  • Dashboard Tokens Display / Show Custom Tokens / Send does not provide arbitrary token registration.
  • Wallet Services Send uses MetaMask’s supported/known asset catalog, so merely holding a token doesn’t make it appear.
  • For arbitrary ERC-20/BEP-20 tokens, discover balances and metadata yourself and implement the transfer in your dApp, calling the token’s transfer() through the EIP-4337 Smart Account.
    Custom-chain configuration is a separate mechanism and is not a general ERC-20 registration API.

So for your BSC USDT case: use your own token-send UI/transaction rather than trying to add USDT to WalletServicesConfig