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

# Валюты, сети и балансы

> Справочники assets, networks и balances — поля и примеры

Какие валюты и сети поддерживает ваш инстанс — определяется его настройками. Не хардкодьте
этот список: читайте его через API. Все три эндпоинта ниже — read-only, требуют подписи и
тела не имеют (`GET`).

<Note>
  Валюта в запросах депозитов и выплат указывается полем `assetCode` — это поле `code` из
  каталога активов. Сеть определяется самим `assetCode`: `USDT_TRC20`, `USDT_ERC20`,
  `USDT_TON` и т. д. — это **разные** активы в разных сетях.
</Note>

Базовый адрес в примерах — `https://wallet.your-exchange.com`, идентификатор ключа —
`pk_live_a1b2c3d4`. Схема подписи для GET — [Аутентификация](/authentication) (тело пустое,
сообщение для подписи = `"<timestamp>."`).

## Активы

`GET /v1/public/assets` — список активных валют, доступных для депозитов и выплат. Возвращает
только публичные поля; внутренние идентификаторы и адреса системных кошельков не отдаются.

<CodeGroup>
  ```bash cURL theme={null}
  TS=$(date +%s)
  SIG=$(printf '%s.' "$TS" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | sed 's/^.* //')
  curl "https://wallet.your-exchange.com/v1/public/assets" \
    -H "X-Api-Id: pk_live_a1b2c3d4" -H "X-Timestamp: $TS" -H "X-Signature: $SIG"
  ```

  ```javascript Node.js theme={null}
  const res = await fetch(`${BASE_URL}/v1/public/assets`, {
    headers: signedHeaders(null), // GET -> тело пустое
  });
  const { ok, data } = await res.json();
  // data — массив активов; используйте data[i].code как assetCode в запросах
  ```
</CodeGroup>

```json 200 OK theme={null}
{
  "ok": true,
  "data": [
    {
      "code": "USDT_TRC20",
      "symbol": "USDT",
      "displayName": "Tether USD (TRC-20)",
      "network": "TRON",
      "tokenStandard": "TRC20",
      "decimals": 6,
      "depositEnabled": true,
      "payoutEnabled": true,
      "contractAddress": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
      "minDeposit": "1",
      "minPayout": "1"
    },
    {
      "code": "TRX",
      "symbol": "TRX",
      "displayName": "TRON",
      "network": "TRON",
      "tokenStandard": null,
      "decimals": 6,
      "depositEnabled": true,
      "payoutEnabled": true,
      "contractAddress": null,
      "minDeposit": "1",
      "minPayout": "1"
    }
  ]
}
```

### Поля актива

<ResponseField name="code" type="string">
  Код актива. Используйте его как `assetCode` при создании депозита или выплаты
  (например `USDT_TRC20`, `TRX`).
</ResponseField>

<ResponseField name="symbol" type="string">
  Тикер валюты (например `USDT`).
</ResponseField>

<ResponseField name="displayName" type="string">
  Человекочитаемое название (например `Tether USD (TRC-20)`).
</ResponseField>

