ioi Receipt Template XML

Mise à jour le 18 septembre 2026·

Introduction

This guide explains how to configure ticket printing in Silicon ioi using a compatible Epson thermal printer with ePos technology.

The solution relies on the following elements:

  • Compatible hardware (Epson printer)
  • Printer model configuration (ioi Printer Model) and printer configuration (ioi Printer)
  • An HTTPS certificate installed on the client workstation
  • A receipt template (ioi Receipt Template XML) composed of blocks (ioi Receipt XML Block)
  • Assigning the template in the ioi Cash Desk

Hardware #

Compatible printers:

  • Epson TM-M30II (RJ45)
  • Epson TM-M30III (WiFi) — recommended to avoid network cabling

Connect the printer to the network and power it on. It will automatically print a sheet with its network information.

Attention

If the workstation and the printer are on different networks, make sure the workstation can reach the printer.

ioi Printer Model #

Create a printer model in Silicon ioi.

Fill in:

  • The identification and description of the model
  • Brand: Epson
  • Paper width: 580
  • Print technology: Epson ePos

ioi Printer #

Create the printer record in Silicon ioi.

Fill in:

  • The identification and description of the printer
  • Check For cash desk
  • The printer model (created in the previous step)
  • The printer’s IP address
  • The printer’s port

HTTPS Certificate #

Silicon ioi communicates with the printer via the HTTPS protocol. A certificate linked to the printer’s IP address must be registered on the client workstation.

Access the printer’s web interface:

https://printer_ip_address

Certificate linked to 0.0.0.0 #

On a new printer, the default certificate may be linked to 0.0.0.0 — this will not work.

Info

A certificate linked to the printer’s actual IP address must be created.

Creating the certificate on the printer #

1. In Chrome, if the HTTPS protocol fails:

Retrieve the proposed certificate and save it to allow a secure HTTPS connection.

Attention

If the proposed certificate is 0.0.0.0 it will not work (case of a new printer). The certificate must be linked to the printer’s IP address.

2. Go to the printer configuration:

Log in with the epson user — the password is the printer’s serial number.

3. Create the certificate:

Set the IP address as the name and specify the maximum validity period (10 years).

4. Send the configuration to the printer:

The printer restarts.

Exporting and installing the certificate #

The certificate is now linked to the IP address. Export it:

Then install it:

Select Local Computer:

Place the certificate in the Trusted Root Certification Authorities store:

The certificate is visible in the certificate list:

Firefox #

For Firefox, add an exception directly in the security settings.

Settings:

Privacy & Security → Certificates → View Certificates:

Servers → Add Exception and enter the printer’s address:

Test Print #

Click the test print button in the ioi Printer record.

On the first print, Silicon ioi will request permission to interact with the printer:

ioi Receipt Template XML #

Create a template for the cash receipt.

Create a template, activate it, then add blocks to display on the receipt.

ioi Receipt XML Block #

A block is a zone of the receipt that spans the full width of the ticket. It is not possible to display two blocks side by side.

Groups #

Each block belongs to one of the following 3 groups:

Group Data source
Header Document header
Line Document detail (with the ability to access header data)
Footer Document header

Info

The group order is strict — it is not possible to display a Footer block before a Line block, nor a Line block before a Header block.

Conditional display #

Conditional display is disabled by default (Off).

When enabled, the condition is defined in Python. The print_if variable is mandatory and must return a boolean:

  • True → the block is displayed
  • False → the block is hidden

The “print if not empty (Text only)” option automatically hides a block if no database value is present — preventing a block from being displayed with only labels and no values.

Block definition (Jinja) #

The content of a block is defined in Jinja — a Python templating engine used by Frappe to generate dynamic content.

Basic syntax:

  • Variables: {{ variable }}
  • Instructions: {% instruction %}
  • Comments: {# comment #}

Benefits of Jinja:

  • Separation of concerns: Python code and presentation are kept separate
  • Reusability: templates can be included or extended
  • Flexibility: conditional logic, loops, filters, etc.
  • Native integration with Frappe

Assigning the template in ioi Cash Desk #

Once the template has been created and activated, it must be assigned to the ioi Cash Desk to be used during printing.

In the ioi Cash Desk record, Parameters tab, Printer section:

  • Printer: select the configured printer (ioi Printer record)
  • Receipt template (XML - Preferred for its speed): select the ioi Receipt Template XML template to use

Astuce

A second field Receipt template (Image mode) is also available for ioi Receipt Template Definition (image mode) templates. For new configurations, XML mode is recommended for its performance.

Cette page vous a-t-elle aidé ?