It is 12:47 on a Friday. The restaurant is full, the POS terminals are firing orders, and the kitchen printer just went silent. The IoT Box dropped off the network again. A server is shouting orders to the kitchen by memory while the manager reboots hardware under the counter. Two tables away, the accounts manager has downloaded the same supplier invoice three times because the file keeps saving to the wrong folder before she can print it. Same business. Same Odoo instance. Two completely different printing problems and neither one has a fix built into standard Odoo.
This guide covers both: why each problem exists, what fixes it, and what your setup looks like when POS receipts, kitchen tickets, invoices, product labels, shipping labels and every other document print the way they should without an IoT Box or a single recurring fee.
The Real State of Odoo Printing — And Where It Falls Short
Most businesses hit Odoo's printing limitations after go-live, not before.
On the POS side, Odoo does have a native printing path but it only covers ePOS, Epson's proprietary network printing SDK, for a small specific list of Epson models. Those work without an IoT Box. Everything else does not.
The overwhelming majority of thermal printers Xprinter, Star Micronics, Bixolon, Citizens, any generic 80mm unit communicate using ESC/POS, the industry-standard protocol used by virtually every thermal printer brand in existence. Standard Odoo cannot talk to these printers directly. The only official route is the IoT Box, a dedicated hardware device that routes all print jobs through a single point. If it goes offline, every printer connected to it goes silent simultaneously.
ePOS and ESC/POS are not interchangeable. ePOS is Epson's proprietary SDK, supported on specific Epson network models only. ESC/POS is the open command protocol the rest of the market runs on. That distinction determines whether you need extra hardware to print at all and it is the source of most Odoo printing confusion.
On the back-office side, the problem is different but equally disruptive. For every invoice, purchase order, delivery note, product label, shipping label or report, Odoo's only option is to generate a PDF download. The user opens it, selects a printer, confirms. Every time. For a team processing dozens of documents a day, that is a workflow cost that adds up silently.
Fixing Odoo POS Printing Without an IoT Box Any ESC/POS Thermal Printer
For most Odoo POS deployments, the IoT Box has felt non-negotiable. If you are not running a supported Epson ePOS model, there has been no other official path. That is no longer true.
The Print Engine Client is a lightweight background service not an appliance, not dedicated hardware. It is installed on a device already in your setup. A Windows POS terminal, an Ubuntu machine, an Android mobile/tablet, MAC system or a Raspberry Pi all work equally well. It handles all ESC/POS communication between Odoo POS and your printer without requiring any printer drivers.
Here is how a print job moves through the setup:
- Odoo POS sends a print job — a receipt or a kitchen order ticket
- The Print Engine Client receives it over your local network
- The client forwards it directly to your ESC/POS thermal printer — network (TCP/IP) or USB
- The printer outputs instantly
The key architectural difference compared to an IoT Box is that each POS zone or station uses a shared Print Engine Client instance when all devices are connected to the same Wi-Fi or local network.
For example, the receipt printer at the counter, the ticket printer at the hot pass, and the kitchen printer at the grill station are all managed through a single Print Engine Client. Each printer operates independently, so if one printer is offline or encounters an issue, it does not impact the operation of the others. This ensures reliable and uninterrupted printing across all stations.
For example, if you operate multiple stores across different locations, Odoo requires a separate IoT Box at each location to enable printing. In contrast, our solution only requires the Print Engine Client to be installed and running at each location. No additional hardware, IoT Box, or external device is needed, making deployment simpler and more cost-effective.
Supported hardware covers the full ESC/POS spectrum: Epson ESC/POS models, Xprinter, Star Micronics, Bixolon, Citizens, Esypos, and any generic 80mm thermal printer over TCP/IP or USB. If it speaks ESC/POS, it works across all Odoo versions..
Setup does not require technical expertise. Install the module through the Odoo Apps marketplace, receive the Print Engine Client and full documentation by email after purchase, install it on your chosen device, configure the printer connection (IP address for network, USB port for USB), link it to your Odoo POS backend, and run a test print.
One network requirement: the device running the Print Engine Client and the printer must be on the same LAN. For Odoo.sh cloud deployments, the client runs locally in your store, your cloud instance and local print hardware connect independently.
This is a standalone purchase. If POS and kitchen printing is your only requirement, this is the only module you need.
→Creyox All-in-One Odoo POS Printing Solution
Fixing Odoo Back-Office Document Printing — One Click, No Download
The POS counter is now printing perfectly. But at the accounts desk, nothing has changed. Every invoice still means: wait for the download, open the file, select the printer, confirm. Every purchase order. Every delivery note.
Odoo has no native direct print path for back-office documents. That is what Direct Print solves and it is an entirely separate module with no dependency on the POS solution above.
Once the Creyox All-in-One Direct Print module is installed, you can enable Direct Print on any report through its configuration. For reports where it is enabled, a second action appears alongside the standard one. Both carry the same document name, but the Direct Print version has "Direct Print" added to it. Clicking the original action downloads the PDF exactly as Odoo always has. Clicking the Direct Print action sends the document straight to the designated printer and the job is done.
The setup uses the same Print Engine Client executable used for POS printing - there is no separate client. Install it on the machine with access to your office or warehouse printers. On first login with your Odoo URL, and a unique token generated inside Odoo, the client automatically discovers every connected printer USB, network, or WiFi and syncs them into Odoo. No manual printer entry required.
From Odoo's report settings, assign a default printer to each report type. Customer invoices route to the accounts desk printer. Delivery notes go to the warehouse standard printer, shipping or product labels go to the Zebra printer at warehouse. Purchase orders print at the purchasing manager's workstation. Each report and printer is configured independently.
For workflows where zero interaction is the goal, Automation Rules take this further. Configure a rule based on any Odoo action or condition - a status change, a record creation, a field update and the print job fires automatically when that condition is met, with no click required from anyone. A delivery order validated in the warehouse triggers an immediate delivery note and shipping label printout. A confirmed invoice prints before the user moves to the next record.
Every job manual or automatic is logged with its document, printer, timestamp, and status. Failed jobs show error details and can be retried or reprinted directly from the log. Nothing is silently lost.
Authentication uses a unique per-client token. No open ports, no shared credentials.
The Print Engine Client runs on Windows, Linux, macOS, Android, and iOS. One hard constraint: it works with Self-hosted, Odoo.sh and On-Premise (Community and Enterprise). It doesn’t work with Odoo Online.
This is a standalone purchase. You do not need the POS module to use it. If back-office document printing is your only challenge, this is the only module you need.
Default Odoo vs a Complete Creyox Printing Setup
Feature | Standard | With Our Modules |
POS ESC/POS thermal printing | Requires IoT Box | Direct via Print Engine Client |
Kitchen order ticket printing | Requires IoT Box | Independent per station |
Back-office direct print | Manual download every time | One-click Direct Print |
Auto-print by report type | Not available | Direct Print per report + Automation Rules for condition-based automatic printing |
Print job tracking and retry | Not available | Full log with reprint |
Printer auto-discovery | Not available | Automatic on client launch |
Supported ESC/POS printer brands | Epson ePOS models only (native) | All ESC/POS brands |
IoT Box required | Yes (for ESC/POS and USB) | No |
Printer drivers required | Sometimes | Never |
Recurring fees | IoT Box + potential subscriptions | None — one-time purchase |
Supported platforms | IoT Box hardware only | Windows, Linux, macOS, Android, iOS, Raspberry Pi |
Single point of failure | Yes (IoT Box) | No — distributed per terminal |
Module dependency | — | Each module fully independent |
Who This Is For
Restaurants and cafés running any thermal printer outside Epson's ePOS-supported list and needing counter receipt printing and kitchen station printing to operate independently, without a shared failure point.
Retail stores on Windows or Ubuntu POS hardware who want ESC/POS receipt printing without an IoT Box, and whose back-office teams are still downloading before every print.
Warehouses and distributors where delivery notes, picking slips, product and shipping labels need to print the moment a transaction is confirmed in Odoo not after someone remembers to open a downloaded file.
Odoo implementers and partners who want a clean, maintainable printing architecture for client deployments, no dedicated hardware per location, no firmware to manage, no single-box failure to troubleshoot remotely. Each module deployed only where it is actually needed.
Multi-location businesses where eliminating IoT Box hardware costs across five, ten, or twenty sites represents a meaningful saving over any two-year period.
How to Get Set Up
Neither setup requires developer involvement or printer drivers.
For POS printing: install the module from the Odoo Apps marketplace. After purchase, Creyox delivers the Print Engine Client and full setup documentation by email. Install the client on your device, configure the printer connection, link it to your Odoo POS backend, and run a test print.
For back-office direct printing: install the module, create a Print Engine Client record in Odoo to generate your authentication token, launch the executable on your local machine, and log in with your Odoo URL, database name, and token. The client auto-discovers all connected printers and syncs them into Odoo. Assign printers to reports and enable Direct Print on each report you want to use. For fully automatic printing with no user interaction, configure Automation Rules in Odoo pointing to the relevant report and printer.
Conclusion
When Odoo printing is configured correctly, it disappears from daily awareness. Receipts print. Kitchen tickets route. Invoices reach the right printer the moment they are confirmed. Nobody is rebooting a box mid-service or hunting for a downloaded file. POS Receipts + Backend Reports + Product and Shipping Labels (ZPL): All-in-One Odoo POS Printing Solution Backend Reports + Product and Shipping Labels (ZPL): All-in-One Direct Print
Frequently Asked Questions
They are completely independent. The POS module handles thermal receipt and kitchen ticket printing. The Direct Print module handles back-office documents. No dependency in either direction, purchase only what you need.
No. Both modules replace the IoT Box within their respective printing layers. Neither setup requires an IoT Box on your network.
The All-in-One Odoo POS Printing Solution. It covers ESC/POS receipt and kitchen ticket printing with no IoT Box. The Direct Print module is not required.
The All-in-One Direct Print module. It installs independently with no dependency on the POS module.
All ESC/POS thermal printers: Epson ESC/POS models, Xprinter, Star Micronics, Bixolon, Citizens, ESYPOS, and any generic 80mm thermal printer network (TCP/IP) or USB. No specific brand or model requirement.
Yes. Each printer runs through its own Print Engine Client instance, configured independently in the Odoo POS backend. Receipts route to the counter printer, kitchen tickets to separate stations. A failure at one station does not affect the others.
It is logged with full detailsa document, printer, timestamp, and error information. Failed jobs can be retried from the log record or reprinted from the original Odoo document. Nothing is silently dropped.
Yes. Configure an Automation Rule in Odoo based on any action or condition - document confirmation, status change, record creation - and the print job fires automatically with no manual step required. This works for invoices, delivery notes, purchase orders, or any custom report.
No. Both are one-time purchases.