[ioTube Tutorial] Cross-Transfer Tokens between Binance Smart Chain and IoTeX

ioTube is a cross-chain bridge that connects IoTeX to other blockchain networks, enabling new assets and liquidity from other blockchains to flow into IoTeX, and position IoTeX to deliver unique IoT assets to other blockchains in the future.

ioTube currently bridges IoTeX with Ethereum, Binance Smart Chain and Polygon. In this tutorial we will show how to transfer ERC20 tokens from Polygon to IoTeX.

See all ioTube tutorials:

Convert your BEP20 assets from Binance Smart Chain and bring new liquidity to the IoTeX Network now at https://bsc-tube.iotex.io/

  1. Configure Binance Smart Chain in Metamask
  2. Move BEP20 tokens from BSC to IoTeX
  3. Move XRC20 tokens from IoTeX to BSC

1. Configure Binance Smart Chain in Metamask

To start using the ioTube app with Binance smart chain, you first need to configure Metamask to interact with the Binance Smart Chain network. Let’s quickly see how to do that, while you can read the full official article from Binance here: Connecting MetaMask to Binance Smart Chain

  • Make sure you have the Metamask plugin Installed in your browser
  • If it’s your first installation, you may need to create a new account in Metamask before you can continue
  • Open the Metamask “Settings” menu and select “Networks”, then “Add Network” and fill in the data as in the picture below:

2. Send BEP20 tokens from Binance Smart Chain to IoTeX

The purpose of this operation is to lock a certain amount of a BEP20 token on Binance Smart Chain, and mint the equivalent amount of an XRC20 version of the same token on the IoTeX blockchain.

2.1. Open the ioTube dApp and connect Metamask

  • Open https://bsc-tube.iotex.io

  • Make sure “BSC” is selected in the left tab or use the dropdown to select it

  • Click the “Connect Wallet” link to allow IoTube to connect to your Metamask wallet

  • Confirm the connection in Metamask

2.2. Select the BEP20 token you want to send to IoTeX

First of all, make sure you got some BNB in your account to pay for the gas.

You can send BNB and any BEP20 tokens to your Metamask wallet directly from Binance: just start a withdraw from the exchange website, select your Metamask address as the destination address, and select “BEP20 (BSC)” , as the “Transfer Network”:

In ioTube, from the first dropdown, select which BEP20 token you want to move from Binance Smart Chain to IoTeX.:

If your favorite token is not listed, feel free to submit your request to the team..

2.3. Send the transfer

  • Select the amount of BEP20 tokens you want to move

  • Input the destination address on the IoTeX blockchain (starts with io1... - Do not set an Exchange address as a destination)

  • If requested, click “APPROVE” and confirm the Approve transaction in Metamask

  • Finally, click “CONVERT” and confirm the transfer in Metamask:

After the transaction is confirmed in Binance Smart Chain, your BEP20 tokens will be “locked” in a BSC smart contract, while the same amount of the equivalent XRC20 token (ends with -bsc) will be “minted” on the IoTeX blockchain. This means the circulating supply of the BEP20 token you converted will stay the same, taking into account versions from both Binance Smart Chain and IoTeX blockchains!

Congratulations! You just moved some liquidity from BSC to IoTeX!

2.4. Check the destination account on IoTeX

