Migrate your IoTeX wallet from Trust Wallet to ioPay

In this guide, I’ll show how you can migrate your native IoTeX wallet that you created in Trust Wallet to ioPay.

Please Notice: Only follow this tutorial if you created an IoTeX Native wallet in Trust Wallet and now you want to migrate it to the official ioPay Native wallet. If you are having issues withdrawing IOTX tokens from an exchange (Coinbase, Binance, etc…) You don’t need to follow this tutorial, it is not related to issues with withdrawing.

The IoTeX ecosystem is growing very fast: new XRC20 tokens get created more and more often, and new dApps such as ioTube and mimo enrich the network, opening up to infinite possibilities.

Third-party wallets may not support buckets or XRC20 tokens

Suppose you are using a third-party wallet to manage IOTX tokens on your smartphone, with the fast evolution of IoTeX. In that case, it’s possible that it does not support all the new features yet. For example, you may have sent XRC20 Tokens or staking Buckets to a wallet app that does not support them: in these cases, you need to migrate that wallet to the IoPay official wallet app the get back access to your assets.

Explanation of the problem

In general, when you want to import a blockchain wallet, you need the private key for that wallet. Trust wallet relies on the 12 words backup phrase for all the wallets you create for the different tokens. These 12 words are the seed for the generation of all the private keys, but while Trust wallet allows you to see the 12 words, it does not show you the actual private keys for each wallet it creates, so we must know how Trust wallet generates the private key for IoTeX and do the same on our own.

1. Download the bip39 derivation tool

The first step is to download the bip39 derivation tool that does exactly this: it generated all private keys starting from a set of words, based on certain parameters:

=> Download bip39 derivation tool

It’s an HTML file that you can open directly in your browser: for security reasons (just in case you download the wrong tool), make sure you disconnect your PC from the Internet while using the tool so that even if you downloaded the wrong tool, or you have malicious software in your computer it won’t be able to leak your 12 words!

2. Configure the keys extraction

2.1 Set the coin

Set “Ethereum” as the chain:

2.2 Set the derivation path

In the Derivation Path section set “BIP32” and m/44'/304'/0'/0 as the derivation path:

2.3 Set the 12 words

Back at the top of the page, set “English” as the language for the backup phrase, and input the 12 words of your backup phrase that you got from Trust Wallet:

3. Find the private key

At the bottom of the page, the tool should have generated many wallet addresses:

Just copy the first private key: **make sure you don’t copy the “0x” prefix:

That is the private key that corresponds to your IoTeX wallet on Trust (even if you see the address shown in web3 format (“0x…”), it is just a different representation of your native IOTX address.

Import in ioPay

Once you got the private key, open your ioPay Desktop or ioPay mobile and import it to gain access to your wallet:

you can now manage all the staking buckets, XRC20 tokens, and NFTs from ioPay itself from member.iotex.io

You can close the BIP39 tool and restore your Internet connection.


This will profer solutions to many community members questions as regards the uses of Trust wallet in storing $IOTX :wave:

1 Like

I wish I knew the jargon but this may as well be Greek to me. Is there somewhere it is explained step by step in layman’s terms?

1 Like

I have try to download and what I kept seeing is a different things
Can’t get the one with the details as u explain it
Please how can I do it… thanks


You must find us another solution to facilitate this task, I have tried this method several times but I am not satisfied. you know, there are a lot of us in this mess and I think you have to find us other ways. this is very important


agreed many of us setting with funds stuck in wallets. it’s crazy the extent of hoops you are asked to jump through perform a much needed task.

in my case i bought iotx within coinbase pro and made the mistake of transferring it to iopay app which little did i know will not accept the transfer. i see the funds setting in a trust wallet but there it sets.

You only need this method if you created the IoTeX account in Trust Wallet and then you want to migrate it to ioPay. This is needed because in that case only Trust Wallet knows the private key of that address (Trust Wallet created it) and because Trust Walled doesn’t allow you to export that key, you must go through that cumbersome process to obtain it and import it in ioPay.

But those of you that tried to send from Coinbase to ioPay do not have to go through it!!
In your case, you crated the recipient account in ioPay, this means that the private key is stored in ioPay that, on the contrary of Trust Wallet, allows you to see and export the key (top right little wallet icon).

Once you found the private key in ioPay wallet (where you don’t see any IOTX because Coinbase is trading ERC20-IOTX on Ethereum, and when you withdrew you did it to the address generated in ioPay but on the Ethereum blcokchain!), so once you got your private key from ioPay just import it in Metamask, or in Trust Wallet if you prefer: any wallet that can connect to Ethereum is fine, and there you will find your IOTX token.

You may have to add the ERC20 token to your metamask using the IOTX contract address on Etehreum, which is: 0x6fb3e0a217407efff7ca062d46c26e5d60a14d69


I am going to try and follow your instructions and hope that I am successful.

As a retail trader on Coinbase since it began, I have lived through many problems with Crypto. Transfers are always one the worst most worrisome endeavors a investor can undertake. Why in the world would IoTex think that the process of transferring out of Coinbase to ioPAY is working? What it shows me is that no one at IoTex has actually done a transfer themselves and therefore are oblivious to the problem.

I like this project and support it however if IoTex turns a deaf ear to legitimate concerns such as failed transfers to it’s own wallet then many investors will be bailing out as exposure of this problem expands. I will make it my life’s mission to bring this problem to a conclusion one way or the other. Retail investors can be the best thing ever or the worst thing ever, that depends on IoTex doing the right thing.


Hi, I see many people having issues with withdrawing from coinbase, but really this has nothing to do with IoTeX itself (and also Coinbase is not at fault here to be honest).

The withrawal process is very simple and not different from any other exchange: Coinbase is trading the IOTX Erc20 token on the Ethereum blockchain and as any other Erc20 token you can only withdraw it to an Ethereum address, that’s it.

Then it’s up to you if you want to swap it to the IOTX native token on the IoTeX mainnet, in which case you must use our iotube.org bridge that is meant to transfer tokens from one blockchain to another (which you can never do with a simple wallet).

As for the tutorial above: you don’t have to follow it, why would you? It has nothing to do with coinbase IOTX withdraw. Please contact me directly on Telegram for a more effective support: Telegram: Contact @zimne

Oh Yasssssss! Awesome

Hello, I got here trying to export the Iotex wallet, although my failure was because I did not have the correct path derivation.

I used the same ETH key, thinking that the same address in 0x format, but it is not, when converting the Iotex address into iotexscan it gives me a different one of type io …

When trying to find the keys, another 0x address appears, different from the ETH address and different from the 0x address that I obtained when converting io.

Now I have no problem because I use the ETH address and I have the keys, but this method did not work for me to get the Iotex keys and my question is if there is any risk when using the same ETH address?

Will the latest version of Trust Wallet generate different addresses? I already tried it anyway without the expected result.