Возвраты
С помощью API ЮKassa можно возвращать успешные платежи. Комиссии за проведение возврата нет. Комиссия ЮKassa за проведение платежа не возвращается.
Особенности
Вернуть деньги через ЮKassa можно только на то платежное средство, которое использовалось для оплаты. Например, если при платеже деньги списали с карты
5555
5555
5555
4477
, то сделать возврат можно только на нее.Возврат платежа может быть полным или частичным. В первом случае вы возвращаете принятый платеж целиком. Во втором — часть от суммы платежа, например если хотите сделать возврат одного товара, а не всей покупки. Частичный возврат доступен не для всех способов оплаты.
Перед возвратом платежа проверьте, что:
- платеж со способом оплаты
sberbank
создан менее одного года назад, любым другим способом — менее трех лет назад; - платеж успешно завершен и находится в статусе
succeeded
; - способ оплаты поддерживает нужный вам тип возврата (полный, частичный).
Для банковских карт, Mir Pay: по техническим причинам эквайеры могут отказать в возврате платежей, созданных больше 15 месяцев назад. При попытке возврата вы получите ошибку. В этом случае договоритесь с пользователем напрямую, каким способом вернете ему деньги.
Полный возврат
Чтобы сделать полный возврат, в запросе на создание возврата передайте уникальный идентификатор (
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" } }
Частичный возврат
Частичный возврат создается аналогично полному, только в параметре
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" } }
Инициаторы отмены возврата
Инициатор отмены возвращается в параметре
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 , обратитесь к инициатору отмены возврата для уточнения подробностей. |
Только для кошелька ЮMoney | |
yoo_money_account_closed | Пользователь закрыл кошелек ЮMoney, на который вы пытаетесь вернуть платеж. Сделать возврат через ЮKassa нельзя. Договоритесь с пользователем напрямую, каким способом вы вернете ему деньги. |
Только для электронных сертификатов | |
payment_article_number_not_found | Указаны товары, для оплаты которых не использовался электронный сертификат: значение payment_article_number отсутствует в одобренной корзине покупки. Откорректируйте данные и отправьте запрос еще раз с новым ключом идемпотентности. |
payment_basket_id_not_found | НСПК не нашла для этого возврата одобренную корзину покупки. Откорректируйте данные и отправьте запрос еще раз с новым ключом идемпотентности. |
payment_tru_code_not_found | Указаны товары, для оплаты которых не использовался электронный сертификат: значение tru_code отсутствует в одобренной корзине покупки. Откорректируйте данные и отправьте запрос еще раз с новым ключом идемпотентности. |
some_articles_already_refunded | Некоторые товары уже возвращены. Откорректируйте данные и отправьте запрос еще раз с новым ключом идемпотентности. |
too_many_refunding_articles | Для одного или нескольких товаров количество возвращаемых единиц (quantity ) больше, чем указано в одобренной корзине покупки. Откорректируйте данные и отправьте запрос еще раз с новым ключом идемпотентности. |
Что почитать еще