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

Выплаты (Pay-Out)

Pay-Out — вывод средств с баланса кабинета на реквизиты получателя. В отличие от Pay-In, реквизиты передаёте вы: платформа находит исполнителя, который переведёт деньги, и подтверждает результат.

Сумма списывается с баланса в USDT по курсу, зафиксированному при создании заявки.

  1. Вы вызываете POST /payment/pay-out с суммой и реквизитами получателя.
  2. Заявка принимается в статусе pending и встаёт в очередь.
  3. Исполнитель берёт её в работу — статус меняется на active.
  4. Деньги уходят получателю, заявка закрывается как success.

На каждом переходе приходит webhook. Перечень статусов — в разделе Статусы сделок.

POST /payment/pay-out HTTP/1.1
Host: https://svc.cashwell.io
Content-Type: application/json
X-Secure-Key: <ваш API-ключ>
{
"amount": 10000,
"merchantTransactionId": "payout-2001",
"callbackUrl": "https://example.com/callback",
"timeoutInMin": 60,
"requisite": {
"sbpNumber": "79123215109",
"bank": "SBER",
"ownerName": "Иван Иванов"
}
}
ПолеТипОбяз.Описание
amountnumberдаСумма в фиатной валюте, от 100 до 1 000 000
merchantTransactionIdstringдаВаш идентификатор операции. Должен быть уникален в рамках кабинета
requisiteobjectдаРеквизиты получателя — см. ниже
currencystringнетФиатная валюта операции. По умолчанию — валюта кабинета
callbackUrlstringнетАдрес для webhook по этой выплате
timeoutInMinnumberнетЧерез сколько минут отменить заявку, если её не взяли в работу. От 1 до 1440
payerInfoobjectнетДанные получателя в вашей системе
isMatchingbooleanнетСоздать не выплату, а matching-заявку — см. Matching
matchingTransactionIdstringнетВнешний идентификатор matching-заявки

В объекте requisite передаётся один платёжный идентификатор — он и определяет способ перевода.

ПолеОписание
sbpNumberНомер телефона для перевода по СБП
cardNumberНомер банковской карты, 14–18 цифр
ostCardNumberНомер карты для перевода по каналу OST C2C
qrCodeQR-ссылка или строка QR для оплаты
bankБанк получателя
ownerNameИмя владельца платёжного средства

Если на балансе не хватает средств, заявка не создаётся: запрос вернёт 403 INSUFFICIENT_FUNDS. Текущий баланс — методом «Баланс кабинета».

timeoutInMin задаёт, сколько заявка ждёт исполнителя, прежде чем будет отменена автоматически. Значение приходит обратно в поле paymentLifetime.

Отсчёт идёт до момента, когда заявку взяли в работу. Уже начатая выплата по тайм-ауту не отменяется.

POST /payment/pay-out/{id}/cancel

Отменить можно заявку, которую ещё не начали исполнять. Средства возвращаются на баланс, сделка уходит в canceled.

Время обработки не фиксировано. Оно зависит от метода, суммы и загрузки системы. Не выставляйте в своей системе жёсткий дедлайн короче timeoutInMin.

Статус может вернуться назад. Переход active → pending означает, что заявку пришлось переназначить другому исполнителю. Это штатное поведение: не создавайте выплату заново, дождитесь финального статуса.

Выплата может уйти на ручное подтверждение. Статус manual_review — заявка остановлена для проверки оператором. Дальше она закроется как success или canceled.

Тот же endpoint обслуживает два дополнительных сценария:

  • Быстрые откупы — выплата по QR-ссылке, где сумма читается из самого QR. Отдельные методы POST /payment/instant-pay-out/validate и POST /payment/instant-pay-out, см. Быстрые откупы по QR.
  • Matching — с флагом isMatching: true вместо выплаты создаётся заявка, которую закрывают входящие invoice-платежи, см. Matching.