Skip to content

Выплаты

Выплата — движение денег в обратную сторону: мерчант отправляет средства со своего счёта получателю. Технически это такая же транзакция, как платёж, с тем же путём через каскад гейтов и драйверы, но с двумя принципиальными отличиями: деньги наши собственные, и проверять их достаточность нужно до обращения к банку.

Чем отличается от платежа

ПлатёжВыплата
Направление денегК мерчантуОт мерчанта
Что проверяем перед банкомЛимиты и антифродПрежде всего наличие средств на счёте
Чьи реквизиты нужныПлательщикаПолучателя
Аутентификация держателя3DSНе применяется
Риск ошибкиНе приняли деньгиОтправили деньги не туда

Отсутствие 3DS — важное следствие: в выплате нет шага, на котором операцию подтверждает человек. Значит, нет и естественной паузы, во время которой можно одуматься, а неверные реквизиты приводят к реальной потере денег.

Как это выглядит целиком

Как это происходит

Мерчант инициирует выплату через публичный API — Create withdrawal transaction, указав сумму, валюту и реквизиты получателя. Если реквизит — карта, запрос обязан прийти в PCI-контур, как и любой другой запрос с карточными данными. Есть и вариант, когда реквизиты вводит не сервер мерчанта, а человек: тогда используется отдельная форма токенизации, и карта попадает к нам оттуда.

Ядро создаёт транзакцию типа «выплата» и сразу проверяет счёт. Если доступных средств не хватает, операция отклоняется, не дойдя до банка. При создании выплаты сумма помещается в удержание — это защита от того, чтобы одни и те же деньги ушли дважды, пока первая выплата в обработке.

Дальше путь знакомый: выбор гейта в каскаде, обращение к драйверу, ответ банка, при необходимости переспрос статуса, финализация и уведомление мерчанта. Мерчант может и сам спросить результат — Check transaction status работает одинаково для платежей и выплат. Не все гейты умеют выплаты — каскад для них обычно настроен отдельно от приёма платежей.

Разделённые выплаты

Крупную выплату иногда невозможно провести одной операцией: у банка есть лимит на разовый перевод. В этом случае система разбивает её на части, каждая из которых проводится самостоятельно, а родительская транзакция отражает общий результат. При разборе такой операции всегда нужно смотреть и на родителя, и на части: успех одной части не означает успеха выплаты целиком.

Блокировки

Выплаты можно приостановить — как для конкретного мерчанта, так и в целом. Это операционный инструмент, которым пользуются, когда есть подозрения или когда идёт разбирательство. Для разработчика это означает, что отказ выплаты не всегда техническая ошибка: сначала стоит проверить, не действует ли блокировка.

Где ломается чаще всего

СимптомОбычная причина
Отказ сразу после запросаНедостаточно доступных средств: сумма есть, но она в удержании
Отказ без обращения к банкуДействует блокировка выплат или в каскаде нет гейта, умеющего выплаты
Выплата завислаБанк не ответил окончательно, работает переспрос статуса
Часть суммы ушла, часть нетРазделённая выплата, часть операций не прошла
Сумма отличается от запрошеннойОкругление до шага, поддерживаемого банком

Куда дальше

Внутренняя база знаний. Нашли неточность — поправьте страницу или заведите вопрос в разделе «Открытые вопросы».