С 1 января 2026 года общая ставка налога на добавленную стоимость (НДС) в Казахстане будет увеличена до 16%.

Программный ФР Webkassa поддерживает следующие операции:

  • закрытие чеков:
    • продажи,
    • возврата,
    • возврата по чеку продажи,
    • внесения,
    • выема.
  • печать отчетов:
    • x-отчет,
    • x-отчет по отделам,
    • z-отчет.

Операции выполняются посредством отправки запросов к удаленному сервису Webkassa.

Подключение принтера чеков и настройка драйвера

Подключение принтера чеков и настройка драйвера Webkassa осуществляется в Сервисном меню через Менеджер оборудования.

Для подключения необходимо последовательно выполнить следующие действия:

  1. Указать принтер чеков или ФР для осуществления печати чеков:
  2. Добавить драйвер Webkasssa:
     

  3. Настроить параметры драйвера:

    • Номер ФР – порядковый номер ККМ.
    • Принтер – ранее подключенный принтер чеков или ФР для печати документов и отчетов.
    • Адрес – адрес сервиса Webkassa.
    • Таймаут – таймаут ожидания ответа от сервиса Webkassa (в секундах).
    • Логин пользователя из Webkassa – логин для доступа к сервису.
    • Пароль пользователя из Webkassa – пароль для доступа к сервису.
    • Уникальный номер кассы – заводской номер кассы.
    • Ключ для взаимодействия с сервисом Webkassa – ключ, который передается в запросах к сервису.
    • Код налога 'Без НДС' – код для передачи налога без НДС в ФР. По умолчанию 999.

Настройка

Для корректного закрытия и печати чеков необходимо настроить соотнесение налогов, типов оплаты, отделов и единиц измерения товаров.

Для корректной работы необходимо активировать: 

  • плагин fdcontroller в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/fdcontroller.ini в секции [plugins],

    Пример настройки
    [plugins]
    fdcontroller = on
  • параметр requestTlv в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/fdcontroller.ini в секции [FdController].

    Пример настройки
    [FdController]
    ...
    ; Получать tlv-данные документа
    ; По умолчанию false
    requestTlv = true

Настройка соотнесения налогов

Соотнесение налогов осуществляется посредством настройки секции [HW.FR.TaxMapping] в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/fr.ini.

Пример настройки
[HW.FR.2.TaxMapping]
; соотнесение налогов
0=1
100=2,4
999=3

Для работы с Webkassa на кассе должны быть добавлены следующие ставки НДС (см. БД Dictionaries таблицу Vat поле type) для соответствующих кодов налогов в ФР:

  • 0 – НДС 0%,
  • 100:
    • НДС 12% – до 2026 года,
    • НДС 16% – с 1 января 2026 года.
  • 999 – без НДС.

В свойствах товара должен быть указан один из налогов (см. БД Dictionaries таблицу Tmc).

Использование ставки НДС 16%

Для корректной работы значение для НДС 16% в свойствах товаров на кассе не должно быть указано ранее 1 января 2026 года.

Для использования ставки НДС 16% необходимо:

  1. Заполнить справочник налогов в БД кассового сервера, добавив ставку НДС 16%.
  2. Настроить соотнесение налогов кассовой программы и ФР.

    Пример настройки
    [HW.FR.2.TaxMapping] 
    ; Соотнесение кодов налогов в ФР и кодов налогов в кассе
    ; <Код налога ФР> = <Код налога в кассе>
    0=1
    100=2,4
    999=3
    
    ; 4 - Код налога в кассе для НДС 16%
    ; 2 - Код налога в кассе для НДС 12%
  3. Указать налоги со ставкой НДС 16% в свойствах товаров в БД кассового сервера.
  4. Выгрузить справочники налогов и товаров на кассы.

При закрытии чека продажи:

  • будет использована указанная ставка НДС,
  • на сервис программного ФН для каждого товара будет передано значение поля ntin.

Настройка соотнесения типов оплаты

Для всех типов оплаты должно быть указано округление до целых (см. БД Dictionaries таблицу Valut поле decpoint), математически с потерей значимости (см. БД Dictionaries таблицу Valut поле round).

Соотнесение типов оплат осуществляется посредством настройки секции [HW.FR.PayAccordance] в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/fr.ini.

Пример настройки
[HW.FR.2.PayAccordance]
; соотнесение типов оплаты
0=1
1=2
4=4

