Problem: Every print was a struggle
For companies using Odoo in their warehouse, printing should be the simplest part of the process. Confirm delivery — the label is printed. Post an invoice — the document is generated. That's how it should work.
In practice, most teams encounter something completely different. The standard Odoo approach requiresIoT Box— a special Raspberry Pi device that bridges Odoo and local printers. It works, but introduces additional costs, complexity, and a new point of failure. When the IoT Box stops working, printing halts. When reconfiguration is needed, you need a technician. In environments with multiple workstations or remote locations, costs accumulate.
"We had three IoT Boxes on two floors. At least one would fail every week. We spent more time troubleshooting printer issues than actually packing and shipping orders."
Before
- IoT Box per workstation (~€200 each)
- Manual network configuration
- Frequent connection drops
- 45+ seconds from click to print
- No visibility into failed jobs
- IT technician needed for every issue
After MaxCode Print Client
- No additional hardware
- Setup in under 10 minutes per computer
- Automatic reconnection
- Printing in under 3 seconds
- Complete overview of the print queue with statuses
- Runs quietly in the background from computer startup
Solution: MaxCode Print Client
MaxCode Print Client is a two-part solution, developed exclusively for Odoo:
-
Odoo module (
mc-direct-print) which is installed on your Odoo server — adds a "Print Direct" menu for managing host computers, printers, print queues, and automatic printing rules. - Desktop applicationthat is installed on a computer physically connected to the printer — runs in the background, listens for print jobs from Odoo, and executes them immediately.
Both parts communicate viaWebSocket in real time— without periodic refreshing, without waiting. As soon as Odoo sends a print command, the desktop application receives it and sends it to the printer — typically in less than 3 seconds.
Setup: less than 10 minutes per computer
Installation is intentionally simple — no configuration on the server side, no port forwarding, no driver installation.
- Install the module
mc-direct-printon your Odoo instance - Download and runMaxCode Print Clienton the computer
- Enter your Odoo URL, database name, and user credentials
- ClickStart— the application connects, discovers printers, and registers them in Odoo
- Enable "Run at startup" — the application will then run quietly in the system tray
That's it. Odoo now sees all printers connected to that computer. You can assign them to reports, automatic printing rules, or manually activate them from any order.
What is printed — and in what format
| Format | Typical application | Printer type |
|---|---|---|
| Invoices, delivery notes, picking lists, purchase orders | Any PDF printer | |
| ZPL | Shipping labels, product labels, barcodes | Zebra and ZPL-compatible printers |
| ESC/POS | POS receipts, kitchen orders, cashier slips | Thermal printers for receipts |
| Image (PNG/JPG) | QR codes, product images, custom labels | Thermal or standard printers |
Automatic printing rules — what is actually used in production
Automatic printing rules are the core of the MaxCode Print Client. Once you set them up — Odoo does everything automatically from then on, without a single click.
Here are specific cases that work in production today:
Document:Delivery note PDF
Printer:Warehouse printer
Result:Document in the hands of the employee while it is still going to the shelf
Document:Customer receipt (ESC/POS)
Printer:Thermal printer at the checkout
Result:Receipt printed before the customer reaches the checkout
Izvještaj: Račun PDF
Printer: Uredski printer
Rezultat: Račun ispisan i spreman za slanje ili potpis
Source:Attachments on the record (PDF, image, ZPL files)
Printer:Any registered printer
Result:Specifications, certificates, and labels are printed automatically
Source: Bilo koji Odoo izvještaj (standardni ili prilagođeni QWeb)
Printer: Bilo koji registrirani printer
Rezultat: Narudžbenice, radni nalozi, dostavnice — sve automatizirano
Format: ZPL raw naredbe za Zebra printere
Printer: Zebra ili bilo koji ZPL-kompatibilni printer naljepnica
Rezultat: Barkod naljepnica na paketu za manje od 2 sekunde
Each rule is fully customizable: trigger, condition, document source, target printer, number of copies, and scope by company. You can have dozens of rules simultaneously — shipping labels on the warehouse printer, invoices on the office printer, POS receipts at the checkout, kitchen orders on the kitchen printer —all from a single Odoo module, without any additional devices other than the printers themselves.
Overview of print queues and audit trail
Each print job is recorded in Odoo with the status:Pending, PrintedorFailed. If printing fails (printer turned off, out of paper, connection drop), the job remains in the queue and can be restarted with a single click — or it can automatically retry via a background task.
No more questions like "Did the label even print?" — you have a complete audit trail directly in Odoo.
Technical features
| Feature | Detail |
|---|---|
| Connection | WebSocket (Odoo bus.bus) — real-time, no periodic refresh |
| Automatic reconnection | Exponential backoff, automatic session renewal |
| Multiple profiles | Managing connections to multiple Odoo databases from a single application |
| Launching | systemd service (Linux) or Startup folder (Windows) — automatically on startup |
| System tray | Hides in the tray — no visible window during operation |
| Password storage | OS keychain (Linux Secret Service / Windows Credential Manager) |
| Simultaneous printing | Up to 10 parallel print jobs |
| Diagnostics | One-click diagnostics copy, rotating log, log viewer |
| Operating systems | Linux (AppImage) · Windows (.exe) |
| Odoo versions | Odoo 17, 18, 19 |
Result
"We installed it on five workstations in one afternoon. Labels are now printed before the warehouse worker reaches the shelf. We haven't touched the configuration since."
The combination of real-time WebSocket delivery, automatic retries, and setup without hardware means printing becomes what it was always meant to be — infrastructure that works seamlessly in the background.
For teams using Odoo in logistics, manufacturing, retail, or any activity involving physical documents, MaxCode Print Client removes one of the most common and frustrating daily obstacles.
Case study: automatic POS receipts without dialogs and without driver installation
Printing warehouse labels is the most common use case — but MaxCode Print Client solves an equally painful problem in hospitality and retail: printing POS receipts without a browser dialog, without installing drivers on every terminal, and without an IoT Box.
A hospitality group with Odoo POS at four locations approached us with a specific problem: thermal printers for receipts required special drivers on each POS terminal, and the standard Odoo POS print opened a dialog box every time.browser dialog box— a constant source of staff errors and delays for guests during busy hours.
"When the dialog box appeared during the lunch rush, staff sometimes clicked incorrectly and the receipt wouldn't print. Guests were waiting. It was awkward."
How Odoo POS + MaxCode Print Client works
Standard Odoo POS print
- The browser opens a dialog box for each receipt
- Staff must manually click 'Print' every time
- Drajver za printer potreban na svakom POS terminalu
- No feedback on failure — the order gets lost
- Different setup for each workstation
- Kitchen printer requires a special hardware bridge
With MaxCode Print Client
- Automatic print ruleis triggered on order confirmation — zero clicks
- ESC/POS commands are sent directly to the thermal printer
- Bez dijaloškog okvira preglednika, bez drajvera na terminalima
- Neuspjeli poslovi automatski se ponavljaju i ostaju u redu čekanja
- One setup covers all terminals
- Separate rules for cash register and kitchen orders
ESC/POS: Protokol koji to omogućuje
ESC/POS is a native protocol for receipt thermal printers — supported on almost all Epson, Star Micronics, Bixolon, and compatible printers. MaxCode Print Client sends ESC/POS commandsdirectly from Odoo to the printer, bypassing the OS print queue. Result:
- The receipt prints in less than 2 seconds from confirmation in the POS
- No spooler, drivers, or dialogs — it just works
- Works with USB and network thermal printers
- Supports custom receipt layouts from Odoo templates
Two printers, one setup: front of house and kitchen
When an order is confirmed in Odoo POS, two rules are triggered simultaneously:
Document: Receipt (PDF/ESC-POS)
Printer: Thermal printer at the front of house
Copies: 1
Document: Kitchen Order (custom template)
Printer: Kitchen thermal printer
Copies: 1
Both are triggered simultaneously. The kitchen receives the order, the guest receives the receipt — without a single click from the staff. If the kitchen printer goes offline, the order remains in the queue and is automatically retried when the printer becomes available.
Result — all four locations
locations under one setup
browser dialogs per shift
receipt print time
printers per terminal (front of house + kitchen)
MaxCode Print Client is now used in logistics, hospitality, retail, and manufacturing — everywhere Odoo generates documents that need to reach a physical printer without delay. The POS use case shows that this is not just a tool for warehouses: it isa complete bridge between Odoo and any printerin the company.
Ready to eliminate dependence on the IoT Box?
Contact us for access or partner pricing. Setup takes less than 10 minutes per workstation.
Request access View pricing