Applies to: Saleculator POS/PDA 4.5 update 4 (4.5.4), Webin 3.7 and Waiter 1.3.0, as relevant to this guide. Download the published packages from Saleculator Downloads.
Each waiter phone sends documents directly to its configured network thermal printers. There is no POS print worker or central background print queue. Phones on different floors can use different billing and kitchen printers.
Configure each phone #
- Connect the phone to a network that can reach the printers. Internet access to Webin alone does not provide access to a restaurant’s local printer.
- Sign in with configuration permission and open Settings > Printers and layouts.
- Configure Billing and the required KOT1–KOT5 destinations. Enter a useful station name, printer address, its configured TCP port, paper width (58 or 80 mm), cutter and buzzer preferences. Leave unused destinations empty.
- Match the product’s kitchen route to the intended KOT destination. For example, food may use KOT1 and drinks KOT2.
- Run a test for every destination, then test one real sample item routed to it.
| Phone | Billing destination | Kitchen destination |
|---|---|---|
| Floor 1 – Phone A | Floor 1 receipt printer | Its configured KOT1/KOT2 printers |
| Floor 2 – Phone B | Floor 2 receipt printer | Its configured KOT1/KOT2 printers |
The station names above are examples. Enter the actual printer addresses for your site. Export/import can copy printer profiles between phones, but review the destination list before applying it on another floor. Changing the signed-in waiter does not change these device profiles.
Use the correct template resources #
| Resource name | Purpose |
|---|---|
Waiter.Print.Bill |
Waiter order/bill summary. |
Waiter.Print.KOT |
New items and KOT increases, decreases and cancellations. |
These are JSON text resources for the waiter app. Existing POS XML resources such as Printer.Ticket and Printer.KOT1 continue to serve POS/PDA printing; the waiter app does not execute those XML templates.
- In Saleculator Resources, find the two exact waiter resource names. If your installation does not have them, create them as text resources (type 0) using valid layouts.
- Keep one resource per name. Save a copy before changing a customized layout.
- In the waiter printer settings, choose the layout refresh action to download the saved resources from Webin.
- If validation fails, correct the resource and refresh again. The app keeps its last working cached layouts when an update is invalid; a phone without a downloaded cache has bundled standard layouts.
- Test both paper widths and the intended language on the actual device/printer.
Small example layouts #
A KOT resource must include the item name, quantity and action. This single resource handles NEW, INCREASE, DECREASE and CANCEL:
{
"schema": 1,
"kind": "kot",
"elements": [
{
"type": "text",
"value": "{title}",
"bold": true,
"align": "center"
},
{
"type": "text",
"value": "{table} | {station}"
},
{
"type": "text",
"value": "{time} | {waiter} | {job}"
},
{
"type": "rule"
},
{
"type": "items",
"elements": [
{
"type": "text",
"value": "{action} {qty} x {name}",
"bold": true
},
{
"type": "text",
"value": "{modifiers}"
},
{
"type": "text",
"value": "{note}"
}
]
}
]
}
A small bill-summary resource:
{
"schema": 1,
"kind": "bill",
"elements": [
{
"type": "text",
"value": "ORDER SUMMARY",
"bold": true,
"align": "center"
},
{
"type": "text",
"value": "{table} | {waiter}"
},
{
"type": "rule"
},
{
"type": "items",
"elements": [
{
"type": "text",
"value": "{qty} x {name} {amount}"
}
]
},
{
"type": "rule"
},
{
"type": "text",
"value": "Total {currency} {total}",
"bold": true
}
]
}
Keep layouts within the supported schema and size limits. Text, rules, columns, item lists, QR codes and bounded PNG logos are supported; arbitrary scripts and raw printer commands are not. Cutter and buzzer behavior belongs in the phone’s printer profile.
Confirm the result #
Sent to printer confirms transmission, not that paper came out. Check the printer if output is missing. Do not resend an uncertain attempt blindly: first resolve whether it printed in Recovery (Needs attention in the 1.4.0 preview). A successful route should not be reprinted merely because another route or the server backup failed.