Если вы используете решение ЮKassa для 54-ФЗ, при возврате платежа необходимо отправлять чек возврата прихода.
Используйте этот способ, если вы отправляете данные для формирования чека по одному из сценариев: Платеж и чек одновременно или Сначала чек, потом платеж.
Если вы делаете полный возврат, данные для чека передавать не нужно. ЮKassa отправит вашей онлайн-кассе данные для регистрации чека, как только будет создан возврат .
Если вы делаете частичный возврат, передайте данные о возвращаемых товарах в объекте
receipt
при создании возврата .Пример запроса на частичный возврат с данными для чека
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 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 отправит вам объект чека в актуальном статусе.
Пример тела ответа
{ "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 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" } } ] }'
Пример тела ответа
{ "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Выгрузка данных по чекам