Чеки коррекции ФФД 1.2

Для отправки чеков коррекции, нужно сформировать специально сформированный пакет с данными.

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

{
    "kassaid": "123456",
    "kassatoken": "12345678912345678912345678912345",
    "cms": "wordpress",
    "check_send_type": "email",
    "check_vend_address": "Адрес установки вендингового автомата (нужно только для вендинга)",
    "check_vend_mesto": "Место установки вендингового автомата (нужно только для вендинга)",
    "check_vend_num_avtovat": "Номер вендингового автомата (нужно только для вендинга)",
    "products_arr": [{
        "name_tovar": "Товар 1, арт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": "Товар 2",
        "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
        }
    }],
    "korr_arr": {
        "rezhim_nalog": "2",
        "money_nal": 0,
        "money_electro": 46561,
        "money_predoplata": 0,
        "money_postoplata": 0,
        "money_vstrecha": 0,
        "name_doc_korr": "Приказ директора 67 от 15 октября 2019 г.",
        "date_doc_korr": "1571097600",
        "client_email": "[email protected]",
        "client_phone": "74992888105"
    },
    "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 типом «ИМ+Венд» или «Венд», то указание параметров вендинга - обязательно!

В массиве products_arr перечисляются товары для чека коррекции в ФФД 1.2

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

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

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

  • (1) В переменной rezhim_nalog нужно указать режим налогообложения [string]
    • 0 – Общая
    • 1 - Упрощенная доход
    • 2 - Упрощенная доход минус расход
    • 3 - Единый налог на вмененный доход
    • 4 - Единый сельскохозяйственный налог
    • 5 - Патентная система налогообложения
  • (2) В переменной money_nal необходимо указать сумму денег которую получили Наличными без запятых и точек (в копейках)
  • (3) В переменной money_electro необходимо указать сумму денег которую получили Безналичными без запятых и точек (в копейках)
  • (4) В переменной money_predoplata необходимо указать сумму денег которую получили Предоплатой (зачетом аванса) без запятых и точек (в копейках)
  • (5) В переменной money_postoplata необходимо указать сумму денег которую получили Постоплатой (в кредит) без запятых и точек (в копейках)
  • (6) В переменной money_vstrecha необходимо указать сумму денег которую получили представлением без запятых и точек (в копейках)
  • (7) В переменной name_doc_korr необходимо указать номер предписания налогового органа для коррекции (тег 1179)). Указывать нужно только, если у вас есть предписания от ФНС.
  • (8) В переменной date_doc_korr необходимо (обязательно) указать только дату (Дата совершения корректируемого расчета (тег 1178)) в формате unixtime на 00:00:00. Например, если вы хотите указать дату 15 октября 2019 г. - то вы должны будете указать цифру: 1571097600. Еще пример, если вы хотите указать дату, 25 июня 2019 г. - то вы должны будете указать цифру: 1561420800. [string]
  • (9) В переменной client_email необходимо указать email, кому будет отправлен чек ( если check_send_type = email )
  • (10) В переменной client_phone необходимо указать номер телефона, кому будет отправлен чек ( если check_send_type = phone )

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

sum2 = итог чека (itog_cheka)

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

Подробнее разберем 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":"korrcheckffd1-2",
    "test":"1"
}

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

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

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

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

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

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

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