> ## 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.

# Введение

> Публичный API некастодиального крипто-кошелька для приёма депозитов и отправки выплат

iEXExchanger — серверный некастодиальный крипто-кошелёк для обменников. Публичный API
(`/v1/public/*`) — это интеграционный слой между вашей CMS и кошельком: через него вы
создаёте депозиты, отправляете выплаты, получаете подписанные webhooks и читаете справочники
валют, сетей и балансов.

<Info>
  У каждого клиента — **свой инстанс** (свой сервер, свои ключи, своя БД, свой base URL).
  Поэтому все примеры в документации используют плейсхолдер `https://wallet.your-exchange.com` —
  замените его на адрес вашего инстанса. См. [Окружения](/environments).
</Info>

## Что можно делать через API

<CardGroup cols={2}>
  <Card title="Принимать депозиты" icon="arrow-down" href="/deposits/overview">
    Создать адрес на оплату, отслеживать поступление, получать webhooks при финализации.
  </Card>

  <Card title="Отправлять выплаты" icon="arrow-up" href="/payouts/overview">
    Создать выплату на адрес получателя, оценить комиссию, отслеживать подтверждение.
  </Card>

  <Card title="Webhooks" icon="bell" href="/webhooks/overview">
    Подписанные HMAC-уведомления о смене статусов депозитов и выплат.
  </Card>

  <Card title="Валюты, сети, балансы" icon="list" href="/currencies">
    Читать каталог активов, список сетей и доступные средства hot-кошельков.
  </Card>
</CardGroup>

## Ключевые принципы

* **Подпись каждого запроса.** Каждый вызов `/v1/public/*` подписывается `HMAC-SHA256`.
  Секрет (`api_secret`) **никогда не передаётся по сети** — сервер проверяет подпись
  у себя. См. [Аутентификация](/authentication).
* **Деньги — строками.** Все суммы передаются как `string` (например `"100.50"`), чтобы
  избежать потерь точности `float`. В базе — `NUMERIC(36, 18)`.
* **Идемпотентность.** Повтор запроса с тем же `order_id` (или с тем же
  `X-Idempotency-Key`) не создаёт дубликат. См. [Идемпотентность](/idempotency).
* **Единый конверт ответа.** Успех — `{ "ok": true, "data": ... }`, ошибка —
  `{ "ok": false, "error": { "code": "...", "message": "..." } }`. См. [Ошибки](/errors).
* **IP-whitelist.** Запросы принимаются только с IP-адресов из белого списка вашего сайта
  (если он задан). См. [Окружения](/environments).

## Конверт ответа

Любой ответ API — это конверт. Всегда сначала проверяйте поле `ok`, затем читайте `data`
или `error`.

<CodeGroup>
  ```json Успех theme={null}
  {
    "ok": true,
    "data": {
      "uuid": "8f1c2e7a-2b1d-4c3e-9a5f-0c1d2e3f4a5b"
    }
  }
  ```

  ```json Ошибка theme={null}
  {
    "ok": false,
    "error": {
      "code": "INSUFFICIENT_HOT_WALLET_BALANCE",
      "message": "Not enough available balance to cover this payout"
    }
  }
  ```
</CodeGroup>

## С чего начать

<Card title="Быстрый старт: первый депозит за 5 минут" icon="rocket" href="/quickstart" horizontal>
  Получите API-ключ, подпишите запрос, создайте депозит и поймайте webhook.
</Card>

<CardGroup cols={2}>
  <Card title="Аутентификация" icon="key" href="/authentication">
    Как подписать запрос HMAC-SHA256.
  </Card>

  <Card title="Окружения" icon="server" href="/environments">
    Base URL, IP-whitelist, health-проверка.
  </Card>

  <Card title="Валюты и сети" icon="coins" href="/currencies">
    Справочники `assets`, `networks`, `balances`.
  </Card>

  <Card title="Коды ошибок" icon="triangle-exclamation" href="/errors">
    Полный список кодов и как на них реагировать.
  </Card>
</CardGroup>

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

<AccordionGroup>
  <Accordion title="Где взять base URL?">
    Base URL индивидуален для вашего инстанса и выдаётся при подключении. Все эндпоинты
    живут под `/v1/public/*`. Подробнее — [Окружения](/environments).
  </Accordion>

  <Accordion title="Передаётся ли api_secret по сети?">
    Нет. Секрет используется только локально для вычисления `X-Signature`. По сети уходит
    лишь подпись. См. [Аутентификация](/authentication).
  </Accordion>

  <Accordion title="Почему суммы — строки, а не числа?">
    Чтобы не терять точность на `float`. Передавайте и читайте суммы как строки
    (`"100.50"`), а для арифметики используйте decimal-библиотеку на своей стороне.
  </Accordion>

  <Accordion title="Как избежать дубликатов при ретраях?">
    Используйте идемпотентность: задайте `orderId` в теле запроса и/или передайте
    `X-Idempotency-Key`. См. [Идемпотентность](/idempotency).
  </Accordion>
</AccordionGroup>
