Overview
What the receipt template builder is and when to use it.
The receipt template builder lets administrators design custom print templates directly on the device. A template is an ordered list of commands that the printer executes from top to bottom — each command adds a line of text, a table row, a barcode, a spacer, or other elements to the printed output. Templates are stored on the Omnium server and are shared across the entire tenant.
The receipt template builder is available on Android, iOS, and Windows. It is not available on the web version of the app.
Opening the builder
- Open Settings (tap the gear icon in the sidebar).
- Scroll to the Printer section and tap Receipt Templates.
The Receipt Builder screen opens. If no template is loaded, the canvas area is empty. Tap the folder icon in the top bar to open My Templates and load an existing template, or use the menu to create a new one.
Screen layout
The builder adapts its layout to the screen size:
| Screen width | Layout |
|---|---|
| Under 600 px (mobile) | Tabs switch between the template canvas and the command palette. A floating + button adds commands. |
| 600–1200 px (tablet) | Canvas on the left, command palette panel on the right, side by side. |
| Over 1200 px (desktop) | Three columns: command palette, canvas, properties panel. |
On tablet and desktop, the command palette and canvas are always visible at the same time. On mobile, switch between them using the tabs at the top.
AppBar controls
The top bar shows the screen title Receipt Builder and, when a template is loaded, an Editing: [template name] chip. The following controls are available:
| Control | What it does |
|---|---|
| Folder icon | Opens My Templates — browse, load, or delete saved templates |
| Print icon | Sends a test print of the current template to the configured printer |
| ⋮ menu | Save, Save As, Template Settings, Show JSON, Tutorial Mode |
Core concepts
Commands
Every element on a receipt is a command. Commands are added from the command palette and appear as rows on the canvas. Reorder them by dragging, or remove them individually.
There are ten command types in four categories:
Content
| Command | What it prints |
|---|---|
| Text | A single line of text. Supports merge tags, alignment, font size, and bold. |
| Table Row | A row with up to three columns — useful for item name, quantity, and price lines. |
| Merge Group | Iterates over a collection (e.g. line items, payments) and repeats a sub-template for each entry. Use item.* merge tags inside the group. |
Layout
| Command | What it prints |
|---|---|
| Feed Lines | Advances the paper by a number of blank lines (default: 1). |
| Divider | Prints a horizontal rule — a repeated character across the paper width (default: -, 32 characters). |
| Spacer | Adds a fixed amount of vertical space in millimetres. |
Graphics
| Command | What it prints |
|---|---|
| Image | Prints a logo or image. Default source: {{logoUrl}} (the tenant logo). |
| Barcode | Prints a 1D barcode. Default type: CODE128, default data: {{order.orderNumber}}. |
| QR Code | Prints a QR code with configurable data and size. |
Control
| Command | What it prints |
|---|---|
| Cut Paper | Sends a cutter signal to the printer at the end of the receipt. |
Merge tags
Merge tags embed live data into text commands. They use the format {{path}}, for example {{order.orderNumber}} or {{store.name}}.
Four data contexts are available:
| Context | Example tags |
|---|---|
| Store | {{store.name}}, {{store.phone}}, {{store.email}}, {{store.orgNumber}}, {{store.url}}, {{store.address.street}} |
| Shipment | {{shipment.shipmentMethod}}, {{shipment.trackingNumber}}, {{shipment.address.name}}, {{shipment.address.street}} |
| Meta | {{meta.printedAt}} |
| Order | {{order.orderNumber}}, {{order.createdDate}}, {{order.grandTotal}}, and many more order-level fields |
Collections — used inside a Merge Group command — allow you to iterate over:
| Collection | Item fields (item.*) |
|---|---|
order.orderForm.lineItems | item.displayName, item.code, item.ean, item.quantity, item.placedPrice, item.lineItemId, and more |
order.orderForm.discounts | item.discountName, item.discountAmount, and more |
order.orderForm.payments | item.paymentMethod, item.amount, and more |
Inside a Merge Group, set the Collection property to one of the paths above and reference fields as item.* in the nested commands.
Template areas
Each template is assigned to an area that controls where it is available for printing:
| Area | When it is offered |
|---|---|
| Sale Receipt | Printing from a completed sale or order |
| Other | Other manual print actions |
Store and market scoping
When saving a template, you can optionally restrict it to specific stores and/or markets. Leave both fields empty to make the template available across the entire tenant.
Server-side storage
Templates are saved to and loaded from the Omnium server. Any template saved from one device is immediately available on all other devices in the tenant. There is no local-only template storage.
In this section
- My Templates — browse, load, and delete saved templates
- Building a Template — add and configure commands on the canvas
- Previewing Receipt Commands — use the preview panel and test print to verify output
