<!-- tempo-docs-context -->
> Source: [/docs/routes/deposits](https://tempo.xyz/developers/docs/routes/deposits.md)
> Section: [Routes](https://tempo.xyz/developers/docs/routes.md). Accept cross-network deposits, quote transfers, and track delivery. Routes is in beta; see the introduction for access.
> [Documentation index](https://tempo.xyz/developers/llms.txt) · [Docs skill](https://tempo.xyz/developers/SKILL.md)

> Tempo MCP: Use `search`, `find_pages`, `read_page`, and `code` at `https://mcp.tempo.xyz` for Tempo and related documentation.
> If an indexed page is missing or reflects an older site, read this site’s [documentation index](https://tempo.xyz/developers/llms.txt) and Markdown pages directly.

# Accept deposits

Give customers a reusable address to fund from an external wallet. Each address accepts a specific network and token and routes funds to your chosen Tempo recipient.

For payments already on Tempo, use [Receive payments](https://tempo.xyz/developers/docs/guide/payments/accept-a-payment). [Virtual addresses](https://tempo.xyz/developers/docs/guide/payments/virtual-addresses) attribute those payments to a shared Tempo balance; they are different from Routes deposit addresses.

## Set up Routes API access

Create a key with `routes:read` and `routes:write` using [API setup](https://tempo.xyz/developers/docs/routes/api-setup). Choose a route with deposit-address support from [Supported routes](https://tempo.xyz/developers/docs/routes/networks). Use the request builders below to try each operation and copy its generated code.

The [complete cURL example](https://tempo.xyz/developers/docs/routes/examples/deposits) defines every input. Keep your API key on the backend; show only the returned funding instructions to customers.

<span id="create-and-monitor-a-deposit-address" />

## Accept a deposit

:::steps
### Quote the deposit

`GET /v1/routes/deposit-addresses/quote`

Quote deposit

[API reference](https://tempo.xyz/developers/docs/api/routes/deposit-addresses#quoteroutesdepositaddress) — request parameters, authentication, and response schema. The examples below use editable sample values.

Requires a [Tempo API key](https://tempo.xyz/developers/docs/api/console/api-keys). Replace `YOUR_API_KEY` before running this request.

**cURL**

```bash
curl 'https://api.tempo.xyz/v1/routes/deposit-addresses/quote?amount=1000000&destinationToken=usdt0&sourceChain=tron&sourceToken=usdt' \
  --header 'tempo-api-key: YOUR_API_KEY'
```

**TypeScript**

```ts
fetch('https://api.tempo.xyz/v1/routes/deposit-addresses/quote?amount=1000000&destinationToken=usdt0&sourceChain=tron&sourceToken=usdt', {
  headers: {
    'tempo-api-key': 'YOUR_API_KEY'
  }
})
```

Review the net destination amount, route deductions, and any separately listed fees before the sender authorizes funding. Check `quote.expiresAt` when returned and refresh expired terms. A quote prices the supplied amount; it does not establish receipt of funds. See [Quotes and fees](https://tempo.xyz/developers/docs/routes/quotes).

<span id="create-a-reusable-address" />

### Create a deposit address

Set a unique `idempotency-key` for the address creation and reuse it for retries with unchanged inputs.

`POST /v1/routes/deposit-addresses`

Create deposit address

[API reference](https://tempo.xyz/developers/docs/api/routes/deposit-addresses#createroutesdepositaddress) — request parameters, authentication, and response schema. The examples below use editable sample values.

Requires a [Tempo API key](https://tempo.xyz/developers/docs/api/console/api-keys). Replace `YOUR_API_KEY` before running this request.

**cURL**

```bash
curl https://api.tempo.xyz/v1/routes/deposit-addresses \
  --request POST \
  --header 'idempotency-key: routes_01k1c5j8q8p0be6j5v9m6d1e4r' \
  --header 'tempo-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "amount": "1000000",
  "destinationToken": "usdt0",
  "recipient": "0x1111111111111111111111111111111111111111",
  "refundAddress": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "sourceChain": "tron",
  "sourceToken": "usdt"
}'
```

**TypeScript**

```ts
fetch('https://api.tempo.xyz/v1/routes/deposit-addresses', {
  method: 'POST',
  headers: {
    'idempotency-key': 'routes_01k1c5j8q8p0be6j5v9m6d1e4r',
    'tempo-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    amount: '1000000',
    destinationToken: 'usdt0',
    recipient: '0x1111111111111111111111111111111111111111',
    refundAddress: 'TJRabPrwbZy45sbavfcjinPJC18kjpRTv8',
    sourceChain: 'tron',
    sourceToken: 'usdt'
  })
})
```

Save the returned `id` and `address` with your customer record. A newly created address includes quote terms; an existing address may not. Obtain a fresh quote before showing funding instructions when terms are absent or stale.

<span id="show-the-funding-instructions" />

### Show funding instructions

Display the returned network, token, and deposit address together. Check that its status is `active` before inviting deposits. Do not present it as an address for arbitrary assets or networks.

<span id="track-each-deposit" />

### Track deposits

Set `depositAddress` to the returned source-chain address, not its `rda_…` object ID.

`GET /v1/routes/deposits`

List deposits

[API reference](https://tempo.xyz/developers/docs/api/routes/deposit-addresses#listroutesdeposits) — request parameters, authentication, and response schema. The examples below use editable sample values.

Requires a [Tempo API key](https://tempo.xyz/developers/docs/api/console/api-keys). Replace `YOUR_API_KEY` before running this request.

**cURL**

```bash
curl 'https://api.tempo.xyz/v1/routes/deposits?sourceChain=tron' \
  --header 'tempo-api-key: YOUR_API_KEY'
```

**TypeScript**

```ts
fetch('https://api.tempo.xyz/v1/routes/deposits?sourceChain=tron', {
  headers: {
    'tempo-api-key': 'YOUR_API_KEY'
  }
})
```

The response lists deposits in `data`. Follow `nextCursor` for subsequent pages. Read each deposit with `GET /v1/routes/deposits/{id}` and reconcile its delivered amount and destination transaction references separately.
:::

## Reconcile delivery and refunds

Save the customer, deposit-address ID, and individual deposit IDs together. The same address can receive multiple deposits. An active address can receive funds; a completed deposit confirms delivery to Tempo. Follow [Track delivery](https://tempo.xyz/developers/docs/routes/delivery) before crediting a balance or treating a refund as complete.

See the [Deposit addresses API reference](https://tempo.xyz/developers/docs/api/routes/deposit-addresses) for the full lifecycle.
