Инструкции
Помощь
Подключить ЮKassa
Возврат оплаты покупателю
Если в процессе покупатель и продавец захотят расторгнуть сделку, вы можете вернуть оплату покупателю. Комиссии за проведение возврата нет.
Вернуть платежи можно только в статусе succeeded. Сделать возврат платежа в составе сделки можно только до выплаты или до закрытия сделки. Порядок возврата платежа зависит от момента перечисления вам вознаграждения (fee_moment в сделке):
Возвраты в сценарии «Вознаграждение после успешного платежа»
Если при создании сделки вы указали, что ваше вознаграждение нужно перечислять после успешного платежа (fee_moment=payment_succeeded), вернуть покупателю вы сможете только ту сумму, которая предназначалась продавцу. Возврат можно сделать всей суммы или только ее части. Частичных возвратов может быть несколько.
Возврат всей суммы
Чтобы вернуть всё вознаграждение продавца, в запросе на создание возврата  передайте в параметре payment_id уникальный идентификатор платежа, в объектах amount и deal — всю сумму вознаграждения продавца.
Пример запроса на полный возврат вознаграждения продавца
cURL
PHP
Python
curl https://api.yookassa.ru/v3/refunds \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "amount": {
          "value": "800.00",
          "currency": "RUB"
        },
        "deal": {
          "refund_settlements": [
            {
              "type": "payout",
              "amount": {
                "value": "800.00",
                "currency": "RUB"
              }
            }
          ]
        },
        "payment_id": "2855940e-000f-5000-9000-1ef78d597562",
        "description": "Возврат заказа №37"
      }'
В ответ ЮKassa вернет созданный объект возврата . В нём также будет указан идентификатор сделки, в рамках которой возвращали платеж.
Пример тела ответа
JSON
{
    "id": "28618525-0015-5000-9000-1e336d42672e",
    "status": "succeeded",
    "amount": {
        "value": "800.00",
        "currency": "RUB"
    },
    "created_at": "2021-06-21T16:48:36.804Z",
    "deal": {
        "id": "dl-285e5ee7-0022-5000-8000-01516a44b147",
        "refund_settlements": [{
            "type": "payout",
            "amount": {
                "value": "800.00",
                "currency": "RUB"
            }
        }]
    },
    "description": "Возврат заказа №37",
    "payment_id": "2855940e-000f-5000-9000-1ef78d597562"
}
ЮKassa вернет покупателю всю сумму, которая предназначалась продавцу, и закроет сделку. Баланс сделки после возврата станет нулевым.
Возврат части суммы
Чтобы вернуть часть вознаграждения продавца, в запросе на создание возврата  передайте параметр payment_id с уникальным идентификатором платежа, в объектах amount и deal — часть вознаграждения продавца, которую хотите вернуть.
Важно учесть:
  • Сумма в объекте deal должна совпадать с суммой в объекте 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": "200.00",
            "currency": "RUB"
          },
          "deal": {
            "refund_settlements": [
              {
                "type": "payout",
                "amount": {
                  "value": "200.00",
                  "currency": "RUB"
                }
              }
            ]
          },
          "payment_id": "2855940e-000f-5000-9000-1ef78d597562",
          "description": "Возврат заказа №37"
        }'
В ответ ЮKassa вернет созданный объект возврата .
Пример тела ответа
JSON
{
    "id": "28618525-0015-5000-9000-1e336d42672e",
    "status": "succeeded",
    "amount": {
        "value": "200.00",
        "currency": "RUB"
    },
    "created_at": "2021-06-21T16:48:36.804Z",
    "deal": {
        "id": "dl-285e5ee7-0022-5000-8000-01516a44b147",
        "refund_settlements": [{
            "type": "payout",
            "amount": {
                "value": "200.00",
                "currency": "RUB"
            }
        }]
    },
    "description": "Возврат заказа №37",
    "payment_id": "2855940e-000f-5000-9000-1ef78d597562"
}
ЮKassa вернет покупателю указанную часть оплаты и уменьшит баланс сделки и сумму выплаты продавцу на сумму возврата.
Возвраты в сценарии «Вознаграждение при закрытии сделки»
Если вознаграждение вы собираетесь получить при закрытии сделки (fee_moment=deal_closed), то вернуть покупателю вы сможете весь платеж, включая ваше вознаграждение. Вернуть можно всю сумму или только ее часть. Частичных возвратов может быть несколько.
Возврат всей суммы
Чтобы вернуть всю сумму платежа, в запросе на создание возврата  передайте параметр 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": "1000.00",
            "currency": "RUB"
          },
          "payment_id": "2855940e-000f-5000-9000-1ef78d597562",
          "description": "Возврат заказа №37"
        }'