Для работы с Webkassa на кассе должны быть добавлены следующие типы оплат (см. БД Dictionaries таблицу Valut поле type):

  • 1 – наличные,
  • 2 – банковская карта,
  • 4 – мобильные.

Настройка соотнесения отделов

Соотнесение отделов, к которым привязаны товары в кассовой программе и в ФР, осуществляется посредством настройки секции [HW.FR.DepartMapping] в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/fr.ini.

Пример настройки
[HW.FR.2.DepartMapping]
; Соотнесение логических и фискальных отделов для ФР
; <Номер отдела ФР> = <Номер отдела в кассе>
1=1
2=2

Настройка соотнесения единиц измерения товара

Соотнесение единиц измерения товаров осуществляется посредством настройки секции [HW.FR.UnitsMapping] в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/fr.ini.

Пример настройки
[HW.FR.UnitsMapping]
; соотнесение единиц измерения товара
1=796
3=166

Для работы с Webkassa на кассе должны быть добавлены следующие единицы измерения (см. БД Dictionaries таблицу Units поле code):

  • 1 – штуки,
  • 3 – килограммы.

Настройка соотнесения символов казахского алфавита

Соотнесение символов казахского алфавита осуществляется посредством настройки секции [HW.FR.SymbolsMapping] в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/fr.ini.

При использовании ФР Webkassa соотнесение символов должно быть задано в одной общей секции.
Пример настройки
[HW.FR.SymbolsMapping]
;
; Соотнесение символов кодовой страницы Windows-1251 и символов казахского алфавита
; <Символ кодовой страницы Windows-1251 в Unicode> = <Символ казахского алфавита>

; соотнесение символов
408 = Ә
458 = ә
404 = Ғ
454 = ғ
40C = Қ
45C = қ
405 = Ң
455 = ң
490 = Ө
491 = ө
40E = Ұ
45E = ұ
40B = Һ
45B = һ
407 = Ү
457 = ү

Шаблоны документов

Для формирования чеков продажи используется шаблон webkassa_sale.xml, чеков возврата, чеков возврата по чеку продажи – webkassa_back.xml, для чеков внесения – webkassa_moneyin.xml, для чеков выема – webkassa_moneyout.xml,  для x-отчетов – webkassa_xreport.xml, для x-отчетов по отделам – webkassa_xreportdept.xml, для z-отчетов – webkassa_zreport.xml

Если в БД сохранены валюты или единицы измерения со значениями кодов, отличными от описанных выше, то для корректной печати чека необходимо внести изменения в шаблоны webkassa_sale.xml, webkassa_back.xml:

  • для валюты с соответствующим кодом изменить значение valcode:

    Пример для валюты с кодом 1 - наличные
    <select query="SELECT valcode, 
            sum(moneyitem.sumb) sumb 
            FROM documents.moneyitem WHERE documentid = $document.id$ AND moneyitem.opcode = 70 and valcode = 1 GROUP BY valcode">
        <text align="left">Қолма-қол/Наличные:</text><var align="right" name="sumb" numberformat=".2" maxwidth="all"/><br/>
    </select>
  • для кода единицы измерения изменить значение параметра value в условии:

    Пример для единицы измерения с кодом 1 - штуки
    <if var="measure" op="eq" value="1">
        <var name="bquant" numberformat=".0" padding="3"/><text> дана/шт * </text>
    <else/>
        <var name="bquant" numberformat=".3" padding="3"/><text> кг/кг * </text>
    </if>

Печать информации о товарах в отчетах на казахском языке

Печать информации о товарах на казахском языке возможна только если переводы добавлены в справочник.

Подробнее о добавлении и корректном отображении переводов:

Печать наименований товаров на казахском языке одновременно с русским настраивается в шаблонах webkassa_sale.xml, webkassa_back.xml:

Печать наименования товара на казахском языке через /
<select query="select translation, idtype from dictionaries.tr where id=$bcode$ and lang='kk' and idtype IN (0, 1) order by idtype desc limit 1">
          <text maxwidth="all" align="right">/ $translation$</text><br/>
</select>

Если необходимо печатать наименования товаров на языке текущего интерфейса, то нужно внести изменения в шаблоны webkassa_sale.xml, webkassa_back.xml:

Печать наименования товара на языке интерфейса через /
<select query="select IF(COUNT(translation)=0, '$name$', translation) translation, idtype from dictionaries.tr where id=$bcode$ and lang='$language$' and idtype IN (0, 1) order by idtype desc limit 1">
    <text maxwidth="all" align="right">/ $translation$</text><br/>
</select>

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

Подробнее о редактировании шаблонов можно прочитать в разделе "Движок отчетов".

Чеки продажи и возврата

Для ФР Webkassa поддержана возможность закрывать чеки со скидками, наценками и маркированными товарами, передавать в чеке ИНН/БИН и адрес покупателя.

Передача фискальных данных в чеке возврата по чеку продажи

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

Для возврата по чеку продажи необходимо настроить форму возврата для ввода фискальных данных в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/backbysale.ini:

Пример настройки
[BackBySale.InputFiscalInfo.Field.1]
fieldId = fiscalSign
description = {"id": "inputFiscalInfoSourceFdNumber", "defaultMessage": "Номер ФД\nчека-основания"}
type = 10
regexp = "[0-9]{1,12}"

[BackBySale.InputFiscalInfo.Field.2]
fieldId = fnNumber
description = {"id": "inputFiscalInfoSourceFmNumber", "defaultMessage": "Номер ФМ\nчека-основания"};
type = 10
regexp = "[a-zA-Z0-9]{16}"

[BackBySale.InputFiscalInfo.Field.3]
fieldId = fnDate
description = {"id": "inputFiscalInfoDate", "defaultMessage": "Дата и время"}
type = 16
dateFormat = "dd.MM.yyyy hh:mm:ss"
regexp = "yyyyMMddhhmmss"
row = 2

[BackBySale.InputFiscalInfo.Field.4]
fieldId = sum
description = {"id": "inputFiscalInfoSum", "defaultMessage": "Общая сумма"}
type = 6
regexp = "[0-9]*(\.[0-9]{1,2})?"

[BackBySale.InputFiscalInfo.Field.5]
fieldId = serialnum
description = {"id": "inputFiscalInfoSum", "defaultMessage": "Номер ККТ"}
type = 10
regexp = "[a-zA-Z0-9]{16}"

Каждая секция отвечает за конкретное поле в форме возврата для ввода фискальных данных.

Количество допустимых символов задается маской в параметре regexp. Если вводимые данные не будут проходить по маске, то поля будут подсвечены красным цветом и данные невозможно будет применить.

При выполнении операции возврата осуществляется проверка на наличие в БД Documents таблице Fiscaldocument сохраненных фискальных данных чека продажи:

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

    При нажатии на кнопку "Отмена" чек возврата не будет сформирован.
    При вводе данных вручную проверяется правильность заполнения полей. Если введены некорректные данные, то поля будут подсвечены красным цветом. Введите корректные фискальные данные и нажмите клавишу "Ввод", чек возврата будет сформирован.

Передача фискальных данных в режиме возврата

Для возврата необходимо настроить форму возврата для ввода фискальных данных в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/back.ini:

Пример настройки
[Back.InputFiscalInfo]
; Регулярное выражение для ввода данных со сканера в диалоге
; По умолчанию ""
fieldDistributionRegexp = ".*&fn_number=(?<fnNumber>[a-zA-Z0-9]{16}).*&fd_number=(?<fdNumber>[0-9]{1,10}).*"

[Back.InputFiscalInfo]
; Регулярное выражение для ввода данных со сканера в диалоге
; По умолчанию ""
fieldDistributionRegexp = ".*&fn_number=(?<fnNumber>[a-zA-Z0-9]{16}).*&fd_number=(?<fdNumber>[0-9]{1,12}).*"

[Back.InputFiscalInfo.Field.1]
fieldId = fiscalSign
description = {"id": "inputFiscalInfoSourceFdNumber", "defaultMessage": "Номер ФД\nчека-основания"}
type = 10
regexp = "[0-9]{1,12}"

[Back.InputFiscalInfo.Field.2]
fieldId = fnNumber
description = {"id": "inputFiscalInfoSourceFmNumber", "defaultMessage": "Номер ФМ\nчека-основания"};
type = 10
regexp = "[a-zA-Z0-9]{16}"

