> For the complete documentation index, see [llms.txt](https://docs-core.allbridge.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-core.allbridge.io/sdk/guides/evm/transfer.md).

# Transfer

#### Approve the token transfer

Before sending tokens, the bridge has to be authorized to use the tokens of the owner. This is done by calling the `approve` method on the SDK instance.

*For Ethereum USDT (due to the specifics of the USDT contract):*\
If the current allowance is not 0, this function will perform an additional transaction to set the allowance to 0 before setting the new allowance value.

```ts
const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve({
  token: sourceToken,
  owner: accountAddress,
});
const approveTxReceipt = await sendRawTransaction(rawTransactionApprove as RawEvmTransaction);
console.log("approve tx id:", approveTxReceipt.transactionHash);
```

#### Send Tokens

Initiate the raw transaction of token transfer with the SDK instance:

```ts
const rawTransaction = sdk.bridge.rawTxBuilder.send({
  amount: "1.01",
  fromAccountAddress: fromAddress,
  toAccountAddress: toAddress,
  sourceToken: sourceToken,
  destinationToken: destinationToken,
  messenger: Messenger.ALLBRIDGE,
});
const txReceipt = await sendRawTransaction(rawTransactionApprove as RawEvmTransaction);
console.log("tx id:", txReceipt.transactionHash);
```

#### [Full example](https://github.com/allbridge-io/allbridge-core-js-sdk/blob/main/examples/src/examples/bridge/evm/evm-build-send-tx.ts)&#x20;
