Создание апелляций
Оспаривание платежных заявок при проблемах с оплатой
Обзор
Апелляции (споры) позволяют мерчантам оспаривать платежные заявки при возникновении проблем с оплатой. При создании апелляции средства автоматически замораживаются до разрешения спора.
Важно: после создания апелляции заявка переходит в статус dispute, и все средства замораживаются.
Создание апелляции
Endpoint для создания спора по существующей заявке:
Параметры запроса
invoiceId в пути — идентификатор заявки, например cm3k8x7y80001z8j4k5m6n7o8. Тело — multipart/form-data,
набор полей зависит от reason.
Неверная сумма (invalid_sum)
Клиент перевёл не ту сумму — укажите фактическую в disputeReasonData.
Поле
Тип
Остальные причины
Поле
Тип
Пример запроса
const fs = require('fs');
const invoiceId = 'cm3k8x7y80001z8j4k5m6n7o8';
const formData = new FormData();
formData.append('reason', 'invalid_sum');
formData.append('description', 'Клиент отправил 500 RUB вместо 1000 RUB');
formData.append('disputeReasonData', JSON.stringify({ amount: 500 }));
// Уберите эту строку, если файла нет
formData.append('attachment', new Blob([fs.readFileSync('/path/to/screenshot.jpg')]), 'screenshot.jpg');
const response = await fetch(`https://api.parallel-pay.com/api/v1/invoices/${invoiceId}/disputes`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.PARALLEL_TOKEN}`
},
body: formData
});
const result = await response.json();
console.log(result);Пример ответа
{
"id": "disp_abc123xyz789",
"invoiceId": "cm3k8x7y80001z8j4k5m6n7o8",
"reason": "invalid_sum",
"description": "Клиент отправил 500 RUB вместо 1000 RUB",
"disputeReasonData": {
"amount": 500
},
"attachmentUrl": "https://files.parallel-pay.com/disp_abc123xyz789/screenshot.jpg",
"attachmentFilename": "screenshot.jpg",
"status": "open",
"resolution": null,
"resolutionNotes": null,
"createdAt": "2025-11-03T15:10:00+03:00",
"resolvedAt": null,
"autoResolveAt": "2025-11-03T16:10:00+03:00",
"amount": "1000.0000",
"currency": "RUB",
"paymentMethod": "SBP",
"paymentOption": "sberbank",
"requisites": {
"bankName": "sberbank",
"phoneNumber": "79099966512",
"fullName": "Ivan Ivanov"
},
"internalId": "order-12345",
"merchantName": "MerchantName"
}Объект спора
Этот же объект приходит в ответе на открытие спора, в проверке статуса и в теле webhook-уведомления.
Поле
Тип
Автоматическое разрешение спора
Важно: Если спор не будет разрешен в течение 60 минут (1 часа), система автоматически разрешит его в пользу мерчанта (merchant_win).
Проверка статуса спора
После создания спора вы можете проверить его статус через webhook уведомления или через GET endpoint:
Пример запроса:
const disputeId = 'disp_abc123xyz789';
const response = await fetch(`https://api.parallel-pay.com/api/v1/disputes/${disputeId}`, {
headers: {
'Authorization': `Bearer ${process.env.PARALLEL_TOKEN}`
}
});
const dispute = await response.json();
console.log('Status:', dispute.status);
console.log('Resolution:', dispute.resolution);Пример ответа
{
"id": "disp_abc123xyz789",
"invoiceId": "cm3k8x7y80001z8j4k5m6n7o8",
"reason": "invalid_sum",
"description": "Клиент отправил 500 RUB вместо 1000 RUB",
"disputeReasonData": {
"amount": 500
},
"attachmentUrl": "https://files.parallel-pay.com/disp_abc123xyz789/screenshot.jpg",
"attachmentFilename": "screenshot.jpg",
"status": "open",
"resolution": null,
"resolutionNotes": null,
"createdAt": "2025-11-03T15:10:00+03:00",
"resolvedAt": null,
"autoResolveAt": "2025-11-03T16:10:00+03:00",
"amount": "1000.0000",
"currency": "RUB",
"paymentMethod": "SBP",
"paymentOption": "sberbank",
"requisites": {
"bankName": "sberbank",
"phoneNumber": "79099966512",
"fullName": "Ivan Ivanov"
},
"internalId": "order-12345",
"merchantName": "MerchantName"
}