> For the complete documentation index, see [llms.txt](https://sodex.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sodex.com/documentation/for-developers/api-reference/mirror-api/deposit-addresses.md).

# Deposit Addresses

Create or query custody deposit addresses for a SoDEX user. The user path parameter must be a valid EVM address.

## Address creation rate limit

Each single-address or all-address creation request consumes **200 REST weight** from the IP's fixed one-minute budget. The weight is charged per request, not per generated address.

After requesting creation, poll the query endpoint instead of repeatedly submitting creation requests. See [Rate Limits](/documentation/for-developers/developers/trading/api-rate-limits.md#deposit-address-endpoints).

## Query one address

`GET /user/{userAddress}/deposit-address?chain={chain}`

```bash
curl "https://mainnet-gw.sodex.dev/api/v1/user/0x1111111111111111111111111111111111111111/deposit-address?chain=TON" \
  -H "Accept: application/json"
```

## Create one address

`POST /user/{userAddress}/deposit-address`

```bash
curl -X POST \
  "https://mainnet-gw.sodex.dev/api/v1/user/0x1111111111111111111111111111111111111111/deposit-address" \
  -H "Content-Type: application/json" \
  -d '{"chain":"TON"}'
```

## Create all supported addresses

`POST /user/{userAddress}/deposit-addresses`

This endpoint starts address creation for all custody chains available to the user. Its `data.accountAddresses` value is an array of deposit-address objects.

## Deposit-address object

| Field     | Type   | Description                                                 |
| --------- | ------ | ----------------------------------------------------------- |
| `chain`   | string | Exact chain identifier returned by Asset Configuration.     |
| `address` | string | Deposit address; it can be empty while creation is pending. |
| `status`  | string | Empty, `Processing`, `Enabled`, or `Suspicious`.            |

Poll a newly created address until it becomes `Enabled` or `Suspicious`. Never display an empty, processing, or suspicious address as a valid deposit destination. `Enabled` is not enough by itself — verify the string on ValueChain as described in [Generate Custody Address](/documentation/for-developers/developers/mirror-protocol/generate-address.md).