You can now check the destination address on IoTeX to verify that you received the tokens: in ioPay simply unlock the destination address and check the new token balance. if using ioPay Desktop, the expected XRC20 token may not be listed in the balances panel - you can add it by clicking the “Custom tokens” button and adding the address of the respective token contract (find all the token contracts at https://iotexscan.io/tokens):

or you can just check the balance on the IoTeX Block Explorer at https://iotexscan.io - just input the destination address in the explorer and select the destination token from the little dropdown at the top to check the balance for that specific token:

3. Send XRC20 tokens from IoTeX to Binance Smart Chain

You can also perform the opposite operation, sending converted XRC20 tokens from the IoTeX blockchain back to Binance smart Chain:

  • If you are on Desktop, make sure you have ioPay Desktop open and unlocked

  • If you are on Mobile, then open the Discover tab inside the ioPay Mobile Wallet and select the ioTube dApp icon:

  • Make sure to select IoTeX as the source network in ioTube (i.e., IoTeX tab will appear on the left side, as shown below)

  • Follow the same steps as described above when sending from BSC to IoTeX at sections 2.1 and 2.2

  • Finally check the balance of the destination address on the Binance Smart Chain in Metamask, or by checking the BSC explorer.


Please reach out to us on Telegram with any questions: https://t.me/IoTeXGroup


Dear, thanks for the explanations.

I put already My iotex on trust wallet. I tried to do 2 times a writhedraw to my iopay wallet to stake and I loosed my tokens…

My iotex are in bep20.

Could you help me, I loose yet a lot of token and want to find an other solution before to put the tokens back on binance.


If you want to send your IOTX tokens to IoPay, and you have a Binance account, then the best way is definitely to send your BEP20 IOTX to your Binance deposit wallet, then withdraw from Binance to ioPay (make sure you use the io1… address from ioPay so that Binance will automatically withdraw to the IoTeX network)

1 Like

Thanks for the answer. I will follow your advices

Hi. I just read this now. I sent my iotex from binance to iopay then i thought the process was just the same in sending it back so i sent the iotex token from my iopay to my binance acct. Iopay says its successful however it was not credited to my binance account. Is there a way i can retrieve my coins? Thanks a lot.

Hi, the process to send from Coinbase (IOTX On Ethereum) to ioPay (IOTX on IoTeX Blockchain) is to

  1. Withdraw from Coinbase (on Ethereum) to another Ethereum address (e.g. using Metamask)
  2. UseMetamask + iotube.org to send cross-chain your IOTX from the Ethereum chain to an address on the IoTeX chain (e.g. using ioPay)

so the inverse is not to send from ioPay (on IoTeX) to Coinbase (on Ethereum) directly, rather it is

  1. Use iotube.org to send cross-chain from ioPay (IoTeX chain) to Eteherum (e.g. on Metamask)
  2. Send from Metamask (on Ethereum) to Coinbase (on Ethereum)

If you send from ioPay to Coinbase directly, you are sending IOTX on the IoTeX chain, and Coinbase does not support the ioTeX Blockchain so your tokens will not show up. We cannot recover them (the recipient address is owned by Coinbase).

Hi again. So i can only recover it from binance? And send them a ticket?

Oh, I missed the information that you were sending to Binance, not Coinbase.

So Binance supports depositing the IOTX token on both Ethereum, BSC, and IoTeX networks, each one of them has a different deposit address. But ioPay only supports tokens on the IoTeX blockchain, so it depends on what Binance deposit address you sent the tokens. The iotube bridge is not involved here.

  • If you sent to the your IoTeX native deposit address on Binance and your tokens do not show up, then just provide your iotexscan tx link to Binance and complain that you sent to the correct deposit address but tokens are not showing up.

  • if you sent from ioPay to one of the other 2 Binance deposit addresses (BSC or ERC20), then you sent to the wrong address (meaning that your tokens are correctly assigned to that address on the IoTeX blockchain, while Binance monitors that address on another chain). In this case you can still try contacting Binance support and explain that you sent Native IOTX to the BSC (or ERC20) deposit address by mistake, and if they can send them back (should not be hard as they already support the IoTeX native chain so they know how it works, yet I never heard of them sending back tokens in these situations. They only care when you did the right thing but it didn’t work: instead, if you sent to the wrong deposit address usually the exchange support people just do not care)


Oh thank you so much for answering my questions. This helps a lot even if they dont give me back my tokens. Thank you so much and have a nice day!

i already send it too. from rustwallet im using iotube v4 on dapp s trustwallet to send my 0.01 bnb to iopay and but i recieve a small value of iotx. i send again 0.02 bnb to iopay overall value of iotx is 0.2 and isend my iotx to my binance. and now my 0.03 bnb goes to 0.15 iotx. every time i go to iotube and check wallet its always show my value of my bnb 0.03 how to retrieve my bnb.

Hi zimne,

I have mistakenly sent native IOTX to Binance’s ERC20 deposit address. You mention that it is theoretically possible to recover it, but to me it’s not clear how Binance would have access to some ERC20 wallet address on native IOTX. Could you please elaborate on it a bit? thanks!

Hi @Ypl,
To answer your questions let’s start from blockchain addresses first: there is no such a concept of an address that is “created” or that lives “on a specific blockchain”. Blockchain Addresses are just numbers (“private keys”), and as such they all already exist, on any blockchain, there is no “creation” involved.

When we say a wallet address is “created”, we should say that we “decided to use that specific number, that we call private key, to which corresponds a unique address, as our wallet”.
And for obvious reasons, that private key is picked as randomly as possible. That account is YOURS only because the private key has been chosen randomly and none could “guess” it or by chance pick the same.

Knowing this, and knowing that IoTeX utilizes the same cryptography algorithms as Ethereum to tell what address corresponds to a certain private key, as a consequence you can use the same address to sign transactions both on Ethereum and IoTeX (and any other Ethereum-compatible network).

If you sent your IOTX to a binance deposit address, that’s just an address, doesn’t matter if binance “created” it to use it for IOTX deposits on Ethereum: that address can be used as is on IoTeX as well and that’s what you did by sending your IOTX to it on the IoTeX blockchain. Given that the exchange is the one who “knows” the private key for that address (they picked it to use that as an Ethereum deposit address remember?)then they could (COULD) use it on the IoTeX blockchain as well (e.g. importing it in IoPay) to send back your IOTX (that happily sit in that address on IoTeX).

The obstacle that stops exchanges from doing it, take it as my personal explanation, is exactly the fact the their users’ deposit address private keys are one of the most valuable assets they have, they store billions $$ of their users: the way the are generated, stored and used goes under the most secure policies, that would never allow access to someone internally to just pick one deposit address private key and start using it around trying to fix a mistaken deposit. That would be just not manageable with the required levels of security.

1 Like

Shout out to @zimne!

Well written post. You saved me a lot of time and stress with this guide!

1 Like

Glad I could help you :slight_smile:

I sent some bsc from Iopay to binance, it never arrived in the wallet. Does that mean it’s gone forever?

I mistakenly deposited iotx in my iopay app to my binance bep20 address… is it possible to get my iotx back please

Hi zimne
I tried reassigning my bucket to my binance account address but it went to another address ( I guess contract address when I check on iotexscan.io) please how can I recover it