<!-- tempo-docs-context -->
> Source: [/docs/zones/deposit](https://tempo.xyz/developers/docs/zones/deposit.md)
> Section: [Zones](https://tempo.xyz/developers/docs/zones.md). Connect to a Zone and work with private balances, deposits, and withdrawals. Zones is in limited preview; see the introduction for access. Earlier testnet sandbox guides describe a separate integration.
> [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.

<span id="deposit-into-a-zone" />

# Deposit Into a Zone

Deposit stablecoins through the Zone's portal on Tempo, then confirm the private account's credit.

## Overview

A deposit sends stablecoins to the Zone's portal (`ZonePortal`) on Tempo and credits a private account in the Zone. You prepare it, submit it on Tempo, then track the credit.

This page uses the deployment details and authenticated connection from [Connect to a Zone](https://tempo.xyz/developers/docs/zones/connect). Get the operator's supported encryption and contract tooling.

<span id="submit-an-encrypted-deposit" />

## Setup

<span id="check-the-asset-and-recipient" />

:::steps
### Prepare the Deposit

Confirm that the deployment accepts the token. Confirm that the depositor and recipient satisfy its access rules. Choose the private recipient and memo, and a public refund recipient.

<span id="check-the-deposit-fees" />

#### Calculate Deposit Fees

Use the deployed portal's `calculateDepositFee` and `calculateBouncebackFee` helpers. They return the amount the private account can receive and the required failure coverage. Deposit fees come out of the amount sent. Show the expected net credit before authorization. The [deposit fee rules](https://tempo.xyz/developers/docs/protocol/zones/execution#deposit-fees) define the exact calculation.

<span id="encrypt-and-authorize-the-deposit" />

<span id="send-funds" />

### Submit the Deposit

Use the operator's supported tooling to encrypt the private recipient and memo. The tooling encrypts them with the Zone's published encryption key. Approve token spending where required. Then submit the encrypted deposit to the portal on Tempo.

The token, amount, depositor, and refund recipient stay public, as the [privacy model](https://tempo.xyz/developers/docs/zones/privacy) describes.

<span id="confirm-the-private-credit" />

<span id="confirm-arrival" />

### Confirm the Credit

After the Tempo transaction finalizes, [check the Zone credit](https://tempo.xyz/developers/docs/zones/balances) with the recipient's authenticated connection. Save the public deposit reference and private credit record together.
:::

## Track the Deposit

Read the deposit outcome with the [Zone status API](https://tempo.xyz/developers/docs/api/zones). Use the queue hash that `ZonePortal.depositEncrypted` returns, not its transaction hash.

In the playground, select **Try**. Enter the deposit queue hash and the Zone’s numeric `chainId`. Use an API key with `data:read` and access to that Zone. The request tool includes language examples and the response.

`GET /v1/zones/deposits/{depositHash}`

Get Zone deposit

[API reference](https://tempo.xyz/developers/docs/api/zones#getzonedeposit) — 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/zones/deposits/0x1111111111111111111111111111111111111111111111111111111111111111?chainId=1424310003' \
  --header 'tempo-api-key: YOUR_API_KEY'
```

**TypeScript**

```ts
fetch('https://api.tempo.xyz/v1/zones/deposits/0x1111111111111111111111111111111111111111111111111111111111111111?chainId=1424310003', {
  headers: {
    'tempo-api-key': 'YOUR_API_KEY'
  }
})
```

A `pending` deposit hasn't completed. For a failed deposit, inspect `refund.status` and confirm the refund before you retry. Keep using authenticated [balance and activity reads](https://tempo.xyz/developers/docs/zones/balances) for the private account's ledger.

## Handle Deposit Failures

Follow the deployment's [deposit lifecycle](https://tempo.xyz/developers/docs/protocol/zones/bridging#deposits-tempo--zone) for policy failures and refunds. Confirm the eventual credit or refund before you retry a deposit.

If funds start on another network, [route them to Tempo](https://tempo.xyz/developers/docs/routes) first. Then deposit through the portal.

<span id="try-a-sandbox-deposit" />

## Related

[Balances and Activity](https://tempo.xyz/developers/docs/zones/balances): Use for confirming the private credit with an authenticated read.

[Bridging](https://tempo.xyz/developers/docs/protocol/zones/bridging): Covers encrypted deposits, the deposit lifecycle, and refunds.

[Deposit OUSD](https://tempo.xyz/developers/docs/guide/private-zones/deposit-to-a-zone): Use for trying a deposit with test funds in the testnet sandbox.

[Withdraw From a Zone](https://tempo.xyz/developers/docs/zones/withdraw): Use for returning funds to Tempo and tracking delivery.
