Чеки при возвратах
В этой статье описано, как проводить возвраты при использовании решения ЮKassa по автоматической регистрации чеков в сервисе Мой налог.
Как это работает
При полном возврате платежа ЮKassa аннулирует чек прихода в сервисе Мой налог.
При частичном возврате ЮKassa аннулирует старый чек и зарегистрирует новый чек для той части заказа, которая осталась после возврата. Данные для чека нужно передавать в объекте
receipt
в том же запросе, что и данные для возврата.Если вы создали платеж до включения автоотправки чеков, а возвращаете его уже после включения опции, то откорректировать или аннулировать чек вам нужно самостоятельно. Управлять этими чеками по API не получится.
Полный возврат
Если вы делаете полный возврат, данные для чека передавать не нужно.
Для возврата отправьте стандартный запрос на создание возврата. Объект
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
с данными для чека. Необходимо указать контактные данные пользователя (электронную почту или номер телефона) и данные о тех товарах и услугах, которые пользователь возвращает.Название товара (
item.description
) и стоимость единицы товара (item.amount
) должны полностью совпадать с теми данными, которые указаны в зарегистрированном чеке. Почему это важноПример запроса на частичный возврат с данными для чека
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": "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.00 | 10 |
Чашка чайная | 150.00 | 2 |
Блюдце | 100.00 | 2 |
Общая сумма заказа — 1000 рублей.
Вы хотите вернуть чашку и блюдце. Общая сумма возврата — 250 рублей, общая сумма оставшейся части заказа — 750 рублей.
Пример корректных данных при возврате
Название (description) | Стоимость (amount) | Количество (quantity) |
---|---|---|
Чашка чайная | 150.00 | 1 |
Блюдце | 100.00 | 1 |
Названия товаров есть в том чеке, который зарегистрирован в сервисе Мой налог. В этом случае ЮKassa сформирует детальный чек:
Название (description) | Стоимость (amount) | Количество (quantity) |
---|---|---|
Ложка | 50.00 | 10 |
Чашка чайная | 150.00 | 1 |
Блюдце | 100.00 | 1 |
Пример некорректных данных при возврате
Название (description) | Стоимость (amount) | Количество (quantity) |
---|---|---|
Чашка чайн. | 150.00 | 1 |
Блюдце | 100.00 | 1 |
Названия некоторых товаров отличаются. В этом случае ЮKassa сформирует общий чек:
Название (description) | Стоимость (amount) | Количество (quantity) |
---|---|---|
Заказ после возврата | 750.00 | 1 |
Памятка по подготовке данных для чеков
Проверьте, что вы корректно передаете данные для чеков в объекте
receipt
:- объект
receipt
есть только в запросах на частичный возврат платежа; - указаны электронная почта или номер телефона пользователя (данные переданы в объекте
customer
); - для каждого товара в
items
указаны только эти параметры —description
,amount
,quantity
,vat_code
; других параметров нет; - названия товаров, сумма за единицу товара полностью совпадают с данными в зарегистрированном чеке прихода;
- количество товара не превышает количество, указанное в зарегистрированном чеке;
quantity
— только целые числа (без точки и дробной части);vat_code
везде 1;- сумма возврата в
amount
совпадает с общей суммой возвращаемых товаров в объектеreceipt
(чтобы определить сумму возвращаемых товаров, для каждого товара умножьтеquantity
наamount
и просуммируйте получившиеся значения по всем товарам); - все суммы в чеке положительные.
Если что-то будет не так, ЮKassa вернет ошибку.
Что почитать еще