Инструкции
Помощь
Подключить ЮKassa
Чеки при возвратах
Если вы используете решение ЮKassa для 54-ФЗ, при возврате платежа необходимо отправлять чек возврата прихода.
Чек возврата прихода вместе с возвратом
Используйте этот способ, если вы отправляете данные для формирования чека по одному из сценариев: Платеж и чек одновременно или Сначала чек, потом платеж.
Если вы делаете полный возврат, данные для чека передавать не нужно. ЮKassa отправит вашей онлайн-кассе данные для регистрации чека, как только будет создан возврат .
Если вы делаете частичный возврат, передайте данные о возвращаемых товарах в объекте receipt при создании возврата .
Пример запроса на частичный возврат с данными для чека
cURL
PHP
Python
curl https://api.yookassa.ru/v3/refunds \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "payment_id": "<Идентификатор возвращаемого платежа>",
        "amount": {
          "value": "600.00",
          "currency": "RUB"
        },
        "receipt": {
          "customer" : {
            "full_name" : "Ivanov Ivan Ivanovich",
            "email" : "email@email.ru",
            "phone" : "79000000000",
            "inn" : "6321000014"
          },
          "items": [
            {
              "description": "Наименование товара 1",
              "quantity": "2.00",
              "amount": {
                "value": "250.00",
                "currency": "RUB"
              },
              "vat_code": "2"
            },
            {
              "description": "Наименование товара 2",
              "quantity": "1.00",
              "amount": {
                "value": "100.00",
                "currency": "RUB"
              },
              "vat_code": "2"
            }
          ]
        }
      }'
Как только возврат будет создан, ЮKassa отправит вашей онлайн-кассе данные для регистрации чека.
Чек возврата прихода отдельным запросом
В сценарии Сначала платеж, потом чек вы самостоятельно контролируете процесс отправки чеков — передаете данные для их формирования в отдельном запросе.
Чек возврата прихода при полном и частичном возврате создается аналогично чеку прихода, но вместо идентификатора платежа (payment_id) необходимо передать идентификатор возврата (refund_id), а в параметре type — значение refund. Для одного возврата можно создать не более 15 чеков.
Пример запроса на создание чека возврата прихода
cURL
PHP
Python
curl https://api.yookassa.ru/v3/receipts \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "customer": {
          "full_name": "Иванов Иван Иванович",
          "email": "email@email.ru",
          "phone": "79000000000",
          "inn": "6321000014"
        },
        "refund_id": "216749f7-0016-50be-b000-078d43a63ae4",
        "type": "refund",
        "send": "true",
        "items": [
          {
            "description": "Наименование товара 1",
            "quantity": "2.00",
            "amount": {
              "value": "250.00",
              "currency": "RUB"
            },
            "vat_code": "2",
            "payment_mode": "full_payment",
            "payment_subject": "commodity",
            "country_of_origin_code": "CN"
          },
          {
            "description": "Наименование товара 2",
            "quantity": "1.00",
            "amount": {
              "value": "100.00",
              "currency": "RUB"
            },
            "vat_code": "2",
            "payment_mode": "full_payment",
            "payment_subject": "commodity",
            "country_of_origin_code": "CN"
          }
        ],
        "settlements": [
          {
            "type": "prepayment",
            "amount": {
              "value": "600.00",
              "currency": "RUB"
            }
          }
        ]
      }'
