Skip to main content
This quickstart walks you through sending tokens from one wallet to another on the same blockchain. The example in this quickstart sends USDC on Arc Testnet, but you can use another supported token or blockchain.
Use this flow to send USDC with a connected browser wallet. The example uses Arc Testnet.

Prerequisites

Before you begin, ensure that you’ve:

Step 1. Set up the project

1.1. Create the project and install dependencies

Create a new directory, install the App Kit packages, and add local browser demo tooling:
Shell

1.2. Configure TypeScript (optional)

This step is optional. It helps prevent missing types in your IDE or editor.
Create a tsconfig.json file configured for ESM and Node:
Shell

Step 2. Connect a browser wallet

This step shows the core browser wallet integration flow: discover an EIP-6963 provider, create an App Kit adapter from the selected provider, and pass that adapter into an App Kit SDK method.The snippets below keep wallet discovery, wallet connection, and adapter setup in small helper functions for readability.

2.1. Discover a browser wallet with EIP-6963

This pattern is standards-based. The example uses MetaMask as the selected wallet, but the discovery flow works with any wallet that announces an EIP-6963 provider.
TypeScript

2.2. Connect the wallet and request account access

After you select a provider, request account access before calling an App Kit SDK method. This should happen in a user-triggered action such as a Connect wallet button.
TypeScript
Keep wallet connection and App Kit actions as separate user actions. This avoids overlapping wallet permission or chain-switch requests while a previous wallet prompt is still pending.

2.3. Create a Viem adapter from the selected wallet provider

Use the discovered provider to request account access, then create the App Kit adapter that signs transactions in the browser:
TypeScript
If multiple EVM wallets are installed, explicitly choose the wallet you want to use instead of relying on the first announced provider. The browser demo used to validate this quickstart prefers MetaMask when it is available.

Step 3. Send USDC

3.1. Call kit.send()

This is the only App Kit-specific send call you need after the wallet is connected:
TypeScript
Using another token or blockchain? Change the token and chain values in kit.send() and ensure the connected wallet holds enough funds to complete the transfer.

3.2. Verify the transaction

After kit.send() resolves, inspect the returned result. Use the transaction explorer URL to verify the amount and recipient on the blockchain.The following is an example of how the result of a successful send might look in the browser console. The values are used in this example only and are not a real transaction:
Shell