В ответ ЮKassa вернет созданный объект возврата .
Пример объекта возврата
JSON
{
    "id": "28618906-0015-5000-a000-1555d6d94c48",
    "status": "succeeded",
    "amount": {
        "value": "1000.00",
        "currency": "RUB"
    },
    "created_at": "2021-06-21T17:05:10.506Z",
    "deal": {
        "id": "dl-285e5ee7-0022-5000-8000-01516a44b147",
        "refund_settlements": [{
            "type": "payout",
            "amount": {
                "value": "800.00",
                "currency": "RUB"
            }
        }]
    },
    "description": "Возврат заказа №37",
    "payment_id": "2855940e-000f-5000-9000-1ef78d597562"
}
Если возврат прошел успешно, ЮKassa вернет покупателю всю оплату, включая эквайринговую комиссию — ее ЮKassa спишет с баланса вашего магазина, баланс сделки при этом станет отрицательным. После этого ЮKassa закроет сделку.
Пример объекта сделки после полного возврата платежа
JSON
{
  "id": "dl-285e5ee7-0022-5000-8000-01516a44b147",
  "status": "closed",
  "balance": {
    "value": "-45.00",
    "currency": "RUB"
  },
  "payout_balance": {
    "value": "0.00",
    "currency": "RUB"
  },
  "created_at": "2021-06-18T07:28:39.390497Z",
  "type": "safe_deal",
  "fee_moment": "deal_closed",
  "metadata": {
    "order_id": "37"
  },
  "description": "SAFE_DEAL 123554642-2432FF344R"
}
Возврат части суммы
Чтобы вернуть только часть платежа, в запросе на создание возврата  передайте параметр payment_id с уникальным идентификатором платежа, объект amount с той частью общей суммы, которую хотите вернуть, и объект dealс информацией о том, как уменьшить вознаграждение продавца.
Важно учесть:
  • После возврата на балансе сделки должна остаться сумма, достаточная для выплаты вознаграждения продавцу, иначе выплату сделать не получится. Подробнее о лимитах выплат
  • Если используете решение ЮKassa для работы по 54-ФЗ и возвращаете часть вашего вознаграждения, запрос на создание возврата нужно передавать без объекта receipt. Чтобы сформировать чек возврата прихода, отправьте ЮKassa отдельный запрос.
Пример запроса на частичный возврат платежа
cURL
PHP
Python
curl https://api.yookassa.ru/v3/refunds \
    -X POST \
    -u <Идентификатор магазина>:<Секретный ключ> \
    -H 'Idempotence-Key: <Ключ идемпотентности>' \
    -H 'Content-Type: application/json' \
    -d '{
          "amount": {
            "value": "200.00",
            "currency": "RUB"
          },
          "deal": {
            "refund_settlements": [
              {
                "type": "payout",
                "amount": {
                  "value": "160.00",
                  "currency": "RUB"
                }
              }
            ]
          },
          "payment_id": "2855940e-000f-5000-9000-1ef78d597562",
          "description": "Возврат заказа №37"
        }'
В ответ ЮKassa вернет созданный объект возврата .
Пример тела ответа
JSON
{
  "id": "27dd7a4f-0015-5000-8000-1e8caf204668",
  "status": "succeeded",
  "amount": {
    "value": "200.00",
    "currency": "RUB"
  },
  "created_at": "2020-02-12T13:03:11.398Z",
  "description": "Возврат заказа №37",
  "deal": {
    "id": "dl-285e5ee7-0022-5000-8000-01516a44b147",
    "refund_settlements": [
      {
        "type": "payout",
        "amount": {
          "value": "160.00",
          "currency": "RUB"
        }
      }
    ]
  },
  "payment_id": "2855940e-000f-5000-9000-1ef78d597562"
}
ЮKassa вернет покупателю указанную часть оплаты и уменьшит баланс сделки и сумму выплаты продавцу на сумму возврата.
Что почитать еще
Основы работы с APIТестирование Безопасной сделкиОтправка чеков в Безопасной сделкеРеестры возвратов