Who we are

About IT Horizon

A boutique technology house engineering enterprise systems with the precision of a luxury maison.

Our story
Odoo Partner

Comprehensive Odoo

End-to-end Odoo 20 Enterprise, implemented, customized, integrated and supported by our own senior team.

Become a client
Odoo apps

Every app, configured for the Gulf

Finance, sales, supply chain, HR, marketing and services apps implemented with the local tax, payroll and language rules each country needs.

All Odoo apps
What we do

Beyond ERP

Strategy, product engineering and customer-experience work that turns systems into advantage.

Talk to us
Sectors

Industry depth

Domain fluency across the sectors that define the GCC economy, and the regulations behind them.

Discuss your sector
Learn · grow · succeed

Insights

Real-world ideas, case studies and sessions to help your business work smarter with Odoo.

Browse the blog
Contact usالعربيةBook a consultation
Home/Blog/Odoo 20 · How-to
Odoo 20 · How-to · 7 min read

How to print Zebra labels from Odoo 20: network printing, IoT or PDF

Odoo 20 can send labels in ZPL, the language Zebra printers use, straight to a Zebra printer on your network, with no IoT box. This guide sets that up, explains when an IoT box is still the better route, and covers label sizes, templates and the usual faults.

There are three ways to print Zebra labels from Odoo 20. A Zebra printer on your network can be added in Inventory → Configuration → Manage Printers as a ZPL printer with its IP address, and Odoo then sends labels to it directly from the browser. A printer on USB, or a site with several printers and devices, connects through Odoo’s IoT system. Any printer can also print Odoo’s PDF labels, but those are laid out for A4 label sheets, not for Zebra rolls.

Three routes compared

RouteWhat you needBest forKeep in mind
Network ZPL, new in Odoo 20A Zebra printer on your network with a fixed IP address and its web server onShops and warehouses printing product, lot and shipping labelsThe PC or handheld that prints must be on the printer’s network
IoT box or Windows virtual IoTAn IoT box, or a Windows 10 or 11 PC running Odoo’s virtual IoT, on the printer’s networkUSB printers, sites with many devices, labels printed at manufacturing quality checksOne more device to keep running and updated
PDF from the browserAny printer and its driverOccasional labels on A4 label sheetsOdoo’s PDF labels are sheet layouts, not single labels on a roll

Route 1: a Zebra printer on your network

This is the simplest setup for most sites on Odoo 20. Odoo sends each label from the browser to the web server built into the printer, so there is nothing to install on the PC.

Step 1. Give the printer a fixed IP address

Reserve an address for the printer in your router, so the address stored in Odoo does not change after a power cut or a router restart.

Step 2. Turn on the printer’s web server

Recent Zebra printers ship with their web server switched off, and Odoo needs it. From a Mac or Linux computer on the same network, send this command to the printer, using its own IP address, then restart the printer. Odoo’s documentation gives the Windows PowerShell version of the same command.

echo '! U1 setvar "ip.http.enable" "on"' | nc 192.168.1.50 9100

Step 3. Add the printer in Odoo

Open Inventory → Configuration → Manage Printers and create a printer. Give it a name staff will recognize, such as Receiving ZD421, choose the type ZPL and enter its IP address.

Step 4. Link the reports it prints

In the printer’s Linked Reports field, add the ZPL reports this printer should print: product labels, lot and serial number labels, and shipping labels if you use a carrier connector. The first time a linked report prints, Odoo asks which printer to use and remembers the choice in that browser.

Step 5. Allow local network access in the browser

Recent versions of Chrome and other Chromium browsers ask before a website reaches a device on your local network. Allow it for your Odoo address when asked. If the prompt does not appear, add the address under Settings → Privacy and security → Site settings → Additional permissions → Local network, then reload Odoo.

Step 6. Print a test label

Open a product, click Print Labels and choose a ZPL format. Check the label at the printer: the size, the barcode and the text.

Print labels automatically when an operation is validated

Each operation type can print its labels by itself. Open Inventory → Configuration → Operations Types, choose the operation, for example Receipts, and in the Hardware tab tick what to print on validation:

  • Product Labels, printed as ZPL Labels (name and barcode) or ZPL Labels with price.
  • Lot/SN Labels, printed as ZPL Labels - One per lot/SN or ZPL Labels - One per unit.
  • Carrier Labels from a shipping connector: set the shipping method’s label format to ZPL2, so the carrier returns a label the Zebra printer reads.

A common setup for a distributor in Kuwait: receipts print one lot label per unit received, so every carton carries its lot barcode before it is put away, and pickers scan it later with a Zebra handheld.

Route 2: an IoT box or Windows virtual IoT

