# transferERC20

Transfer L2 ERC-20 tokens from one user to another.

## Usage

The following example is an advance handler that transfers 1 CTSI from the sender of the input to a recipient specified in the input payload.
If the sender does not have enough balance an exception is raised, and that handler is aborted.

```ts twoslash
import { createApp } from "@deroll/app";
import { createWallet } from "@deroll/wallet";
import { parseUnits } from "viem";

// create app
const app = createApp();

// create wallet
const wallet = createWallet();

app.addAdvanceHandler(wallet.handler);

const token = "0x491604c0FDF08347Dd1fa4Ee062a822A5DD06B5D"; // CTSI address
app.addAdvanceHandler(async ({ metadata, payload }) => {
    const value = parseUnits("1", 18);
    const address = payload.toString();
    wallet.transferERC20(token, metadata.msgSender, address, value); // [!code focus]
    return "accept";
});
```

## Returns

Type: `void`

## Parameters

Type: `Address`

Token address.

Type: `string`

From address.

Type: `string`

Recipiend address.

Type: `bigint`

Amount to transfer.
