Чек коррекции
LifePay позволяет удаленно создать чек коррекции в соответствии с требованиями налоговой. Чек коррекции можно создать как посредством запроса по АПИ, так и в личном кабинете Lifepay:
Пример распечатанного чека по запросу:
Отправка чека на фискализацию
Тип запроса:
POST
Формат данных:
Данные в теле запроса предварительно сериализуются в json-формат
Адрес URL:
https://sapi.life-pay.ru/cloud-print/create-receipt-correction
Условные обозначения в формате данных
Обозначение | Описание |
---|---|
Ц | Атрибут, обозначающий, что данные реквизита должны быть представлены в виде цифры |
С | Атрибут, обозначающий, что данные реквизита должны быть представлены в виде символа |
{} | Атрибут повторяемый |
Описание полей
Параметр | Тег | Тип | Описание | Обязательный | Формат | Максимальная длина |
---|---|---|---|---|---|---|
apikey | Строка | АПИ-ключ компании в системе Lifepay. Узнать свой АПИ-ключ можно в личном кабинете Lifepay. | Да | {С} | 255 | |
login | Строка | Логин администратора компании или торговой точки в системе Lifepay. Если логин относится к торговой точке, к которой привязан принтер, документ будет отправлен на этот принтер. | Да | 7{Ц} | 11 | |
initiator | 1173 | Строка | Инициатор коррекции. Возможные значения:independently - самостоятельно (по умолчанию),directive - по предписанию. |
Да | ||
doc_date | 1178 | Строка | Дата документа коррекции. | Да | ГГГГ-ММ-ДД | |
doc_number | 1179 | Строка | Номер документа коррекции. | Да | {С} | 32 |
test | Целое | Тестовый режим отправки запроса без фискализации. Может принимать значения 0 , 1 , или отсутствовать (фискализировать по умолчанию). В тестовом режиме uuid сгенерирован не будет, оповещения о результате фискализации отправляться не будут. |
Нет | |||
type | 1054 | Строка | Тип коррекции. Возможные значения:sell_correction - коррекция прихода (по умолчанию),buy_correction - коррекция расхода. |
Нет | ||
card_amount | 1081 | Вещественное | Сумма, оплаченная клиентом по карте. Особое значение - # . |
Нет | {Ц}.ЦЦ | {Ц} | |
cash_amount | 1031 | Вещественное | Сумма, оплаченная клиентом наличными. Особое значение - # . |
Нет | {Ц}.ЦЦ | {Ц} | |
prepayment_amount | 1215 | Вещественное | Сумма, внесенная авансом. Особое значение - # . |
Нет | {Ц}.ЦЦ | {Ц} | |
credit_amount | 1216 | Вещественное | Сумма, внесенная кредитными средствами. Особое значение - # . |
Нет | {Ц}.ЦЦ | {Ц} | |
other_amount | 1217 | Вещественное | Сумма иной формы оплаты (встречное предоставление). Особое значение - # . |
Нет | {Ц}.ЦЦ | {Ц} | |
cashier_name | 1021 | Строка | Имя кассира. | Нет | {С} | 64 |
cashier_inn | 1203 | Строка | ИНН кассира. | Нет | {Ц} | 12 |
target_serial | Строка | Серийный номер принтера, на котором необходимо фискализировать данные. Если не задан, чек будет фискализирован на одном из подключенных (активных) фискальных принтеров. | Нет | {С} | ||
target_kkt_group_uuid | Строка | Идентификатор группы касс для фискализации. При задании параметра чек будет фискализирован на одном из ККТ, входящих в указанную группу. Объединить кассы в группы, и получить идентификатор можно в Личном кабинете Lifepay. | Нет | {С} | ||
ext_id | Строка | Идентификатор в сторонней системе. В случае, если в систему повторно передан запрос с одинаковым ext_id, документ создан не будет, сервер вернет uuid первого документа. | Нет | {С} | 50 | |
order_number | Строка | Номер заказа в сторонней системе. Может использоваться для поиска чека в личном кабинете. | Нет | {С} | ||
callback_url | Строка | URL для отправки уведомления об обработке документа. Уведомление будет сформировано при смене статуса обработки документа на “обработан”, “ожидает повтора”, “ошибка”. | Нет | {С} | 255 | |
callback_data | Строка | Структура | Массив | Пользовательские данные, которые будут отправлены обратно на URL, указанный в параметре callback_url. | Нет | |||
tax_system замечание |
1055 | Строка | Система налогообложения. Возможные значения: osn - ОСНusn6 - УСН доходusn15 - УСН доход-расходeshn - ЕСНpatent - Патент |
Нет | ||
tax | 1199 | Строка | Налог. Возможные значения: none - НДС не облагается;vat0 - НДС по ставке 0%;vat10 - НДС чека по ставке 10%;vat20 - НДС чека по ставке 20%;vat110 - НДС расчитанный 10/110;vat120 - НДС расчитанный 20/120; |
Нет | ||
tax_list | Массив | Список налоговых ставок и их значения | Нет | |||
payment_place | 1187 | Строка | Место осуществления расчетов между пользователем и покупателем (клиентом) | Нет | {С} | 256 |
customer_name | 1227 | Строка | Покупатель (клиент). | Нет | {С} | 256 |
customer_inn | 1228 | Строка | ИНН покупателя. | Нет | {Ц} | 12 |
additional_receipt_details | 1192 | Строка | Дополнительный реквизит чека (БСО) | Нет | {С} | 16 |
Описание элементов списка tax_list
Параметр | Тег | Тип | Описание | Обязательный | Формат |
---|---|---|---|---|---|
tax | 1199 | Строка | Возможные значения: none - НДС не облагается;vat0 - НДС по ставке 0%;vat10 - НДС чека по ставке 10%;vat20 - НДС чека по ставке 20%;vat110 - НДС расчитанный 10/110;vat120 - НДС расчитанный 20/120; |
Да | |
value | 1200 | Вещественное | Сумма НДС. | Да | {Ц}.ЦЦ | {Ц} |
Замечания
Параметр
tax_system
позволяет фискализировать продажи в случае нескольких СНО. Если товары продаются по одной СНО, а услуги по другой, необходимо сформировать 2 чека с разными значениямиtax_system
. Еслиtax_system
не будет указана в запросе, система применит значение СНО, установленное в личном кабинете Lifepay. Если в личном кабинете СНО не была установлена, будет применена СНО - ОСН.В запросе необходимо указывать один из параметров
tax
(для автоматического расчета НДС на стороне ФР), либоtax_list
(в случае расчета НДС на стороне клиента). Если указаны оба параметра, то приоритет отдаетсяtax_list
.В случае, если товары/услуги не облагаются НДС (либо НДС 0%), в поле
value
из спискаtax_list
указывается сумма, которая не облагается НДС (либо НДС 0%).
Пример успешного ответа:
формат json
Object
(
[code] => 0
[message] =>
[data] => Object
(
[uuid] => dabe3833-43ff-5e5c-a45e-9cff664503fd
)
)
uuid
- уникальный идентификатор документа
Пример ответа при ошибке:
формат json
Object
(
[code] => 400
[message] => Ошибка данных.
[data] => Object
(
[target_serial] => Array
(
[0] => Принтер не найден.
)
)
)
Возможные значения поля code
:
500
Внутренняя ошибка сервера400
Ошибка данных6000
Неверный формат данных6009
Не удалось найти пользователя по login6010
Не удалось найти пользователя по login и apikey6080
Облачная фискализация запрещена6095
Доступ запрещен
При значении поля “code” = 500 необходимо обратиться в тех поддержку, уточнить причину появления данной ошибки.
Рекомендация:
Если http-код ответа (не путать с полем code
) отличен от 200, необходимо повторять запрос с тем же ext_id через некоторые промежутки времени.
Промежутки повтора запроса могут быть, например, такими: 1 минута, 3 минуты, 5 минут, далее – один раз в 10 минут до получения http кода ответа 200.
Пример запроса на языке php:
$data = [];
$data['apikey'] = '{your_apikey}';
$data['login'] = '{your_login}';
$data['type'] = 'sell_correction';
$data['doc_date'] = "2017-01-01";
$data['doc_number'] = "3123";
$data['tax_list'] = '
[
{
"tax": "none",
"value": 1000
},
{
"tax": "vat10",
"value": 10.55
}
]
';
$data['test'] = 0;
$data['cash_amount'] = 500;
$data['card_amount'] = null;
$data['mc_amount'] = null;
$data['cashier_name'] = null;
$data['target_serial'] = null;
$data['payment_place'] = 'Станция метро Выхино (центр зала)';
$request = json_encode($data);
$url = "https://sapi.life-pay.ru/cloud-print/create-receipt-correction";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
$result = curl_exec($curl);
curl_close($curl);
$resultJson = @json_decode($result);
printf("Res: %s\n", print_r($resultJson ? : $result, true));