# Сиротские транзакции

В этом разделе представлены методы для получения и вывода сиротских транзакций.

**Сиротские транзакции** - это транзакции случайно отправленный на адрес, который\
был создан для другой монеты.

При обнаружении такой транзакции вы можете вывести полученные монеты на указанный адрес.\
У транзакций есть две стадии `DEPOSIT` и `WITHDRAWAL`. Вывод можно создать когда транзакция\
находиться на стадии `DEPOSIT` и в статусе `PROCESSED`, так же в теле транзакции есть параметр`canWithdrawal` на который можно ориентироваться при попытке вывода.

После вывода вам придет вебхук на указанный URL при запросе вывода (тело вебхука будет идентично телу вывода).\
Так же в теле сиротской транзакции появится исходящая транзакция в поле `outTransaction`

## Описание полей транзакции

| Поле             | Описание                                                                               |
| ---------------- | -------------------------------------------------------------------------------------- |
| `id`             | Идентификатор транзакции в системе                                                     |
| `organizationId` | Идентификатор организации, которой принадлежит адрес                                   |
| `orderId`        | Идентификатор ордера, к которому был привязан адрес в момент обнаружения транзакции    |
| `stage`          | Текущая стадия транзакции. Доступно 2 значени: `DEPOSIT` и `WITHDRAWAL`                |
| `status`         | Статус текущей стадии тразакции                                                        |
| `message`        | Сообщение при отклонении операции                                                      |
| `currency`       | Монета транзакции                                                                      |
| `network`        | Сеть транзакции                                                                        |
| `amount`         | Сумма транзакции                                                                       |
| `canWithdrawal`  | Доступен ли вывод монет. (Доступно только на стадии `DEPOSIT` и в статусе `PROCESSED`) |
| `inTransaction`  | Данные входящей транзакции                                                             |
| `outTransaction` | Данные исходящей транзакции если был запрошен вывод                                    |
| `createdAt`      | Дата обноружения транзакции                                                            |

***

Входящая тразакция:

| Поле          | Описание                                 |
| ------------- | ---------------------------------------- |
| `addressType` | Тип адреса, на который пришла транзакция |
| `addressId`   | Идентификатор адреса в системе           |
| `address`     | Адрес в блокчейне                        |
| `txId`        | Идентификатор транзакции в блокчейне     |
| `amount`      | Сумма транзакции                         |
| `status`      | Статус транзакции                        |
| `createdAt`   | Дата обнарущения транзакции              |

Исходящая тразакция тразакция:

| Поле           | Описание                                      |
| -------------- | --------------------------------------------- |
| `address`      | Адрес в блокчейне                             |
| `txId`         | Идентификатор транзакции в блокчейне          |
| `amount`       | Сумма транзакции                              |
| `status`       | Статус транзакции                             |
| `feeAmount`    | Комиссия сети за транзакцию                   |
| `feeAmountUSD` | Комиссия сети за транзакцию в пересчете к USD |
| `withdrawalId` | Идентификатор вывода в системе                |
| `createdAt`    | Дата создания запроса на вывод                |

***

Описание поля `addressType`:

| Значение    | Описание                        |
| ----------- | ------------------------------- |
| `PAY_IN`    | Адрес для платежей              |
| `PAY_OUT`   | Выплатной адрес                 |
| `BUSINESS`  | Бизнек кошелек                  |
| `RECURRENT` | Адрес для рекуррентных платежей |
| `PERSONAL`  | Персональный адрес              |

Описание поля `status`:

| Значение    | Описание                          |
| ----------- | --------------------------------- |
| `init`      | Транзакция была создана в системе |
| `processed` | Успешно обработана                |
| `error`     | Ошибка в процессе обработки       |
| `rejected`  | Отклонена системой                |
| `pending`   | В процессе обработки              |

***

Стадии транзакции:

| Стадия       | Описание                                                                           |
| ------------ | ---------------------------------------------------------------------------------- |
| `DEPOSIT`    | Был получен депозит, для вывода необходимо дождаться перехода в статус `PROCESSED` |
| `WITHDRAWAL` | Был запрошен вывод полученных монет.                                               |

***

Статусы транзакции:

| Статус      | Описание                                                                                                                                                             |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PENDING`   | Операция в процессе исполнения. Для стадии `DEPOSIT` - ожидание подтверждений входящей транзакции. Для стадии `WITHDRAWAL` - ожидание отправки транзакции в блокчейн |
| `PROCESSED` | Операция успешно исполнена. Для стадии `DEPOSIT` - входящая транзакция подтверждена. Для стадии `WITHDRAWAL` - транзакция успешно отправлена                         |
| `ERROR`     | Ошибка при обработке операции                                                                                                                                        |
| `REJECTED`  | Операция отклонена                                                                                                                                                   |

## Токен комиссии

Для запроса токена комиссии необходимо указать идентификатор сиротской транзкции. Токен формируется для сумма, которая пришла на адрес в полном обьеме.

| Поле               | Описание                                                                                           |
| ------------------ | -------------------------------------------------------------------------------------------------- |
| `currency`         | Монета вывода                                                                                      |
| `network`          | Сеть вывода                                                                                        |
| `feeSource`        | Источник списания комиссии. Доступно 2 значения: `ADDRESS`, `ADVANCE`                              |
| `blockchainFee`    | Комиссия сети в монете транзакции                                                                  |
| `blockchainFeeUSD` | Комиссия сети в пересчете к USD                                                                    |
| `serviceFee`       | Комиссия сервиса                                                                                   |
| `serviceFeeUSD`    | Комиссия сервиса в USD                                                                             |
| `amount`           | Сумма вывода                                                                                       |
| `amountTo`         | Сумма, которую получит исходящий адрес после вывода (за вычетом комиссий при `feeSource: ADDRESS`) |
| `price`            | Курс пересчета комиссии сети к USD                                                                 |
| `token`            | Токена вывода                                                                                      |
| `expiresAt`        | Дата истечения токена                                                                              |

***

Описание поля `feeSource`:

| Значение  | Описание                                                                                                                                                            |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ADDRESS` | Источник списания комиссии сети за вывод - адрес. В данном случае `blockchainFee` будет взята из суммы вывода, поэтому поля `amount` и `amountTo` будут отличаться. |
| `ADVANCE` | Источник списания комиссии сети за вывод - авансовый баланс. В данном случае с авансового баланса будет списана `blockchainFeeUSD` + `blockchainFeeUSD`.            |
