Skip to Content

From 45 Seconds to 3 Seconds: Direct Odoo Printing Without IoT Box

April 8, 2026 by
Marko Čalić
93%
Faster Printing
0
Additional Hardware
<10 min
Setup per Computer
3 Types
Supported Printers (PDF · ZPL · ESC/POS)

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."

Warehouse Operations Manager, logistics company

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:

  1. 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.
  2. 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.

MaxCode Print Client — desktop aplikacija, kartica Veze s upravljanjem profilima, URL-om Odooa, bazom podataka i korisničkim podacima
MaxCode Print Client desktop application — easy connection setup with support for multiple profiles. Works on Windows and Linux.

Setup: less than 10 minutes per computer

Installation is intentionally simple — no configuration on the server side, no port forwarding, no driver installation.

  1. Install the modulemc-direct-printon your Odoo instance
  2. Download and runMaxCode Print Clienton the computer
  3. Enter your Odoo URL, database name, and user credentials
  4. ClickStart— the application connects, discovers printers, and registers them in Odoo
  5. 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.

Odoo Print Direct modul — prikaz host računala s registriranim radnim stanicama i statusom online/offline
The Odoo module displays all registered host computers with their current status (online/offline) and a list of connected printers.

What is printed — and in what format

Format Typical application Printer type
PDFInvoices, delivery notes, picking lists, purchase ordersAny PDF printer
ZPLShipping labels, product labels, barcodesZebra and ZPL-compatible printers
ESC/POSPOS receipts, kitchen orders, cashier slipsThermal printers for receipts
Image (PNG/JPG)QR codes, product images, custom labelsThermal 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:

✓ Delivery note — after validation
Trigger:Validation of stock picking
Document:Delivery note PDF
Printer:Warehouse printer
Result:Document in the hands of the employee while it is still going to the shelf
✓ POS receipt — on order confirmation
Trigger:POS order confirmation
Document:Customer receipt (ESC/POS)
Printer:Thermal printer at the checkout
Result:Receipt printed before the customer reaches the checkout
✓ Receipt — on posting
Okidač: Knjiženje računa (account move)
Izvještaj: Račun PDF
Printer: Uredski printer
Rezultat: Račun ispisan i spreman za slanje ili potpis
✓ Attachments — all files automatically
Trigger:Any Odoo event
Source:Attachments on the record (PDF, image, ZPL files)
Printer:Any registered printer
Result:Specifications, certificates, and labels are printed automatically
✓ All Odoo reports — any trigger
Okidač: Potpuno konfigurabilno
Source: Bilo koji Odoo izvještaj (standardni ili prilagođeni QWeb)
Printer: Bilo koji registrirani printer
Rezultat: Narudžbenice, radni nalozi, dostavnice — sve automatizirano
✓ Shipping labels (ZPL) — on shipping
Okidač: Validacija isporuke
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

FeatureDetail
ConnectionWebSocket (Odoo bus.bus) — real-time, no periodic refresh
Automatic reconnectionExponential backoff, automatic session renewal
Multiple profilesManaging connections to multiple Odoo databases from a single application
Launchingsystemd service (Linux) or Startup folder (Windows) — automatically on startup
System trayHides in the tray — no visible window during operation
Password storageOS keychain (Linux Secret Service / Windows Credential Manager)
Simultaneous printingUp to 10 parallel print jobs
DiagnosticsOne-click diagnostics copy, rotating log, log viewer
Operating systemsLinux (AppImage) · Windows (.exe)
Odoo versionsOdoo 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."

Operations manager, e-commerce order fulfillment center

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."

Operations Director, hospitality group

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:

✓ Rule 1 — Guest Receipt
Trigger: POS order confirmation
Document: Receipt (PDF/ESC-POS)
Printer: Thermal printer at the front of house
Copies: 1
✓ Rule 2 — Kitchen Order
Trigger: POS order confirmation
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

4

locations under one setup

0

browser dialogs per shift

<2s

receipt print time

2

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