Возврат платежей

Если вы используете Сплитование платежей, вы можете сделать возврат успешного платежа одним из двух способов: через личный кабинет или с помощью 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",
  "refund_authorization_details": {
    "rrn": "603668680243"
  },
  "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",
  "refund_authorization_details": {
    "rrn": "603668680243"
  },
  "sources": [
  {
    "account_id": "456",
    "amount": {
       "value": "9000.00",
       "currency": "RUB"
    },
    "platform_fee_amount": {
       "value": "90.00",
       "currency": "RUB"
    }
  }
 ]
}
Развернуть
При работе с двухстадийными платежами вы можете отменить платеж , если он находится в статусе waiting_for_capture. В этом случае платеж перейдет в статус canceled, деньги вернутся пользователю, а ЮKassa не будет удерживать комиссию за проведение оплаты.

Если для отмененного платежа был сформирован чек прихода, необходимо сформировать чек возврата прихода.

Статья была полезна?
Да
Нет
Что почитать еще