> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bungee.exchange/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrate to Tempo

> Migrate funds from any EVM chain to Tempo so your agent can start transacting.

Tempo is a chain purpose-built for autonomous agents. To get started, your agent needs funds on Tempo. Bungee handles the migration — any token from any supported EVM chain arrives as USDC.E on Tempo.

## Get the skill

The `fund-tempo` skill gives your agent everything it needs to migrate funds to a Tempo wallet: balance checks, deposit quotes, transaction execution, and status tracking.

```bash theme={null}
curl https://docs.bungee.exchange/for-agents/fund-tempo.md
```

<Accordion title="View full skill">
  ````markdown theme={null}
  ---
  name: fund-tempo
  description: "Use when the user wants to fund a Tempo wallet, bridge tokens to Tempo, top up Tempo, move assets to Tempo, or exit to Tempo from any EVM chain. Also matches: migrate to Tempo, transfer to Tempo, deposit to Tempo."
  ---

  # fund-tempo

  Bridge tokens from any EVM chain to a Tempo wallet. All tokens arrive as USDC.E on Tempo. Powered by Bungee.

  Tempo chain ID is `4217`. USDC.E on Tempo is `0x20c000000000000000000000b9537d11c60e8b50`.

  ## Step 1: Get the Tempo wallet address

  Run this to get the user's Tempo wallet address:

  ```
  tempo wallet whoami
  ```

  Use the returned address as `receiverAddress` in the quote request. This is the address that will receive USDC.E on Tempo.

  ## Step 2: Check what the user has

  Ask the user for their wallet address on the origin chain, then check their balances:

  ```
  GET https://public-backend.bungee.exchange/api/v1/tokens/list?userAddress=0xUSER_ADDRESS
  ```

  This returns all tokens with balances across all chains. Use this to confirm what the user has and on which chain.

  ## Step 3: Get a deposit quote

  ```
  GET https://public-backend.bungee.exchange/api/v1/bungee/quote?originChainId=ORIGIN_CHAIN&destinationChainId=4217&inputAmount=AMOUNT&inputToken=INPUT_TOKEN&outputToken=0x20c000000000000000000000b9537d11c60e8b50&receiverAddress=TEMPO_ADDRESS&refundAddress=USER_ADDRESS&enableDepositAddress=true
  ```

  - `originChainId`: the chain the user's tokens are on
  - `inputToken`: the token address on that chain
  - `outputToken`: always `0x20c000000000000000000000b9537d11c60e8b50` (USDC.E on Tempo)
  - `inputAmount`: amount in the token's smallest unit (e.g. 6 decimals for USDC, so `100000000` = 100 USDC)
  - `receiverAddress`: the user's Tempo wallet address
  - `refundAddress`: the user's address on the origin chain
  - `enableDepositAddress`: always `true`

  Important: Check the tempo wallet address via `tempo wallet whoami`. and use that for the `receiverAddress`. 

  **Common USDC examples:**

  - 100 USDC from Base: `originChainId=8453&inputToken=0x833589fcd6edb6e08f4c7c32d4f71b54bda02913&inputAmount=100000000`
  - 100 USDC from Arbitrum: `originChainId=42161&inputToken=0xaf88d065e77c8cc2239327c5edb3a432268e5831&inputAmount=100000000`
  - 100 USDC from Ethereum: `originChainId=1&inputToken=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48&inputAmount=100000000`
  - 100 USDC from Optimism: `originChainId=10&inputToken=0x0b2c639c533813f4aa9d7837caf62653d097ff85&inputAmount=100000000`
  - 100 USDC from Polygon: `originChainId=137&inputToken=0x3c499c542cef5e3811e1192ce70d8cc03d5c3359&inputAmount=100000000`

  ## Step 4: Present deposit instructions

  From the response, present clearly to the user:

  - **Amount**: convert `deposit.depositData.amount` to human-readable using `result.input.token.decimals`
  - **Token**: `result.input.token.symbol`
  - **Send to**: `deposit.depositData.address`
  - **On chain**: `deposit.depositData.chainId`
  - **You will receive**: `deposit.output.effectiveAmount` converted with `deposit.output.token.decimals` USDC.E on Tempo
  - **Your Tempo wallet address**: `deposit.depositData.receiverAddress`
  - **Estimated time**: `deposit.estimatedTime` seconds
  - **Track**: `https://socketscan.io/tx/{deposit.requestHash}`

  If the agent has wallet access, submit `deposit.txData` as a transaction instead.

  ## Step 5: Track status

  ```
  GET https://public-backend.bungee.exchange/api/v1/bungee/status?requestHash=REQUEST_HASH
  ```

  Status `3` or `4` = completed. Status `5`, `6`, or `7` = failed. Poll every 10 seconds.

  ## Notes

  - Always use `enableDepositAddress=true`.
  - `refundAddress` is required. Use the user's address on the origin chain.
  - Amounts are in smallest units (6 decimals for USDC: 1 USDC = 1000000).
  - Tempo has no native gas token. Gas fees are paid in the user's chosen fee token.
  ````
</Accordion>

## What the skill does

1. **Gets the Tempo wallet address** via `tempo wallet whoami`.
2. **Checks balances** across all chains for the user's wallet.
3. **Gets a deposit quote** to bridge tokens to Tempo (chain `4217`).
4. **Executes the transfer** programmatically or displays deposit instructions.
5. **Tracks status** until the funds arrive as USDC.E on Tempo.

<Info>
  All tokens are converted to USDC.E on arrival. Your agent can bridge ETH, USDC, USDT, or any supported token from any EVM chain.
</Info>

## Learn more

* [Deposit address flow](/integrate/integration-guides/deposit) for the full deposit API reference
* [For Agents](/for-agents/intro) for other machine-readable resources