[Back.InputFiscalInfo.Field.3]
fieldId = fnDate
description = {"id": "inputFiscalInfoDate", "defaultMessage": "Дата и время"}
type = 16
dateFormat = "dd.MM.yyyy hh:mm:ss"
regexp = "yyyyMMddhhmmss"
row = 2

[Back.InputFiscalInfo.Field.4]
fieldId = sum
description = {"id": "inputFiscalInfoSum", "defaultMessage": "Общая сумма"}
type = 6
regexp = "[0-9]*(\.[0-9]{1,2})?"

[Back.InputFiscalInfo.Field.5]
fieldId = serialnum
description = {"id": "inputFiscalInfoSum", "defaultMessage": "Номер ККТ"}
type = 10
regexp = "[a-zA-Z0-9]{16}"

Каждая секция отвечает за конкретное поле в форме возврата для ввода фискальных данных.

Количество допустимых символов задается маской в параметре regexp. Если вводимые данные не будут проходить по маске, то поля будут подсвечены красным цветом и данные невозможно будет применить.

При выполнении возврата будет выведен диалог ввода фискальных данных чека продажи:

При нажатии на кнопку "Отмена" чек возврата не будет сформирован.
При вводе данных вручную проверяется правильность заполнения полей. Если введены некорректные данные, то поля будут подсвечены красным цветом. Введите корректные фискальные данные и нажмите клавишу "Ввод", чек возврата будет сформирован.

Передача ИНН/БИН покупателя

Для передачи ИИН/БИН в запросах к сервису Webkassa необходимо:

  1. Активировать плагин customerInn в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/customerInn.ini в секции [plugins].

    НаименованиеТип данныхВозможные значения

    Описание

    Примечания
    customerInnстроковый
    • on
    • off

    Плагин для ввода ИНН покупателя

    По умолчанию off
    [plugins]
    ; Плагин для ввода ИНН покупателя
    ;customerInn = off
  2. В утилите администрирования Yuki на клавишу настроить действие "Добавить ИНН покупателя" с командой COMMAND_CUSTOMER_INN. О настройке действий подробнее можно прочитать в разделе "Настройка действий".
  3. В утилите администрирования Yuki добавить команду COMMAND_CUSTOMER_INN в список команд для выбранных ролей. О настройке ролей подробнее можно прочитать в разделе "Пользователи и роли".
  4. Для печати ИИН/БИН покупателя в чеке добавить запрос на получение ИНН/БИН из БД в шаблон отчета webkassa_sale.xml – для продажи и webkassa_back.xml – для возврата:

    <select query="SELECT nopdfurlegais FROM document WHERE documentid = $document.id$ and nopdfurlegais is not null and nopdfurlegais != ''">
    	<text fillsymbol="-" maxwidth="all"/><br/>
    	<text align="left">ИИН:</text><var align="right" name="nopdfurlegais" maxwidth="all"/><br/>
    	<text fillsymbol="-" maxwidth="all"/><br/>
    </select>

    Подробнее о редактировании шаблонов можно прочитать в разделе "Движок отчетов".

При нажатии на клавишу с командой COMMAND_CUSTOMER_INN на экран будет выведен диалог для ввода ИИН. Допустимое значение: 12-значный номер. При вводе корректного ИИН значение сохраняется в БД Documents в таблицу Document в поле nopdfurlegais и в БД Documents в таблицу Client в поле inn.

Передача адреса покупателя

В качестве адреса покупателя в запросах к сервису Webkassa могут быть переданы следующие значения:

  • адрес электронной почты,
  • номер телефона.

Для передачи адреса покупателя необходимо активировать и настроить плагин customerAddress. Подробнее об этом можно прочитать в разделе "Отправка чека на адрес покупателя".

Для печати адреса покупателя в чеке необходимо добавить запрос на получение адреса из БД в шаблон отчета webkassa_sale.xml – для продажи и webkassa_back.xml – для возврата:

<select query="SELECT customeraddress FROM document WHERE documentid = $document.id$ and customeraddress is not null and customeraddress != ''">
    <text fillsymbol="-" maxwidth="all"/><br/>
    <text align="left">Адрес покупателя:</text><var align="right" name="customeraddress" maxwidth="all"/><br/>
    <text fillsymbol="-" maxwidth="all"/><br/>
</select>

Подробнее о редактировании шаблонов можно прочитать в разделе "Движок отчетов".

Проверка счетчиков в смене и в ФР

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

  • No labels