Возвраты платежей
С помощью API ЮKassa можно возвращать успешные платежи. Комиссии за проведение возврата нет. Комиссия ЮKassa за проведение платежа не возвращается.
Особенности
Вернуть деньги через ЮKassa можно только на то платежное средство, которое использовалось для оплаты. Например, если при платеже деньги списали со счета СБП, привязанного к номеру +79998887766, то сделать возврат можно только на этот счет.
Возврат платежа может быть полным или частичным. В первом случае вы возвращаете принятый платеж целиком. Во втором — часть от суммы платежа, например если хотите сделать возврат одного товара, а не всей покупки.
Перед возвратом платежа проверьте:
- платеж успешно завершен и находится в статусе
succeeded; - возврат запрашивается в течение 3 лет с момента создания платежа.
Полный возврат
Чтобы сделать полный возврат, в запросе на создание возврата передайте уникальный идентификатор (
payment_id) и сумму (amount) возвращаемого платежа.Пример запроса на создание возврата
cURL
PHP
Python
curl https://api.yookassa.ru/v3/refunds \ -X POST \ -u <Идентификатор магазина>:<Секретный ключ> \ -H 'Idempotence-Key: <Ключ идемпотентности>' \ -H 'Content-Type: application/json' \ -d '{ "amount": { "value": "2.00", "currency": "RUB" }, "payment_id": "21740069-000f-50be-b000-0486ffbf45b0" }'
Пример тела ответа
JSON
{ "id": "216749f7-0016-50be-b000-078d43a63ae4", "status": "succeeded", "amount": { "value": "2.00", "currency": "RUB" }, "created_at": "2017-10-04T19:27:51.407Z", "payment_id": "21740069-000f-50be-b000-0486ffbf45b0", "refund_authorization_details": { "rrn": "603668680243" }, "metadata": {} }
Частичный возврат
Частичный возврат создается аналогично полному, только в параметре
amount нужно передать ту часть от суммы принятого платежа, которую вы хотите вернуть.Для частичного возврата есть минимальная сумма — 1 рубль. Вы можете сделать сколько угодно частичных возвратов, если:
- сумма всех частичных возвратов не превышает размер платежа;
- после возвратов от суммы платежа осталось не меньше 1 рубля или 0 рублей.
Это значит, что если вы приняли платеж на 10 рублей, то вернуть 9 рублей 50 копеек не получится. Можно вернуть сначала 9 рублей, а потом 1 рубль, либо оформить сразу полный возврат на всю сумму платежа.
Несколько частичных возвратов тоже можно сделать: например, вернуть сначала 3 рубля, затем 5,5. После этого получится оформить только частичный возврат на 1,5 рубля.
Неуспешные возвраты
В процессе возврата что-то может пойти не так. Например, может не хватать денег для возврата. В этом случае возврат будет отменен и перейдет в статус
canceled.Чтобы вы могли лучше понимать, что произошло и что с этим делать, ЮKassa пришлет в объекте возврата комментарий к отмене возврата (
cancellation_details). В нём будут указаны инициатор и причина отмены возврата. Вы можете использовать эти данные для анализа и решения проблем, вывода сообщений пользователю и любых других целей.Пример объекта возврата в статусе canceled
JSON
{ "id": "216749f7-0016-50be-b000-078d43a63ae4", "status": "canceled", "amount": { "value": "2.00", "currency": "RUB" }, "created_at": "2017-10-04T19:27:51.407Z", "payment_id": "21740069-000f-50be-b000-0486ffbf45b0", "cancellation_details": { "party": "yoo_money", "reason": "insufficient_funds" }, "metadata": {} }
Инициаторы отмены возврата
Инициатор отмены возвращается в параметре
party объекта cancellation_details.| Значение | Описание |
|---|---|
| yoo_money | ЮKassa |
| refund_network | Любые участники процесса возврата, кроме ЮKassa и вас (например, НСПК) |
Причины отмены возврата
Причина отмены возвращается в параметре
reason объекта cancellation_details.| Значение | Описание |
|---|---|
| general_decline | Причина не детализирована. Для уточнения подробностей обратитесь в техническую поддержку. |
| insufficient_funds | Не хватает денег, чтобы сделать возврат: сумма платежей, которые вы получили в день возврата, меньше, чем сам возврат, или есть задолженность. Что делать в этом случае |
rejected_by_payee | Эмитент платежного средства или другой участник процесса возврата отклонил операцию по неизвестным причинам. Сделать возврат через ЮKassa нельзя. Предложите пользователю обратиться к эмитенту (например, в банк) для уточнения подробностей и дождитесь ответа:
|
rejected_by_timeout | Технические неполадки на стороне инициатора отмены возврата. Повторите запрос с новым ключом идемпотентности. Если результат не изменится, повторяйте запрос с возрастающим разумным интервалом (например, можно использовать последовательность Фибоначчи). Если прошло более получаса, но вы всё еще получаете rejected_by_timeout, обратитесь к инициатору отмены возврата для уточнения подробностей. |
Что почитать еще