Шаблон имеет строго определенную, но расширяемую структуру. Шаблон чека описан в формате JSON и имеет обязательные переменные.
Базовая структура шаблона чека:
{
    "margin_left": 0, 
    "margin_right": 10,
    "variables":{
        "type_sale":"Sotuv",
        "type_return":"Qaytaruv"
    },
    "header":[  ],    
    "positions":[  ],    
    "position_totals":[  ],    
    "payments":[  ],    
    "footer":[  ]
}
Далее структура шаблона имеет следующие разделы:
Может содержать информацию о смене, кассире, кассе, дате продажи.
Пример раздела header:
"header":[
    {
      "text": "",
      "font": "",
      "interval": 10,
      "img_src": "1",
      "alignment": 1,
      "img_width": 220,
      "img_height": 60
    },
    {
      "text": "<company.name> ",
      "font": "Lucida Console, 8pt, style=bold",
      "interval": -10,
      "alignment": 1
    }
]
В разделе доступны для использования следующие переменные:
В данном разделе можно использовать собственные переменные, которые передаются непосредственно в чеке. Наименование такой переменной задаётся по следующему формату:
custom.
Если текстовый блок в данном разделе включает в себя следующие теги, то текстовое содержимое блока игнорируется и в блоке отображается указанное изображение:
Пример блока изображения:
{
    "text" : "",
    "font" : "",
    "interval" : 30,
    "alignment": 1,
    "img_src":"\\Cheque\\regos.png",
    "img_width":180,
    "img_height":180
}
Если текстовый блок в данном разделе включает в себя следующие теги, то текстовое содержимое блока шифруется в указанный тип штрих-кода и отображается в блоке:
Пример блока штрих-кода:
{
    "font" : "Lucida Console, 8pt",
    "text" : "<doc.code>",
    "barcode_height":50,
    "barcode_module":2,
    "barcode_show_text":false,
    "barcode_type":1,
    "interval" : 30,
    "alignment": 1
}
Содержит информацию о списке номенклатуры, её количестве, цене.
Пример раздела positions:
"positions":[
    {
      "text": "<pos.n>. <pos.name> [<pos.unit>]",
      "font": "Lucida Console, 7pt",
      "interval": 15,
      "alignment": 0
    },
    {
      "text": "Sh.k: <pos.barcode>",
      "font": "Lucida Console, 7pt",
      "interval": -10,
      "alignment": 0
    }
]
В разделе доступны для использования следующие переменные:
Содержит информацию о итоговой сумме, сумме скидки.
Пример раздела position_totals:
"position_totals":[
    {
      "text": "<DF>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 1
    },
    {
      "text": "Jami:<SF><pos.total_amount>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 0
    }
]
В разделе доступны для использования следующие переменные:
Содержит информаци о списке оплат, сумме каждой оплаты и её типа.
Пример раздела payments:
"payments":[
    {
      "text": "<payment.type_name><SF><payment.value>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 0
    },
    {
      "text": "Bank kartasi turi<SF><payment.card_type>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 0
    }
]
В разделе доступны для использования следующие переменные:
Содержит дополнительную информацию.
Пример раздела footer:
"footer":[
    {
      "text": "FB:<doc.fiscal_sign>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 0
    },
    {
      "text": "FM chek raqami:<doc.id>",
      "font": "Lucida Console, 8pt",
      "interval": -10,
      "alignment": 0
    }
]
В разделе доступны для использования те же переменные, что и в блоке header.