Odoo’s IoT system is a small box, or a Windows service, on your network that connects printers, scales and other devices to Odoo. Use it when the Zebra printer is on USB, when one site has many devices, or when labels print from manufacturing quality checks.

  • Connect the IoT box to the same network as the printers, then connect it to your database from the IoT app.
  • Supported printers appear in IoT → Devices, which can take up to two minutes. Zebra printers need no driver: if one was selected on the IoT system, remove it.
  • Link reports to the printer in its Printer Reports tab. For carrier labels on a Zebra printer, set the report type to Text.
  • Never expose the IoT box or the Windows virtual IoT to the internet. They are meant to reach devices on your local network only.

On Odoo 19, printing from Odoo straight to a Zebra printer goes through the IoT system. Network ZPL printers under Manage Printers are new in Odoo 20, one more reason to plan the upgrade with your warehouse in mind.

Route 3: PDF labels

Without either setup, Odoo prints labels as PDF: 2 x 7, 4 x 7 or 4 x 12 per page, with or without the price. These layouts are made for sheets of labels on an office printer. On a Zebra roll they come out at the wrong size, so for Zebra printers choose the ZPL formats.

Label size and the ZPL template

Odoo’s standard ZPL labels are laid out for a 4 x 6 inch label. Shops often use smaller stock, such as 50 x 25 mm shelf labels, and then the template needs adjusting. Odoo ships ZPL labels for products, product packaging, lots and serial numbers, packages, operation types and, with Manufacturing, finished products.

  • Where the code is. With developer mode on, open Settings → Technical → Reporting → Reports, search for ZPL, open the label and its QWeb view; the ZPL is in the Architecture tab.
  • Text cut off. Lines over 55 characters run off the standard label. Move the start position in the ^FT command (^FO on lot and serial labels), or print a shorter name.
  • Barcode too wide or too narrow. The ^BY command sets the bar width; Odoo uses ^BY3 by default.
  • Changes that survive upgrades. Odoo warns that an upgrade can overwrite or break custom ZPL. We put label changes in a small custom module instead of editing the view in the database, so they sit in version control and are checked at each upgrade.

Arabic on Zebra labels

Shelf labels in Kuwait often carry the Arabic product name. Odoo sends its ZPL labels as UTF-8 (the ^CI28 command at the top of the template), but the printer also needs a font that holds Arabic letters and joins them correctly. Print an Arabic product name on your own printer and label stock before you order labels in volume. We test Arabic labels on each printer model before delivery.

When nothing prints

What happensLikely causeWhat to do
Nothing prints on a network printerThe web server is off, the IP address changed, or the PC is on another networkTurn the web server on, reserve the IP address and print from a device on the printer’s network
The browser blocks the printLocal network access is not allowed for the Odoo addressAllow it in the browser’s site settings, then reload Odoo
Blank labels, or nothing from an IoT printerA driver is selected for the Zebra printer, or the printer rejects the ZPLRemove the driver on the IoT system and check the ZPL template
Text runs off the labelThe standard template is made for 4 x 6 inch labelsAdjust the template to your label size
Labels drift down the rollThe printer has not measured the new label stockRun the printer’s media calibration after loading new stock
The wrong printer printsEach browser remembers its own printer choiceOpen /odoo/reset-printers in that browser to clear the choice, then print again

How we set up Zebra printing for Odoo

We supply Zebra label printers in Kuwait with labels and ribbons cut to the sizes your templates use. Before delivery we fix the printer’s IP address, turn on its web server, add it to Odoo with the reports it prints, adjust the ZPL templates for your label sizes and your Arabic and English text, and test with your products on a copy of your database. The setup sits inside Odoo Inventory, so labels print from the same receipts and deliveries your team already uses.

What to do next

  1. List the labels you print today, their sizes, and where they are printed: receiving, packing, the shop or the production line.
  2. Check which Odoo version you run. On Odoo 20, start with a network printer; on Odoo 19, plan an IoT box.
  3. Ask us for a Zebra printer quotation with the labels set up in Odoo, or book a consultation to plan labeling across your sites.
FAQ

Common questions

Not for a Zebra printer on your network. Odoo 20 sends ZPL labels to it directly from the browser, using the printer’s IP address. A USB printer, or a site that also connects scales and other devices, uses Odoo’s IoT system.

Product labels with or without the price, lot and serial number labels, product packaging, packages, operation types and, with Manufacturing, finished products. Shipping connectors can also return carrier labels in ZPL.

Usually a driver is selected for the printer on the IoT system, or the ZPL in the template does not suit the printer. Remove the driver, since Zebra printers need none, and check the template in the label’s QWeb view.

Yes. In the operation type’s Hardware tab, tick Product Labels or Lot/SN Labels under Print on Validation and choose a ZPL format. The labels print when the receipt is validated.

No. The Manage Printers menu with network ZPL printers is new in Odoo 20. On Odoo 19, printing straight to a Zebra printer goes through the IoT system, or labels are printed as PDF.

Need help with your Odoo project?

Tell us what you are working on. A senior consultant will reply with how we would approach it.

Phone
+965 5015 3388
WhatsApp
Message us
Email
[email protected]
Office
Salem Al Mubarak Street, Salmiya, Kuwait
Hours
Sunday to Thursday, 8:00 to 19:00