Чеки коррекции

Для фискализации чека коррекции, наш запрос должен выглядеть так:

{
    "kassaid": "123456",
    "kassatoken": "12345678912345678912345678912345",
    "cms": "wordpress",
    "check_send_type": "email",
    "check_vend_address": "Адрес установки вендингового автомата (нужно только для вендинга)",
    "check_vend_mesto": "Место установки вендингового автомата (нужно только для вендинга)",
    "check_vend_num_avtovat": "Номер вендингового автомата (нужно только для вендинга)",
    "korr_arr": {
        "fio_upolnomoch": "Иванов Иван Иванович",
        "inn_upolnomoch": "1234567891",
        "type_korr": "0",
        "rezhim_nalog": "2",
        "money_nal": 0,
        "money_electro": 46561,
        "money_predoplata": 0,
        "money_postoplata": 0,
        "money_vstrecha": 0,
        "money_nds_20": 0,
        "money_nds_10": 46561,
        "money_nds_0": 0,
        "money_bez_nds": 0,
        "money_nds_20_120": 0,
        "money_nds_10_110": 0,
        "name_doc_korr": "Приказ директора 67 от 15 октября 2019 г.",
        "date_doc_korr": "1571097600",
        "numb_doc_korr": "67"
    },
    "itog_arr": {
        "priznak_rascheta": 1,
        "itog_cheka": 46561
    }

Разберем, что здесь что.

Переменные kassaid и kassatoken - данные для авторизации.

В переменной cms мы указываем от какой cms идет взаимодействие [string]. Параметр обязательный, иначе мы не сможем понять, как ваш запрос обрабатывать. Особенно это касается вендинговых автоматов и платежных систем. Если у вас запрос типовой, то можете использовать стандартное значение «wordpress». 

В соотвествии с изменениями в законодательстве, и, соотвественно, «форматах фискальных документов» ФНС, одна ККТ может применяться в составе нескольких автоматических устройств (вендинг). В данном случае при регистрации ККТ не указываются следующие параметры: Адрес расчетов, место расчета, номер автомата. Эти параметры должны указываться в процессе формирования чека. Поэтому, если вам необходимо сделать чек коррекции, для вендингового автомата, то необходимо указать данные переменные:
В переменной check_vend_address указываем адрес установки автомата [string] [max 256 symb]
В переменной check_vend_mesto указываем место установки автомата [string] [max 256 symb]
В переменной check_vend_num_avtovat указываем номер автомата [string] [max 20 symb]

Внимание! Если ваша касса создана в личном кабинете (тип кассы в личном кабинете) c типом «ИМ+Венд» или «Венд», то указание параметров вендинга - обязательно!

В массиве korr_arr описываются данные для чека коррекции.

В массиве itog_arr описываются итоги по чеку.

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

  • (1) В переменной fio_upolnomoch, нужно указать ФИО уполномоченного лица для формирования этого чека [string] [max 63 symb].
  • (2) В переменной inn_upolnomoch, нужно указать ИНН уполномоченного лица для формирования этого чека [string] [12 symb]. Не указание, или кол-во символов больше или меньше 12 ведет сразу к ошибке чека. Указывайте верное значение ИНН!
  • (3) В переменной type_korr, нужно указать тип чека коррекции. Значения 0 или 1. Значение 0 соответствует чеку коррекции сделанному самостоятельно. Значение 1 соответствует чеку коррекции сделанному по предписанию (например по предписанию ФНС). [string] [0,1].
  • (4) В переменной rezhim_nalog нужно указать режим налогообложения [string]
    • 0 – Общая
    • 1 - Упрощенная доход
    • 2 - Упрощенная доход минус расход
    • 3 - Единый налог на вмененный доход
    • 4 - Единый сельскохозяйственный налог
    • 5 - Патентная система налогообложения
  • (5) В переменной money_nal необходимо указать сумму денег которую получили Наличными без запятых и точек (в копейках)
  • (6) В переменной money_electro необходимо указать сумму денег которую получили Безналичными без запятых и точек (в копейках)
  • (7) В переменной money_predoplata необходимо указать сумму денег которую получили Предоплатой (зачетом аванса) без запятых и точек (в копейках)
  • (8) В переменной money_postoplata необходимо указать сумму денег которую получили Постоплатой (в кредит) без запятых и точек (в копейках)
  • (9) В переменной money_vstrecha необходимо указать сумму денег которую получили представлением без запятых и точек (в копейках)
  • (10) В переменной money_nds_20 необходимо указать сумму по чеку, от которой считается НДС по ставке 20%, без запятых и точек (в копейках)
  • (11) В переменной money_nds_10 необходимо указать сумму по чеку, от которой считается НДС по ставке 10%, без запятых и точек (в копейках)
  • (12) В переменной money_nds_0 необходимо указать сумму по чеку, от которой считается НДС по ставке 0%, без запятых и точек (в копейках)
  • (13) В переменной money_bez_nds необходимо указать сумму расчета по чеку БЕЗ НДС, без запятых и точек (в копейках)
  • (14) В переменной money_nds_20_120 необходимо указать сумму по чеку, от которой считается НДС по расчетной 20/120, без запятых и точек (в копейках)
  • (15) В переменной money_nds_10_110 необходимо указать сумму по чеку, от которой считается НДС по расчетной 10/110, без запятых и точек (в копейках)
  • (16) В переменной name_doc_korr необходимо указать наименование документа основания для коррекции [string] [max 254 symb]
  • (17) В переменной date_doc_korr необходимо указать только дату в формате unixtime на 00:00:00. Например, если вы хотите указать дату 15 октября 2019 г. - то вы должны будете указать цифру: 1571097600. Еще пример, если вы хотите указать дату, 25 июня 2019 г. - то вы должны будете указать цифру: 1561420800. [string]
  • (18) В переменной numb_doc_korr необходимо указать номер документа основания для коррекции [string] [max 32 symb]

Обратите внимание!  Суммы должны быть равны! sum1=sum2
sum1 = money_nal + money_nal + money_electro + money_predoplata + money_postoplata + money_vstrecha

sum2 = money_nds_20 + money_nds_10 + money_nds_0 + money_bez_nds + money_nds_20_120 + money_nds_10_110

Посчитайте в вашем чеке. Если эти суммы разные, то такой чек не будет фискализирован.

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

  • (1) В переменной priznak_rascheta, нужно указать признак расчета [string] [1,2,3,4].
  • (2) В переменной itog_cheka, нужно указать итог суммы коррекции , без запятых и точек (в копейках)

В переменной priznak_rascheta необходимо указать признак расчета [int]:

  • 1 - Приход
  • 2 - Возврат прихода
  • 3 - Расход
  • 4 - Возврат расхода

После этого, данный запрос шифруется и отправляется к нам на сервер. Результаты фискализации вы сможете увидеть в личном кабинете.

Итак вот этот большой запрос на коррекцию после шифрования должен превратиться вот в такой небольшой запрос:

{
    "ab":"GYBhagdYGWgahjGDHASgdjhas...ASDGd", 
    "de":"GYBhagdYGWgahjGDHASgdjhas...ASDGd", 
    "kassaid":"123456", 
    "kassatoken":"3212312312312",
    "check_type":"korrcheck",
    "test":"1"
}

Разберем, что здесь что.

Переменные kassaid и kassatoken - данные для авторизации.

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

В переменной ab находится ключ для дешифровки пакета de. Объект ab зашифрован с помощью шифрования RSA. 

В переменной de находится основной пакет с данными. Объект de зашифрован с помощью AES256-CTR. Ключ каждый раз разный. Ключ можно узнать только расшифровав пакет ab (RSA)

В переменной check_type находится параметр типа чека. Если это чек прихода или возврата, поставьте параметр standart. Если это чек коррекции - то параметр должен быть равен korrcheck. Не забудьте выставить данный параметр, иначе чек будет обрабатываться как обычный чек прихода/расхода!