Docs
API ЮKassa
Инструкции
Старые версии API
Помощь
Подключить ЮKassa

Возвраты

С помощью API ЮKassa можно возвращать успешные платежи. Комиссии за проведение возврата нет. Комиссия ЮKassa за проведение платежа не возвращается.
Особенности
Вернуть деньги через ЮKassa можно только на то платежное средство, которое использовалось для оплаты. Например, если при платеже деньги списали с карты 5555555555554477, то сделать возврат можно только на нее.
Возврат платежа может быть полным или частичным. В первом случае вы возвращаете принятый платеж целиком. Во втором — часть от суммы платежа, например если хотите сделать возврат одного товара, а не всей покупки. Частичный возврат доступен не для всех способов оплаты.
Перед возвратом платежа проверьте, что:
  • платеж со способом оплаты 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 нельзя.
Предложите пользователю обратиться к эмитенту (например, в банк) для уточнения подробностей и дождитесь ответа:
  • Если причину отмены устранили, повторите возврат с новым ключом идемпотентности.
  • Если проблема осталась, договоритесь с пользователем о том, чтобы вернуть ему деньги напрямую, не через Ю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) больше, чем указано в одобренной корзине покупки. Откорректируйте данные и отправьте запрос еще раз с новым ключом идемпотентности.
Что почитать еще
© 2025, ООО НКО «ЮМани»