Документация


Запросы должны отправлять в формате json.

Для валидации запросов, в запросе обязательно должны быть прописаны:

  1. kassaid
  2. kassatoken

Эти данные вы сможете получить, только в личном кабинете, предварительно заключив договор с нами.

Разберем пример запроса.

Незашифрованный запрос в общем виде должен выглядеть следующим образом:

{
    "kassaid": "123456",
    "kassatoken": "12345678912345678912345678912345",
    "cms": "ss7-7.3.0.209",
    "check_send_type": "email",
    "products_arr": [{
        "name_tovar": "\u041a\u0430\u0440\u0442\u043e\u043d\u043d\u0430\u044f \u043a\u043e\u0440\u043e\u0431\u043a\u0430 2, 11112",
        "price_piece_bez_skidki": 7744,
        "skidka": 1297,
        "kolvo": 2,
        "price_piece": 7095,
        "summa": 14191,
        "stavka_nds": 6,
        "priznak_sposoba_rascheta": 4,
        "priznak_predmeta_rascheta": 1,
        "priznak_agenta": "none",
        "phone_oper_perevoda": "",
        "operation_plat_agenta": "",
        "phone_oper_priem_plat": "",
        "name_oper_perevoda": "",
        "address_oper_perevoda": "",
        "inn_oper_perevoda": "",
        "phone_postavshika": "",
        "name_postavshika": "",
        "discount": {
            "type": "amount",
            "value": 12.97
        }
    }, {
        "name_tovar": "\u0423\u043f\u0430\u043a\u043e\u0432\u043a\u0430",
        "price_piece_bez_skidki": 155,
        "skidka": 26,
        "kolvo": 2,
        "price_piece": 142,
        "summa": 284,
        "stavka_nds": 6,
        "priznak_sposoba_rascheta": 4,
        "priznak_predmeta_rascheta": 4,
        "priznak_agenta": "none",
        "phone_oper_perevoda": "",
        "operation_plat_agenta": "",
        "phone_oper_priem_plat": "",
        "name_oper_perevoda": "",
        "address_oper_perevoda": "",
        "inn_oper_perevoda": "",
        "phone_postavshika": "",
        "name_postavshika": "",
        "discount": {
            "type": "amount",
            "value": 0.26
        }
    }, {
        "name_tovar": "\u041a\u0430\u0440\u0442\u043e\u043d\u043d\u0430\u044f \u043a\u043e\u0440\u043e\u0431\u043a\u0430 2, 11112",
        "price_piece_bez_skidki": 2277,
        "skidka": 191,
        "kolvo": 1,
        "price_piece": 2086,
        "summa": 2086,
        "stavka_nds": 6,
        "priznak_sposoba_rascheta": 4,
        "priznak_predmeta_rascheta": 1,
        "priznak_agenta": "none",
        "phone_oper_perevoda": "",
        "operation_plat_agenta": "",
        "phone_oper_priem_plat": "",
        "name_oper_perevoda": "",
        "address_oper_perevoda": "",
        "inn_oper_perevoda": "",
        "phone_postavshika": "",
        "name_postavshika": "",
        "discount": {
            "type": "amount",
            "value": 1.91
        }
    }, {
        "name_tovar": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430: PickPoint",
        "price_piece": 30000,
        "summa": 30000,
        "kolvo": 1,
        "stavka_nds": 6,
        "priznak_sposoba_rascheta": 4,
        "priznak_predmeta_rascheta": 1,
        "priznak_agenta": "none",
        "phone_oper_perevoda": "",
        "operation_plat_agenta": "",
        "phone_oper_priem_plat": "",
        "name_oper_perevoda": "",
        "address_oper_perevoda": "",
        "inn_oper_perevoda": "",
        "phone_postavshika": "",
        "name_postavshika": "",
        "deliveryposition": "yes"
    }],
    "oplata_arr": {
        "rezhim_nalog": "2",
        "money_nal": 0,
        "money_electro": 46561,
        "money_predoplata": 0,
        "money_postoplata": 0,
        "money_vstrecha": 0,
        "kassir_inn": "",
        "kassir_fio": "",
        "client_email": "support@nanokassa.ru",
        "client_phone": "123"
    },
    "itog_arr": {
        "priznak_rascheta": 1,
        "itog_cheka": 46561
    }

Давайте его подробнее опишем.

  • Как мы уже упомянули, kassaid и kassatoken выдаются в личном кабинете после заключения договора. [string]
  • В переменной cms мы указываем от какой cms идет взаимодействие [string].
  • В объекте check_send_type мы указываем, куда мы будем отправлять чек. Возможные значения: email; phone. Если вы указали email, то онлайн кассе будет отправлена информация о том, что чек клиенту необходимо отправить на электронную почту. Если вы указали phone, то онлайн кассе будет отправлена информация о том, что чек клиенту необходимо отправить посредством смс. Непосредственно чек клиенту как правило отправляет уже ОФД. То есть вы нам говорите, как нужно отправить чек клиенту, мы эту информацию транслируем онлайн-кассе, онлайн касса эту информацию транслирует ОФД, и ОФД уже отправляет чек клиенту. (За смс бывает ОФД берет дополнительные деньги, уточните эту информацию у вашего ОФД) [email,phone]
  • В массиве products_arr описываются товары, которые подлежат фискализации. К нему подробное описание тут.
  • В массиве oplata_arr описываются дополнительные данные об оплате.
  • В массиве itog_arr описываются итоги по чеку.


Подробнее разберем products_arr.

  • (1) В переменной name_tovar, нужно указать наименование товара/услуги необходимого для фискализации [string] [max 65 symb].
  • (2) В переменной price_piece_bez_skidki, необходимо указать стоимость предмета расчета за 1 шт. без скидок (в копейках)
  • (3) В переменной skidka, необходимо указать скидку, которая получилась (в копейках)
  • (4) В переменной kolvo, необходимо указать количество предметов расчета [float]
  • (5) В переменной price_piece, необходимо указать стоимость предмета расчета за 1шт. с учетом всех скидок и прч. Эта цифра должна быть окончательной и она попадет в чек онлайн кассы.
  • (6) В переменной summa, необходимо указать сумму стоимости всего количества предметов расчета (внимательно изучите первый товар, чтобы правильно понимать корреляцию между кол-вом, стоимостью одной штуки, и суммой)
  • (7) В переменной stavka_nds, необходимо указать ставку НДС, которая применяется именно к данной позиции предмета расчета (товару/услуге) [int]:
    • 1 - НДС 18%
    • 2 - НДС 10%
    • 3 - НДС 18/110
    • 4 - НДС 10/110
    • 5 - НДС 0%
    • 6 - НДС не облагается
  • (8) В переменной priznak_sposoba_rascheta необходимо указать каким способом оплачивается данные товар [int]:
    • 1 - Полная предварительная оплата до момента передачи предмета расчета
    • 2 - Частичная предварительная оплата до момента передачи предмета расчета
    • 3 – Аванс
    • 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
    • 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит
    • 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит
    • 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита)
  • (9) В переменной priznak_predmeta_rascheta необходимо указать, к чему относится данный предмет расчета (предмет расчет содержит сведения ...):
    • 1 - о реализуемом товаре, за исключением подакцизного товара
    • 2 - о реализуемом подакцизном товаре
    • 3 - о выполняемой работе
    • 4 - об оказываемой услуге
    • 5 - о приеме ставок при осуществлении деятельности по проведению азартных игр
    • 6 - о выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению азартных игр
    • 8 - о выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению лотерей
    • 9 - о предоставлении прав на использование результатов интеллектуальной деятельности или средств индивидуализации
    • 10 - об авансе, задатке, предоплате, кредите, взносе в счет оплаты, пени, штрафе, вознаграждении, бонусе и ином аналогичном предмете расчета
    • 11 - о вознаграждении пользователя, являющимся платежным агентом
    • 12 - о предмете расчета, состоящем из предметов, каждому из которых может быть присвоено значение от «1» до «11»
    • 13 - о предмете расчета, не относящемуся к предметам расчета, которым может быть присвоено значение от «1» до «12»
  • (10) В переменной priznak_agenta важно указать признак агента. Если пользователь ККТ не является платежным агентом по данному предмету расчета, то этот параметр можно не передавать (или передавать переменную «none»). Если этот параметр не пустой то параметры 11-18 передавать нужно обязательно [string]
    • 0 - Оказание услуг покупателю (клиенту) пользователем, являющимся банковским платежным агентом
    • 1 - Оказание услуг покупателю (клиенту) пользователем, являющимся банковским платежным субагентом
    • 2 - Оказание услуг покупателю (клиенту) пользователем, являющимся платежным агентом
    • 3 – Оказание услуг покупателю (клиенту) пользователем, являющимся платежным субагентом
    • 4 - Осуществление расчета с покупателем (клиентом) пользователем, являющимся поверенным
    • 5 - Осуществление расчета с покупателем (клиентом) пользователем, являющимся комиссионером
    • 6 - Осуществление расчета с покупателем (клиентом) пользователем, являющимся агентом и не являющимся банковским платежным агентом
  • (11) В переменной phone_oper_perevoda необходимо указать телефон оператора перевода (БПА, БПСА) [string]
  • (12) В переменной operation_plat_agenta небходимо указать операцию платежного агента (БПА, БПСА) [string]
  • (13) В переменной phone_plat_agent необходимо указать телефон платежного агента (ПА, ПСА) [string]
  • (14) В переменной phone_oper_priem_plat необходимо указать телефон оператора по приему платежей (ПА, ПСА) [string]
  • (15) В переменной name_oper_perevoda необходимо указать наименование оператора перевода (БПА, БПСА) [string]
  • (16) В переменной address_oper_perevoda необходимо указать адрес оператора перевода (БПА, БПСА) [string]
  • (17) В переменной inn_oper_perevoda необходимо указать ИНН оператора перевода (БПА, БПСА) [string]
  • (18) В переменной phone_postavshika необходимо указать телефон поставщика (для всех типов агента)
  • (19) В переменной name_postavshika необходимо указать наименование поставщика (для всех типов агента)
  • (20) В переменной discount необходима информация о скидке - массив из двух переменных:
    • (21) В переменной type необходимо указать тип скидки на этот предмет расчета (amount на сумму например) [string]
    • (22) В переменной value необходимо указать стоимость скидки на этот товар [float]

