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

# Статусы депозита

> Полный жизненный цикл депозита, on-chain статусы и связь с webhooks

Депозит несёт два уровня статуса:

* **бизнес-статус** — поле `status` в объекте депозита (например `check`, `process`, `paid`);
* **on-chain статус** — поле `transaction.networkStatus`, которое появляется, когда замечена
  входящая транзакция.

Бизнес-статус отвечает за вашу логику (зачислить клиенту, запросить доплату, вернуть средства),
а on-chain статус показывает, что именно сейчас происходит с транзакцией в сети.

## Бизнес-статусы (`status`)

| Статус           | Терминальный | Значение                                                |
| ---------------- | :----------: | ------------------------------------------------------- |
| `check`          |      нет     | депозит создан, ждём входящую оплату                    |
| `process`        |      нет     | транзакция замечена, набирает подтверждения             |
| `confirm_check`  |      нет     | подтверждения достигнуты, идёт финальная проверка суммы |
| `paid`           |      да      | оплачено ровно ожидаемой суммой                         |
| `paid_over`      |      да      | оплачено больше ожидаемого (переплата)                  |
| `wrong_amount`   |      да      | оплачено меньше ожидаемого (недоплата)                  |
| `expired`        |      да      | окно мониторинга истекло без оплаты                     |
| `cancel`         |      да      | депозит отменён                                         |
| `fail`           |      да      | ошибка обработки депозита                               |
| `system_fail`    |      да      | внутренняя ошибка платформы                             |
| `refund_process` |      нет     | инициирован возврат средств                             |
| `refund_paid`    |      да      | возврат отправлен                                       |
| `refund_fail`    |      да      | возврат не удался                                       |

## Поток статусов

```
check → process → confirm_check → paid
                                 → paid_over
                                 → wrong_amount

check → expired | cancel | fail | system_fail

paid | paid_over | wrong_amount → refund_process → refund_paid | refund_fail
```

### Что означает каждый переход

<Steps>
  <Step title="check → process">
    Платформа заметила первую входящую транзакцию на адрес (и memo) депозита. В этот момент
    появляется объект `transaction`. Срабатывает webhook `deposit.tx_detected`.
  </Step>

  <Step title="process → confirm_check">
    Транзакция набрала требуемое число подтверждений (`transaction.confirmations` достигло
    `transaction.requiredConfirmations`). Платформа выполняет финальную сверку фактической
    суммы с ожидаемой. Промежуточный статус, webhook не шлётся.
  </Step>

  <Step title="confirm_check → paid | paid_over | wrong_amount">
    Депозит финализирован. Исход зависит от суммы:
    `paid` — получено ровно `expectedAmount`; `paid_over` — получено больше;
    `wrong_amount` — получено меньше. Срабатывает webhook `deposit.finalized`.
  </Step>

  <Step title="check → expired">
    Истекло окно мониторинга (`expiresAt`), а оплата так и не пришла. Срабатывает webhook
    `deposit.failed`.
  </Step>

  <Step title="check → cancel | fail | system_fail">
    Депозит отменён (`cancel`) либо завершился ошибкой обработки (`fail`) или внутренней
    ошибкой платформы (`system_fail`). Для `fail` / `system_fail` срабатывает webhook
    `deposit.failed`.
  </Step>

  <Step title="paid* → refund_process → refund_paid | refund_fail">
    Запущен возврат средств отправителю. По завершении статус становится `refund_paid`
    (возврат отправлен, срабатывает webhook `deposit.refunded`) или `refund_fail` (возврат
    не удался).
  </Step>
</Steps>

<Note>
  `paid`, `paid_over` и `wrong_amount` — все три считаются «оплаченными» исходами. Сравните
  `transaction.receivedAmount` с `expectedAmount`, чтобы выбрать действие: зачислить клиенту,
  вернуть разницу при переплате или запросить доплату при недоплате. Если `expectedAmount`
  равен `"0"`, принимается любая сумма и исход всегда `paid`.
</Note>

## On-chain статусы (`transaction.networkStatus`)

Появляются внутри объекта `transaction`, как только замечена входящая tx.

| Статус      | Значение                                    |
| ----------- | ------------------------------------------- |
| `pending`   | транзакция создана/замечена, ещё не в блоке |
| `mempool`   | в мемпуле, набирает подтверждения           |
| `confirmed` | подтверждена сетью                          |
| `fail`      | транзакция отклонена сетью                  |

<Tip>
  Для сетей с детерминированной финальностью (например TON) транзакция может прийти сразу со
  статусом `confirmed` и `confirmations` равным `requiredConfirmations` — депозит финализируется
  практически мгновенно. Для EVM-подобных сетей `confirmations` растёт постепенно от 0 до
  требуемого порога.
</Tip>

## Когда приходят webhooks

| Событие               | Триггер                                            |
| --------------------- | -------------------------------------------------- |
| `deposit.tx_detected` | первая входящая tx замечена (переход в `process`)  |
| `deposit.finalized`   | финализация: `paid` / `paid_over` / `wrong_amount` |
| `deposit.failed`      | `fail` / `system_fail` / `expired`                 |
| `deposit.refunded`    | `refund_paid`                                      |

См. также [Webhooks](/webhooks/overview), [Обзор депозитов](/deposits/overview).
