Skip to content
Send Tokens
Interchain Tokens

Interchain Tokens

Axelar has several ways to send supported tokens, but what if you want to send another ERC20 and have it be available on multiple chains? Axelar can help with our new Interchain Tokens!

Interchain Tokens allow you to send tokens cross-chain, build your own asset bridges, build asset transfers into your interchain dApp, build chain-agnostic wallets that aggregate user balances of tokens across chains, and take on many other use cases.

Our Interchain Token tools register an existing ERC-20 (opens in a new tab) (we'll help you create a new token if you don't have one) and make it available on multiple chains.


Interchain Tokens are currently only available on testnets. Stay tuned to be among the first to find out about our mainnet launch.

Creating an Interchain Token

The first step is to visit the Interchain Token Portal (opens in a new tab). Select the correct source network in your wallet, and then enter the address of an existing ERC20 token, or choose to create a new one.

If you create a new one, you can choose an initial supply or mint new tokens later.

It's also simple to use Remix to create your own ERC-20 for testing (opens in a new tab).

Interchain Token Portal Testnet (opens in a new tab) (Mainnet coming soon)

Follow the prompts to verify the token address (known as the origin token) or create a new token, and then choose the chains you'd like to deploy your Interchain Token to. Axelar will configure the interchain token linker on the destination chains, and make your ERC20 token available on all destination chains.

Take note in the upper right hand corner of your Token ID, you'll need this when moving your token between blockchains.

Interacting with your Interchain Token

You can interact with your original token and the Interchain Token on all other chains identically, as they are all ERC-20 tokens. You can send, transfer, approve, and use all of the methods you are used to.

Transferring Tokens Between Chains using Axelar

Tokens are moved between chains by interacting with the Token Linker (opens in a new tab) contract. The Token Linker contract is at 0x7cd2e96f5258bb825ad6fc0d200edf8c99590d30 (opens in a new tab)) on all EVM chains.

First, approve the spend of your token by the Token Linker, then send your tokens.

token.approve(0x7cd2e96f5258bb825ad6fc0d200edf8c99590d30, amount);

The primary method you'll want to use on the linker is sendToken.

	tokenId, // The chain-independent id of your token, from the portal or from `getTokenId`
	destinationChain, // The name of the destination chain
	destinationAddress, // The address to send tokens to on the destination chain
	amount // The amount of tokens to send 

If you'd like to integrate send functionality into your token, you could save your tokenId in your contract and build your own sendInterchain method as part of your token.

function sendInterchain(string calldata destinationChain, bytes calldata to, uint256 amount) {
	linker = ITokenLinker(0x7cd2e96f5258bb825ad6fc0d200edf8c99590d30);
	approve(address(portal), amount);
	linker.sendToken(tokenId, destinationChain, destinationAddress, amount);

Check our our sample of an ERC-20 with its own send functionality (opens in a new tab).