<ResponseField name="network" type="string">
  Код сети актива (например `TRON`). Сопоставляется с `code` из [списка сетей](#сети).
</ResponseField>

<ResponseField name="tokenStandard" type="string | null">
  Стандарт токена: `TRC20`, `ERC20`, `BEP20`, `JETTON` и т. п. `null` — для нативной
  монеты сети.
</ResponseField>

<ResponseField name="decimals" type="number">
  Число десятичных знаков актива. Суммы с большим числом знаков после запятой будут
  отвергнуты с кодом `AMOUNT_TOO_MANY_DECIMALS`.
</ResponseField>

<ResponseField name="depositEnabled" type="boolean">
  Доступны ли депозиты в этом активе.
</ResponseField>

<ResponseField name="payoutEnabled" type="boolean">
  Доступны ли выплаты в этом активе.
</ResponseField>

<ResponseField name="contractAddress" type="string | null">
  Адрес контракта токена (публичная on-chain информация). `null` — для нативной монеты.
</ResponseField>

<ResponseField name="minDeposit" type="string">
  Минимальная сумма депозита (строка). Меньшая сумма даст `AMOUNT_BELOW_MINIMUM`.
</ResponseField>

<ResponseField name="minPayout" type="string">
  Минимальная сумма выплаты (строка). Меньшая сумма даст `AMOUNT_BELOW_MINIMUM`.
</ResponseField>

<Tip>
  Проверяйте `depositEnabled` / `payoutEnabled` перед операцией: даже активный актив может
  быть временно закрыт на одну из сторон.
</Tip>

## Сети

`GET /v1/public/networks` — включённые сети с метаданными. В список попадают только сети,
у которых есть хотя бы один активный актив и которые включены в настройках инстанса.

<CodeGroup>
  ```bash cURL theme={null}
  TS=$(date +%s)
  SIG=$(printf '%s.' "$TS" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | sed 's/^.* //')
  curl "https://wallet.your-exchange.com/v1/public/networks" \
    -H "X-Api-Id: pk_live_a1b2c3d4" -H "X-Timestamp: $TS" -H "X-Signature: $SIG"
  ```

  ```javascript Node.js theme={null}
  const res = await fetch(`${BASE_URL}/v1/public/networks`, {
    headers: signedHeaders(null),
  });
  const { data } = await res.json(); // массив сетей, отсортирован по code
  ```
</CodeGroup>

```json 200 OK theme={null}
{
  "ok": true,
  "data": [
    {
      "code": "TON",
      "displayName": "Gram",
      "archetype": "memo_based",
      "nativeSymbol": "GRAM",
      "enabled": true,
      "defaultConfirmations": 1
    },
    {
      "code": "TRON",
      "displayName": "TRON",
      "archetype": "account_based",
      "nativeSymbol": "TRX",
      "enabled": true,
      "defaultConfirmations": 19
    }
  ]
}
```

### Поля сети

<ResponseField name="code" type="string">
  Код сети (например `TRON`, `TON`). Совпадает с полем `network` в каталоге активов.
</ResponseField>

<ResponseField name="displayName" type="string">
  Человекочитаемое название сети (например `TRON`, `Gram`).
</ResponseField>

<ResponseField name="archetype" type="string">
  Архетип сети: `account_based`, `utxo` или `memo_based`. Определяет модель адресации.
</ResponseField>

<ResponseField name="nativeSymbol" type="string">
  Тикер нативной монеты сети (например `TRX`, `GRAM`). В сети TON нативная монета —
  GRAM (ребрендинг Toncoin), сам код сети остаётся `TON`.
</ResponseField>

<ResponseField name="enabled" type="boolean">
  Включена ли сеть и доступна ли для операций.
</ResponseField>

<ResponseField name="defaultConfirmations" type="number">
  Число подтверждений по умолчанию, после которых депозит считается финализированным.
</ResponseField>

## Балансы

`GET /v1/public/balances` — агрегированные доступные средства hot-кошельков по каждому
активу. Это то, чем можно оплачивать выплаты.

<CodeGroup>
  ```bash cURL theme={null}
  TS=$(date +%s)
  SIG=$(printf '%s.' "$TS" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | sed 's/^.* //')
  curl "https://wallet.your-exchange.com/v1/public/balances" \
    -H "X-Api-Id: pk_live_a1b2c3d4" -H "X-Timestamp: $TS" -H "X-Signature: $SIG"
  ```

  ```javascript Node.js theme={null}
  const res = await fetch(`${BASE_URL}/v1/public/balances`, {
    headers: signedHeaders(null),
  });
  const { data } = await res.json(); // массив { assetCode, symbol, network, available, updatedAt }
  ```
</CodeGroup>

```json 200 OK theme={null}
{
  "ok": true,
  "data": [
    {
      "assetCode": "USDT_TRC20",
      "symbol": "USDT",
      "network": "TRON",
      "available": "1530.500000",
      "updatedAt": "2026-06-02T20:58:00.000Z"
    },
    {
      "assetCode": "TRX",
      "symbol": "TRX",
      "network": "TRON",
      "available": "8420.100000",
      "updatedAt": "2026-06-02T20:58:00.000Z"
    }
  ]
}
```

### Поля баланса

<ResponseField name="assetCode" type="string">
  Код актива (тот же, что `code` в каталоге активов).
</ResponseField>

<ResponseField name="symbol" type="string">
  Тикер валюты (например `USDT`).
</ResponseField>

<ResponseField name="network" type="string">
  Код сети актива (например `TRON`).
</ResponseField>

<ResponseField name="available" type="string">
  Доступно на hot-кошельках для выплат (строка, формат `NUMERIC`). Сравнивайте как decimal,
  не как `float`.
</ResponseField>

<ResponseField name="updatedAt" type="string | null">
  Когда баланс последний раз сверялся с сетью (ISO 8601). `null`, если сверки ещё не было.
</ResponseField>

<Tip>
  Перед созданием выплаты сверьтесь с `available` для нужного актива — иначе вернётся
  `INSUFFICIENT_HOT_WALLET_BALANCE`. Помните, что баланс мог измениться между чтением и
  выплатой: используйте `available` как ориентир, а не как гарантию.
</Tip>

## Частые вопросы

<AccordionGroup>
  <Accordion title="Какую валюту передавать в assetCode?">
    Поле `code` из `GET /v1/public/assets` (например `USDT_TRC20`). Сеть определяется самим
    кодом актива — отдельно её передавать не нужно.
  </Accordion>

  <Accordion title="Почему USDT встречается несколько раз?">
    USDT существует в разных сетях как разные активы: `USDT_TRC20` (TRON), `USDT_TON` (TON)
    и т. д. Это разные `assetCode` с разными адресами и контрактами. Отправляйте средства
    строго в той сети, что соответствует `assetCode`.
  </Accordion>

  <Accordion title="Как часто можно дёргать эти эндпоинты?">
    Каталог кешируется на стороне сервера, ответ отдаётся быстро. Тем не менее не опрашивайте
    его в цикле без необходимости — кешируйте у себя и учитывайте общий лимит запросов
    (см. [Лимиты](/rate-limits)).
  </Accordion>

  <Accordion title="Сумма с лишними знаками после запятой отклоняется.">
    Число знаков после запятой не должно превышать `decimals` актива (например 6 для
    `USDT_TRC20`). Иначе вернётся `AMOUNT_TOO_MANY_DECIMALS`. См. [Ошибки](/errors).
  </Accordion>
</AccordionGroup>
