Инструкции
Помощь
Подключить ЮKassa
Чеки при возвратах
В этой статье описано, как проводить возвраты при использовании решения ЮKassa по автоматической регистрации чеков в сервисе Мой налог.
Как это работает
При полном возврате платежа ЮKassa аннулирует чек прихода в сервисе Мой налог.
При частичном возврате ЮKassa аннулирует старый чек и зарегистрирует новый чек для той части заказа, которая осталась после возврата. Данные для чека нужно передавать в объекте receipt в том же запросе, что и данные для возврата.
Полный возврат
Если вы делаете полный возврат, данные для чека передавать не нужно.
Для возврата отправьте стандартный запрос на создание возврата . Объект receipt не передавайте.
Пример запроса полный возврат с данными для чека
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": "<Идентификатор возвращаемого платежа>"
      }'
При возврате ЮKassa автоматически аннулирует чек прихода.
Частичный возврат
Если вы делаете частичный возврат, в запросе на создание возврата  нужно передать объект receipt с данными для чека. Необходимо указать контактные данные пользователя (электронную почту или номер телефона) и данные о тех товарах и услугах, которые пользователь возвращает.
Пример запроса на частичный возврат с данными для чека
cURL
curl https://api.yookassa.ru/v3/refunds \
  -X POST \
  -u <Идентификатор магазина>:<Секретный ключ> \
  -H 'Idempotence-Key: <Ключ идемпотентности>' \
  -H 'Content-Type: application/json' \
  -d '{
        "payment_id": "<Идентификатор возвращаемого платежа>",
        "amount": {
          "value": "750.00",
          "currency": "RUB"
        },
        "receipt": {
          "customer": {
            "email": "user@example.com"
          },
          "items": [
            {
              "description": "Ложка",
              "quantity": "10",
              "amount": {
                "value": "50.00",
                "currency": "RUB"
              },
              "vat_code": "1"
            },
            {
              "description": "Чашка чайная",
              "quantity": "1",
              "amount": {
                "value": "150.00",
                "currency": "RUB"
              },
              "vat_code": "1"
            },
            {
              "description": "Блюдце",
              "quantity": "1",
              "amount": {
                "value": "100.00",
                "currency": "RUB"
              },
              "vat_code": "1"
            }
          ]
        }
      }'
Как только возврат будет создан, ЮKassa отменит старый чек прихода и создаст новый — с данными о товарах, оставшимися после возврата.
Вы можете узнать, сформировался ли чек, по значению параметра receipt_registration в объекте возврата  и в личном кабинете ЮKassa в истории платежей. Если что-то пойдет не так, сформируйте чек вручную в сервисе Мой налог и самостоятельно пришлите пользователю ссылку на чек.
Особенности формирования чеков при частичном возврате
В запросе на создание возврата вы передаете данные о возвращаемых товарах. Чтобы сформировать новый чек для оставшихся товаров, ЮKassa возьмет данные, которые вы указали при возврате, и сравнит их с теми данные, которые есть в зарегистрированном чеке.
Если данные товаров совпадут, ЮKassa сформирует детальный чек: исключит возвращаемые товары и сформирует новый чек с детальным описанием каждой товарной позиции.
Если ЮKassa не найдет в исходном чеке какие-то возвращаемые товары, например из-за опечатки в названии, она сформирует общий чек с одной фиксированной позицией — Заказ после возврата и скорректированной суммой.
Пример
При проведении платежа вы передали такие данные:
Название (description)Стоимость (amount)Количество (quantity)
Ложка50.0010
Чашка чайная150.002
Блюдце100.002
Общая сумма заказа — 1000 рублей.
Вы хотите вернуть чашку и блюдце. Общая сумма возврата — 250 рублей, общая сумма оставшейся части заказа — 750 рублей.
Пример корректных данных при возврате
Название (description)Стоимость (amount)Количество (quantity)
Чашка чайная150.001
Блюдце100.001
Названия товаров есть в том чеке, который зарегистрирован в сервисе Мой налог. В этом случае ЮKassa сформирует детальный чек:
Название (description)Стоимость (amount)Количество (quantity)
Ложка50.0010
Чашка чайная150.001
Блюдце100.001
Пример некорректных данных при возврате
Название (description)Стоимость (amount)Количество (quantity)
Чашка чайн.150.001
Блюдце100.001
Названия некоторых товаров отличаются. В этом случае ЮKassa сформирует общий чек:
Название (description)Стоимость (amount)Количество (quantity)
Заказ после возврата750.001
Памятка по подготовке данных для чеков
Проверьте, что вы корректно передаете данные для чеков в объекте receipt:
  • объект receipt есть только в запросах на частичный возврат платежа;
  • указаны электронная почта или номер телефона пользователя (данные переданы в объекте customer);
  • для каждого товара в items указаны только эти параметры — description, amount, quantity, vat_code; других параметров нет;
  • названия товаров, сумма за единицу товара полностью совпадают с данными в зарегистрированном чеке прихода;
  • количество товара не превышает количество, указанное в зарегистрированном чеке;
  • quantity — только целые числа (без точки и дробной части);
  • vat_code везде 1;
  • сумма возврата в amount совпадает с общей суммой возвращаемых товаров в объекте receipt (чтобы определить сумму возвращаемых товаров, для каждого товара умножьте quantity на amount и просуммируйте получившиеся значения по всем товарам);
  • все суммы в чеке положительные.
Если что-то будет не так, ЮKassa вернет ошибку.
Что почитать еще
Возвраты платежейПолучение информации о возвратеКоды ответа (состояния) HTTP