Icon HelpCircleForumIcon Link

⌘K

Icon HelpCircleForumIcon Link
Wallet Transferring

Icon LinkWallet Transferring

This guide demonstrates how to transfer assets between accounts and contracts, and how to validate your balance prior to a transfer.

Icon LinkTransferring Between Wallets

Transferring assets between wallets is really simple within the SDK.

const myWallet = Wallet.fromPrivateKey(privateKey, provider);
 
const recipient = Wallet.generate({ provider });
 
const txResponse = await myWallet.transfer(recipient.address, 100, baseAssetId);
 
await txResponse.waitForResult();

After waiting the transaction to be processed, the assets are successfully moved to the recipient's wallet.

It is also possible to specify the recipient's address as a string:

const myWallet = Wallet.fromPrivateKey(privateKey, provider);
 
const address = 'fuel1zc7r2rwuzl3uskfc0w737780uqd8sn6lfm3wgqf9wa767gs3sems5d6kxj';
 
const txResponse = await myWallet.transfer(address, 100, baseAssetId);

When transferring the base chain coin like ETH, you can omit the assetId:

const myWallet = Wallet.fromPrivateKey(privateKey, provider);
 
const recipient = Wallet.generate({ provider });
 
const txResponse = await myWallet.transfer(recipient.address, 100);

Icon LinkTransferring To Multiple Wallets

To transfer assets to multiple wallets, use the Account.batchTransfer method:

const myWallet = Wallet.fromPrivateKey(privateKey, provider);
 
const recipient1 = Wallet.generate({ provider });
const recipient2 = Wallet.generate({ provider });
 
const transfersToMake: TransferParams[] = [
  { amount: 100, destination: recipient1.address, assetId: baseAssetId },
  { amount: 200, destination: recipient2.address, assetId: baseAssetId },
  { amount: 300, destination: recipient2.address, assetId: someOtherAssetId },
];
 
const tx = await myWallet.batchTransfer(transfersToMake);
const { isStatusSuccess } = await tx.waitForResult();

Icon LinkTransferring To Contracts

Transferring assets from your wallet to a deployed contract is straightforward. All you need is the contract's address.

You can transfer assets to a deployed contract instance by using its id:

const myWallet = Wallet.fromPrivateKey(privateKey, provider);
 
const txResponse = await myWallet.transferToContract(contract.id, 100, baseAssetId);
 
await txResponse.waitForResult();

Alternatively, you can simply use the contract's string address in the Bech32 format:

const myWallet = Wallet.fromPrivateKey(privateKey, provider);
 
const contractAddress = contract.id.toString();
 
const txResponse = await myWallet.transferToContract(contractAddress, 100, baseAssetId);
 
await txResponse.waitForResult();

Icon LinkBalances

Before transferring assets, ensure your wallet has sufficient funds. Attempting a transfer without enough funds will result in an error: not enough coins to fit the target.

You can see how to check your balance at the checking-balances page.