Подробнее разберем oplata_arr.

  • В переменной rezhim_nalog нужно указать режим налогообложения [int]
    • 0 – Общая
    • 1 - Упрощенная доход
    • 2 - Упрощенная доход минус расход
    • 3 - Единый налог на вмененный доход
    • 4 - Единый сельскохозяйственный налог
    • 5 - Патентная система налогообложения
  • В переменной money_nal необходимо указать сумму денег которую получили Наличными без запятых и точек (в копейках)
  • В переменной money_electro необходимо указать сумму денег которую получили Элетронными без запятых и точек (в копейках)
  • В переменной money_predoplata необходимо указать сумму денег которую получили Предоплатой (зачетом аванса) без запятых и точек (в копейках)
  • В переменной money_postoplata необходимо указать сумму денег которую получили Постоплатой (в кредит) без запятых и точек (в копейках)
  • В переменной money_vstrecha необходимо указать сумму денег которую получили Встречным представлением без запятых и точек (в копейках)
  • В переменной kassir_inn можно указать ИНН кассира (данный параметр при автоматическом режиме ККТ можно не указывать)
  • В переменной kassir_fio можно указать ФИО кассира (данный параметр при автоматическом режиме ККТ можно не указывать)
  • В переменной client_email необходимо указать электронную почту клиенту, куда придет электронный чек. Должен пройти стандартную валидацию на email.
  • В переменной client_phone необходимо указать сотовый телефон клиента, куда придет чек посредством СМС. Должен содержать только цифры (без плюса)


Подробнее разберем itog_arr.

  • В переменной priznak_rascheta необходимо указать признак расчета [int]:
    • 1 - Приход - поддерживается на момент 01.01.2018
    • 2 - Возврат прихода - поддерживается на момент 01.01.2018
    • 3 - Расход - не поддерживается на момент 01.01.2018
    • 4 - Возврат расхода- не поддерживается на момент 01.01.2018
  • В переменной itog_cheka необходимо указать сумму чека с учетом всех скидок и всего всего (в копейках)


  • В объекте test мы прописываем, тестовый это запрос или «боевой». Внимание! Не забывайте его указывать! Потому, что если вы его не указали, мы автоматические считать его тестовым и не проведем через онлайн кассы. (Возможные значения: 0; 1) (1 -запрос тестовый, 0 - запрос боевой). Этот объект придется еще раз указывать - поэтому не забывайте о нем.

После этого нам необходимо зашифровать этот запрос. 

Первое шифрование.