Чеки при возвратах
Если вы используете решение Яндекс.Кассы для 54-ФЗ, при возврате платежа необходимо отправлять чек возврата прихода.
 
Чек возврата прихода вместе с возвратом
Используйте этот способ, если вы отправляете данные для формирования чека по одному из сценариев: Платеж и чек одновременно или Сначала чек, потом платеж.
Если вы делаете полный возврат, данные для чека передавать не нужно. Яндекс.Касса отправит вашей онлайн-кассе данные для регистрации чека, как только будет создан возврат .
Если вы делаете частичный возврат, передайте данные о возвращаемых товарах в объекте
receipt
при создании возврата .
Пример запроса на частичный возврат с данными для чека
cURL
PHP
Python
curl https://payment.yandex.net/api/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"
            }
          ]
        }
      }'
Как только возврат будет создан, Яндекс.Касса отправит вашей онлайн-кассе данные для регистрации чека.
 
Чек возврата прихода отдельным запросом
В сценарии Сначала платеж, потом чек вы самостоятельно контролируете процесс отправки чеков — передаете данные для их формирования в отдельном запросе.
В этом случае запрос на создание возврата нужно передавать без объекта
receipt
. В ответ на запрос с объектом
receipt
Яндекс.Касса вернет ошибку.
Чек возврата прихода при полном и частичном возврате создается аналогично чеку прихода, но вместо идентификатора платежа (
payment_id
) необходимо передать идентификатор возврата (
refund_id
), а в параметре
type
— значение
refund
.
Пример запроса на создание чека возврата прихода
cURL
PHP
Python
curl https://payment.yandex.net/api/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"
           },
         }
       ]
     }'
В ответ Яндекс.Касса отправит вам объект чека  в актуальном статусе.
Пример тела ответа
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
), вам необходимо самостоятельно сформировать чек возврата прихода.
Для этого отправьте Яндекс.Кассе запрос на создание чека  возврата прихода — передайте параметр
type
со значением
refund
и идентификатор отмененного или частично подтвержденного платежа (
payment_id
).
Пример запроса
cURL
PHP
Python
curl https://payment.yandex.net/api/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"
      }
    }
  ]
}
 
Что почитать еще
ВозвратыОсновы проведения платежейСправочник значений параметров для чеков