В ответ ЮKassa отправит вам объект чека  в актуальном статусе.
Пример тела ответа
JSON
{
  "id": "rt_1da5c87d-0984-50e8-a7f3-8de646dd9ec9",
  "type": "refund",
  "refund_id": "216749f7-0016-50be-b000-078d43a63ae4",
  "status": "pending",
  "items": [
    {
      "description": "Наименование товара 1",
      "quantity": 2.000,
      "amount": {
        "value": "250.00",
        "currency": "RUB"
      },
      "vat_code": "2",
      "payment_mode": "full_payment",
      "payment_subject": "commodity",
      "country_of_origin_code": "CN"
    },
    {
      "description": "Наименование товара 2",
      "quantity": 1.000,
      "amount": {
        "value": "100.00",
        "currency": "RUB"
      },
      "vat_code": "2",
      "payment_mode": "full_payment",
      "payment_subject": "commodity",
      "country_of_origin_code": "CN"
    }
  ],
  "settlements": [
    {
      "type": "prepayment",
      "amount": {
        "value": "600.00",
        "currency": "RUB"
      }
    }
  ]
}
Если платеж, для которого вы создали чек прихода, был подтвержден частично или по каким-то причинам отменен (объект платежа в статусе canceled), вам необходимо самостоятельно сформировать чек возврата прихода.
Для этого отправьте ЮKassa запрос на создание чека  возврата прихода — передайте параметр type со значением refund и идентификатор отмененного или частично подтвержденного платежа (payment_id).
Пример запроса
cURL
PHP
Python
curl https://api.yookassa.ru/v3/receipts \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "customer": {
          "full_name": "Иванов Иван Иванович",
          "email": "email@email.ru",
          "phone": "79000000000",
          "inn": "6321000014"
        },
        "payment_id": "24b94598-000f-5000-9000-1b68e7b15f3f",
        "type": "refund",
        "send": "true",
        "items": [
          {
            "description": "Наименование товара 1",
            "quantity": "2.00",
            "amount": {
              "value": "250.00",
              "currency": "RUB"
            },
            "vat_code": "2",
            "payment_mode": "full_payment",
            "payment_subject": "commodity",
            "country_of_origin_code": "CN"
          },
          {
            "description": "Наименование товара 2",
            "quantity": "1.00",
            "amount": {
              "value": "100.00",
              "currency": "RUB"
            },
            "vat_code": "2",
            "payment_mode": "full_payment",
            "payment_subject": "commodity",
            "country_of_origin_code": "CN"
          }
        ],
        "settlements": [
          {
            "type": "prepayment",
            "amount": {
              "value": "600.00",
              "currency": "RUB"
            }
          }
        ]
      }'
Пример тела ответа
JSON
{
  "id": "rt_1da5c87d-0984-50e8-a7f3-8de646dd9ec9",
  "type": "refund",
  "payment_id": "24b94598-000f-5000-9000-1b68e7b15f3f"
  "status": "pending",
  "items": [
    {
      "description": "Наименование товара 1",
      "quantity": 2.000,
      "amount": {
        "value": "250.00",
        "currency": "RUB"
      },
      "vat_code": "2",
      "payment_mode": "full_payment",
      "payment_subject": "commodity",
      "country_of_origin_code": "CN"
    },
    {
      "description": "Наименование товара 2",
      "quantity": 1.000,
      "amount": {
        "value": "100.00",
        "currency": "RUB"
      },
      "vat_code": "2",
      "payment_mode": "full_payment",
      "payment_subject": "commodity",
      "country_of_origin_code": "CN"
    }
  ],
  "settlements": [
    {
      "type": "prepayment",
      "amount": {
        "value": "600.00",
        "currency": "RUB"
      }
    }
  ]
}
Памятка по подготовке данных для чеков
Проверьте, что вы корректно передаете данные для чеков в объекте receipt:
  • объект receipt есть только в запросах на частичный возврат платежа;
  • переданы все обязательные параметры;
  • количество товара не превышает количество, указанное в зарегистрированном чеке;
  • сумма возврата в amount совпадает с общей суммой возвращаемых товаров в объекте receipt (чтобы определить сумму возвращаемых товаров, для каждого товара умножьте quantity на amount и просуммируйте получившиеся значения по всем товарам);
  • все суммы в чеке положительные.
Если что-то будет не так, ЮKassa вернет ошибку.
Что почитать еще
Возвраты платежейПолучение информации о возвратеКоды ответа (состояния) HTTPВыгрузка данных по чекам