Возврат платежей
Если вы используете Сплитование платежей, вы можете сделать возврат успешного платежа одним из двух способов: через личный кабинет или с помощью API ЮKassa.
Магазин тоже может возвращать платежи через личный кабинет. Чтобы узнавать о таких возвратах, настройте входящие уведомления о событии
refund.succeeded
.
 
Особенности возврата
При полном возврате с помощью API ЮKassa комиссия, которую вы удержали при оплате, возмещается за счет магазинов, в которых были приобретены товары и услуги. Если вы хотите сделать возврат всего платежа и вернуть комиссию за свой счет, создайте несколько частичных возвратов — отдельно для каждого магазина. В каждом запросе на частичный возврат передайте дополнительный параметр
platform_fee_amount
с суммой комиссии к возврату.
Если вы делаете возврат через личный кабинет, комиссия, которую вы удержали при оплате, не возвращается.
ЮKassa не отправляет уведомления о возвратах магазину, вам необходимо делать это самостоятельно.
 
Создание полного возврата
Чтобы сделать возврат всего платежа, принятого вами от пользователя, отправьте ЮKassa запрос на создание возврата . В запросе передайте идентификатор платежа в параметре
payment_id
и сумму возврата в 
amount
. Запрос передается без объекта
platform_fee_amount
. Если вы хотите вернуть комиссию за свой счет, сделайте несколько частичных возвратов — отдельно для каждого магазина.
Запрос на создание возврата нужно передавать без объекта
receipt
. Чтобы сформировать чек возврата прихода, отправьте ЮKassa отдельный запрос.
Пример запроса на создание полного возврата
cURL
PHP
Python
curl https://api.yookassa.ru/v3/refunds \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "payment_id": "24e89cb0-000f-5000-9000-1de77fa0d6df",
        "amount": {
           "value": "11000.00",
           "currency": "RUB"
        }
      }'
В ответ ЮKassa отправит вам объект возврата  в актуальном статусе.
Пример ответа
JSON
{
  "id": "24eca812-0015-5000-9000-188e730d6114",
  "status": "succeeded",
  "amount": {
    "value": "11000.00",
    "currency": "RUB"
  },
  "created_at": "2019-08-19T12:21:38.575Z",
  "payment_id": "24e89cb0-000f-5000-9000-1de77fa0d6df",
  "sources": [
    {
      "account_id": "123",
      "amount": {
        "value": "2000.00",
        "currency": "RUB"
      }
    },
    {
      "account_id": "456",
      "amount": {
        "value": "9000.00",
        "currency": "RUB"
      }
    }
  ]
}
 
Создание частичного возврата
Если вы хотите сделать частичный возврат нескольких товаров из разных магазинов, вам необходимо создать отдельный возврат для каждого магазина. Если все возвращаемые товары пользователь купил в одном магазине, нужно создать один возврат.
Чтобы сделать частичный возврат, отправьте ЮKassa запрос на создание возврата . В запросе передайте идентификатор платежа в параметре
payment_id
, сумму возврата в 
amount
и массив
sources
с данными для возврата: идентификатором магазина, суммой платежа, которую нужно вернуть, и суммой комиссии, которая была удержана с определенного магазина.
Пример запроса на создание частичного возврата
cURL
PHP
Python
curl https://api.yookassa.ru/v3/refunds \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "payment_id": "24e89cb0-000f-5000-9000-1de77fa0d6df",
        "amount": {
          "value": "9000.00",
          "currency": "RUB"
        },
        "sources": [
        {
          "account_id": "456",
          "amount": {
            "value": "9000.00",
            "currency": "RUB"
          },
          "platform_fee_amount": {
            "value": "90.00",
            "currency": "RUB"
          }
        }]     
      }'
В ответ ЮKassa отправит вам объект возврата  в актуальном статусе. Ответ будет содержать дополнительный параметр
sources
с распределением денег: в какой магазин и на какую сумму пользователь вернул товар и суммой комиссии к возврату.
Пример ответа
JSON
{
  "id": "24eca812-0015-5000-9000-188e730d6114",
  "status": "succeeded",
  "amount": {
    "value": "9000.00",
    "currency": "RUB"
  },
  "created_at": "2019-08-19T12:21:38.575Z",
  "payment_id": "24e89cb0-000f-5000-9000-1de77fa0d6df",
  "sources": [
  {
    "account_id": "456",
    "amount": {
       "value": "9000.00",
       "currency": "RUB"
    },
    "platform_fee_amount": {
       "value": "90.00",
       "currency": "RUB"
    }
  }
 ]
}
При работе с двухстадийными платежами вы можете отменить платеж , если он находится в статусе
waiting_for_capture
. В этом случае платеж перейдет в статус
canceled
, деньги вернутся пользователю, а ЮKassa не будет удерживать комиссию за проведение оплаты.
Если для отмененного платежа был сформирован чек прихода, необходимо сформировать чек возврата прихода.
 
Что почитать еще
Получение информации о магазине продавца по APIПрием платежейОтправка чековОплата по 54-ФЗ