Перейти к содержимому

Статусы сделок

Статус — единственное поле, по которому определяется, что произошло со сделкой. Оно приходит и в ответах API (status), и в каждом webhook-уведомлении. Эта страница — канонический перечень: остальные разделы ссылаются на неё, а не повторяют её.

СтатусPay-InPay-OutФинальныйЧто означает
pending—✓нетВыплата принята и ждёт исполнителя
active✓✓нетPay-In: реквизиты выданы, ждём оплату. Pay-Out: выплата в работе
checking✓—нетИдёт автоматическая сверка поступившего платежа
checking_manually✓—нетПлатёж проверяется вручную
manual_review—✓нетВыплата поставлена на ручное подтверждение
dispute✓✓нетПо сделке открыт спор
success✓✓даОперация завершена на исходную сумму
success_changed✓✓даОперация завершена, сумма пересчитана по факту
canceled✓✓даОперация отменена, причина — в dispute.cancelReason
┌──────────────────────────────┐
▼ │
создание ──► active ──► checking ──► checking_manually
│ │ │
│ └────────┬───────┘
│ ▼
│ success / success_changed
│
├──► dispute ──► success / success_changed / canceled
│
└──► canceled

active — сделка создана, клиенту выданы реквизиты. С этого момента идёт отсчёт paymentLifetime.

checking и checking_manually — платёж поступил и сверяется: автоматически либо, если автоматика не сошлась, вручную. Эти состояния вы можете увидеть в ответе GET-запроса по сделке. Отдельного уведомления о входе в них не отправляется — следующий webhook придёт уже с результатом сверки.

dispute — открыт спор: клиент утверждает, что оплатил, или сумма разошлась с ожидаемой. Подробно — в разделе Споры.

success — платёж подтверждён на ту сумму, которая была в сделке. Средства зачислены на баланс.

success_changed — платёж подтверждён, но фактическая сумма отличалась от заявленной, и итог пересчитан. Поле amount в уведомлении содержит уже пересчитанное значение — сверяйтесь с ним, а не с суммой, которую отправляли при создании.

canceled — оплата не состоялась. Чаще всего истёк paymentLifetime.

┌──────────────┐
▼ │
создание ──► pending ──► active ──► success / success_changed
│ │
│ ├──► manual_review ──► success / canceled
│ │
│ └──► dispute ──► success / canceled
│
└──► canceled

pending — стартовое состояние: заявка принята, проверена и поставлена в очередь на исполнение.

active — выплата взята в работу, идёт проверка реквизитов и перевод средств.

manual_review — выплата остановлена для ручного подтверждения. Дальше она либо закрывается как success, либо отменяется.

success — средства отправлены по указанным реквизитам, действий с вашей стороны не требуется.

canceled — выплата не состоялась: неверные реквизиты, невозможность зачисления или отмена с вашей стороны.

Когда сделка уходит в canceled, причина приходит в dispute.cancelReason.

ЗначениеКогда возникает
TIMEOUTИстекло время на оплату Pay-In сделки
USER_CANCELEDОтмену инициировали вы — через API или через платёжную страницу
MERCHANT_CANCELEDСделку отменила сторона, обслуживающая платёж
WRONG_REQUISITEВыплата невозможна по переданным реквизитам
NONEОтмена по решению поддержки: ручная проверка не пройдена либо изменение суммы не подтверждено

Matching-заявка — не сделка, но её состояние приходит в том же формате. Отличить такое уведомление можно по полю category:

ПолеУведомление о сделкеУведомление о matching
categorytradematching
idID сделкиID matching-заявки
statusстатус сделкисостояние заявки в терминах статусов сделки
crypto, rate, feeфактические значениявсегда 0
factFiatAmount—сумма, фактически закрытая входящими платежами
tradeIdsAll / tradeIdsSuccess—ID всех и только успешных связанных сделок

Состояние заявки отображается в статусы так:

Состояние заявкиПриходит как
Открыта или частично наполненаactive
Закрыта полностью на исходную суммуsuccess
Закрыта, но фактическая сумма отличается от заявленнойsuccess_changed
Отмененаcanceled

Подробнее — в разделе Matching.

  • Статус одной сделки меняется несколько раз; ориентируйтесь на текущее значение, а не на последовательность полученных уведомлений — они могут прийти не по порядку.
  • Не пишите логику «если пришёл checking, значит дальше будет success»: сверка может закончиться и спором, и отменой.
  • Ветку success_changed обрабатывайте наравне с success, иначе часть успешных платежей у вас зависнет.
  • Всё, что не входит в список финальных, считайте «ещё не решено».

Полный контракт уведомления и правила его обработки — в разделах Webhook и Надёжность интеграции.