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

Споры

Спор нужен, когда клиент оплатил, а сделка не закрылась успешно: истёк таймер, сумма разошлась с заявленной или платёж не сопоставился автоматически. Вы загружаете чек, платформа проверяет платёж и выносит решение.

СитуацияОткрывать спор
Клиент перевёл деньги, сделка ушла в canceled по тайм-аутуДа
Клиент перевёл сумму, отличную от суммы сделкиДа
Клиент утверждает, что платил, но подтверждения нетДа, если есть чек
Сделка в success, но клиент недоволенНет — обращайтесь к менеджеру
Клиент не платил и не собиралсяНет — сделка отменится сама

Спор можно открыть по сделке в статусе active или canceled. По сделке в любом другом статусе запрос вернёт TRADE_NOT_FOUND.

ОграничениеЗначение
Срок подачи14 дней с момента создания сделки
Число споров по одной сделкеОграничено настройкой кабинета — уточните лимит у менеджера
Размер файла чекаДо 5 МБ
Форматы чекаpdf, png, jpg, jpeg, heic, heif, а также видео mp4, mov, 3gp, avi, mkv, webm, mpeg

После 14 дней запрос вернёт MERCHANT_DISPUTE_CREATE_WINDOW_EXPIRED, после исчерпания попыток — MERCHANT_MAX_APPEALS_PER_TRADE_REACHED. Оба ограничения не обходятся повторной отправкой.

Спор открывается в два запроса: сначала загружается чек, потом создаётся сам спор.

POST /file/pay-in/invoice/upload?id={tradeId} HTTP/1.1
Host: https://svc.cashwell.io
Content-Type: multipart/form-data
X-Secure-Key: <ваш API-ключ>

Файл передаётся в поле file. В ответ придёт ключ:

{ "uploadMetaKey": "mjuikrewfmnrgbhty4ui3okqwmefnbght4yu3irkefjghy4tu38i" }
POST /payment/pay-in/{id}/dispute HTTP/1.1
Host: https://svc.cashwell.io
Content-Type: application/json
X-Secure-Key: <ваш API-ключ>
{
"uploadMetaKey": "mjuikrewfmnrgbhty4ui3okqwmefnbght4yu3irkefjghy4tu38i",
"amount": 4850.00
}
ПолеОбяз.Описание
uploadMetaKeyдаКлюч, полученный на шаге 1
amountнетФактически уплаченная сумма, если она отличается от суммы сделки. По умолчанию берётся сумма сделки

В пути {id} принимается как идентификатор сделки на нашей стороне, так и ваш merchantTransactionId. Сегмент перед {id} — тип сделки: pay-in или pay-out.

Если спор открыт по ошибке или клиент нашёлся:

POST /payment/pay-in/{id}/dispute/cancel

Отмена возможна, пока решение не принято.

Сделка выходит из dispute в один из финальных статусов:

ИсходЧто произошло
successПлатёж подтверждён на исходную сумму, средства зачислены
success_changedПлатёж подтверждён, сумма пересчитана по факту. Итог — в поле amount уведомления
canceledПлатёж не подтверждён, зачисления не будет

Если спор отклонён, причина приходит в dispute.disputeTraderDeclineReason:

ЗначениеЧто означает
payment_not_foundПлатёж не найден в выписке по реквизиту
different_requisiteПлатёж ушёл на другой реквизит
other_transactionЧек относится к другой операции
other_bankПлатёж пришёл из другого банка, чем указано в сделке

Спор рассматривается человеком, поэтому он идёт дольше обычной сделки. Штатное окно на ответ противоположной стороны — 30 минут; в ночные часы по московскому времени оно продлевается до утра.

Пока спор идёт, сделка может несколько раз сменить статус. Финальным считайте только success, success_changed или canceled.