# Transfer Assets

> Documentation index: [llms.txt](https://namera.ai/llms.txt).

Source: https://namera.ai/docs/cli/guides/transactions/transfer-assets

Send native tokens or ERC-20 tokens from your account.

Install the CLI and [sign in](https://namera.ai/docs/cli/authentication). Replace the example
account ID, session-key ID, and recipient with your own. Use an active key
installed on **Base Sepolia** with permission for the operation.

## Transfer ETH [#transfer-eth]

Fund the account with test ETH. Permit the recipient and a 0.001 ETH transfer
in the session's network permissions.

```sh
namera execution execute \
  --namespace evm \
  --wallet 0199dfe1-0000-7000-8000-000000000001 \
  --session-key 0199dfe1-0000-7000-8000-000000000002 \
  --network 'Base Sepolia' \
  --to 0x2222222222222222222222222222222222222222 \
  --value 1000000000000000 \
  --data 0x \
  --sponsor true
```

`--value 1000000000000000` is **0.001 ETH in wei**. `--data 0x` sends no
contract calldata.

<div className="docs-response">

```text
-> Account: 👛 Example account
-> Network: Base Sepolia
-> Session key: Example session
-> Status: Queued
-> UserOp Hash: 0x1111111111111111111111111111111111111111111111111111111111111111

Not confirmed yet. Check again with:
  namera execution status 0199dfe1-0000-7000-8000-000000000003
```

</div>

## Transfer an ERC-20 Token [#transfer-an-erc-20-token]

Permit the token contract, recipient, and amount in the session key. Encode the
token's `transfer` call with viem; install it in your working project first:

```sh
npm install viem
```

Save this as `transfer.mjs`. Replace the recipient, token amount, and decimals
with values verified for your token:

```js title="transfer.mjs"
import { encodeFunctionData, parseAbi, parseUnits } from "viem";

console.log(
  encodeFunctionData({
    abi: parseAbi(["function transfer(address to, uint256 amount) returns (bool)"]),
    functionName: "transfer",
    args: ["0x2222222222222222222222222222222222222222", parseUnits("1", 6)],
  }),
);
```

Use the token contract as the target, not the recipient. The token amount is
encoded in calldata; `--value 0` attaches no ETH:

```sh
calldata=$(node transfer.mjs)
namera execution execute \
  --namespace evm \
  --wallet 0199dfe1-0000-7000-8000-000000000001 \
  --session-key 0199dfe1-0000-7000-8000-000000000002 \
  --network 'Base Sepolia' \
  --to <token-contract-address> \
  --value 0 \
  --data "$calldata" \
  --sponsor true
```

The command returns the same submission shape shown above. Simulate unfamiliar
token calls before executing them.

Save the submission ID and [track it](https://namera.ai/docs/cli/guides/transactions/track-transactions).
Do not repeat the execution to check progress.

Example output uses fixture accounts and hashes, captured with the CLI's output
formatters. Plain-text output is shown without terminal colors; your values and
relative expiry dates will differ.
