# Direct Print compared with the alternatives

*Checked on 2026-10-15. Prices are the Odoo Apps Store's prices in euros on
that day (visitors outside the euro area see them converted); features are
as each vendor's own public page describes them. If something here is out of
date, write to support@bambooforge.dev and we will correct it.*

## At a glance

|  | BambooForge Direct Print | OCA base_report_to_printer (free) | Odoo itself | VentorTech Direct Print PRO |
|---|---|---|---|---|
| Price | EUR 129, once per Odoo series; POS receipts are an add-on at EUR 49, once per Odoo series | Free (AGPL-3) | IoT is Enterprise, and "An IoT box subscription is required for production use of IoT systems"; Epson ePOS printing in the POS and, on 20.0, the `printer` module are in Community | EUR 99, once per series, plus a print subscription: "Subscriptions start from just a few euros per month" (no figure on the listing); 3 months / 15,000 documents free after purchase |
| Odoo series | 16.0, 17.0, 18.0, 19.0, 20.0 | 16.0 to 19.0 | IoT 16.0 to 20.0; Epson ePOS in the POS 16.0 to 20.0; `printer` from 20.0 | 10.0 to 20.0 |
| Hosting | Odoo.sh or your own server | Odoo.sh or your own server | Odoo Online, Odoo.sh or your own server | Odoo.sh or your own server |
| How a document reaches the printer | From the Odoo server: IPP (port 631) to network printers, CUPS queues and AirPrint devices, raw TCP (port 9100) to label and receipt printers; a USB printer through QZ Tray on its PC | 16.0 to 18.0: CUPS on the Odoo server; 19.0: a CUPS, QZ Tray or websocket backend, the last sending jobs over the Odoo bus to an agent on the printer's machine | Enterprise: an IoT box, or Windows virtual IoT on Windows 10 or 11. Community: the POS prints to Epson ePOS printers by IP; on 20.0 the `printer` module has the browser send ZPL or ePOS-Print to the printer's IP | Through VentorTech's cloud print service to its print client on a PC; Odoo need not be on the printers' network |
| Printers and formats | PDF to document printers, ZPL or raw to label printers (Zebra, TSC, Godex, Bixolon), ESC/POS to receipt printers; a PDF goes only to a document printer, ZPL only to a label printer; a test page per printer | CUPS printers, with tray selection; ZPL II labels through `printer_zpl2` | IoT: devices such as POS receipt printers and scales. `printer` (20.0): ZPL from text reports named "zpl", and PDF to Epson ePOS as a 576 px thermal image | Any printer, USB, network, Wi-Fi or Bluetooth; PDF or ZPL |
| Which printer, which report | Per report: open in the browser, send to the printer, or both; the report's printer, else the user's own, else the company default; copies; `report.bf_direct_print()` for your own buttons | Per user, per report, or per user and report | `printer` (20.0): printers linked to reports | Rules by user, document type, company or workstation; print action buttons |
| Printing without a click | Auto-print rules when a record is created or a field takes a value, stored computed fields included; a queue that retries after 1, 5, 15 and 60 minutes, keeps the bytes sent and offers Print again | `printing_auto_base`, "automatic printing of a report or attachments", on 18.0 only | Not described | 20+ automated print scenarios; shipping labels; connected scales |
| POS receipts | The POS Receipts add-on: the server prints the ESC/POS receipt when an order is paid, 58 or 80 mm, to a network, CUPS or QZ Tray printer; a printer that is down never blocks a sale | Not described | Community: Epson ePOS printers by IP with no IoT box (on 20.0: receipt or preparation use, 80 or 58 mm, or Zebra label paper); Enterprise: through the IoT box (`pos_iot`) | An add-on; its price is not on this listing |
| Left out, as each page says | Printing to a printer the server cannot reach: one with no network port goes through QZ Tray on its PC, "and only while an Odoo tab is open there"; converting documents; POS receipts without the add-on | `printer_zpl2` "does not provide a GUI on its own" | Windows virtual IoT does not support MRP devices | Not listed |
| Needs | `base`, `web` and `mail`; QZ Tray (free) only for a USB printer | CUPS and `pycups` on 16.0 to 18.0; on 19.0, what the chosen backend needs (`pycups`, `pyOpenSSL` or `odoo-print-client`) | For IoT: an IoT box or a Windows PC, and the IoT box subscription | Inventory, Invoicing, Purchase and Discuss; the print client on a PC |

## Choose which, and when

- **Choose OCA's base_report_to_printer** if you run 16.0 to 19.0 with a
  CUPS server next to Odoo and want AGPL-3 code at no licence cost; on 19.0
  you can pick a CUPS, QZ Tray or websocket-agent backend. Its maturity is
  marked Beta, its ZPL module is "meant to be used as a base for module
  development", and it has no build for 20.0 today.
- **Choose Odoo's IoT** if you are on Enterprise and want the devices Odoo
  itself supports, scales and POS receipt printers included, through an IoT
  box or Windows virtual IoT, with the IoT box subscription Odoo requires
  for production use.
- **Choose Odoo's own Community printing** if POS receipts on Epson ePOS
  printers are what you need (16.0 to 20.0), or if, on 20.0, Zebra (ZPL)
  and Epson ePOS printers on your network, driven from the browser, are
  enough.
- **Choose VentorTech Direct Print PRO** if Odoo cannot reach your
  printers (Odoo in the cloud, printers on other sites) and a cloud print
  subscription with a client on a PC suits you; it also brings 20+ ready
  print scenarios, connected scales and shipping labels, on series back to
  10.0.
- **Choose ours** if the Odoo server can reach your printers (IPP, CUPS,
  AirPrint or raw port 9100) and documents should stay on your network, and
  you want auto-print rules, report routing and a queue that retries, on
  any of 16.0 to 20.0, for a one-time price - and a USB printer that prints
  only while an Odoo tab is open on its PC is acceptable. POS receipts need
  the add-on.

## Sources

Read on 2026-10-15.

- Our manual: https://docs.bambooforge.dev/bambooforge_direct_print/
- OCA report-print-send: https://github.com/OCA/report-print-send (branches
  7.0 to 20.0; the 20.0 branch holds no module yet), the READMEs at
  https://github.com/OCA/report-print-send/blob/16.0/base_report_to_printer/README.rst,
  https://github.com/OCA/report-print-send/blob/19.0/base_report_to_printer/README.rst,
  https://github.com/OCA/report-print-send/blob/19.0/base_report_to_printer_cups/README.rst,
  https://github.com/OCA/report-print-send/blob/19.0/base_report_to_printer_qztray/README.rst,
  https://github.com/OCA/report-print-send/blob/19.0/base_report_to_printer_websocket/README.rst
  and
  https://github.com/OCA/report-print-send/blob/19.0/printer_zpl2/README.rst,
  and https://github.com/OCA/report-print-send/tree/18.0/printing_auto_base
- Odoo's source code: https://github.com/odoo/odoo (branches 16.0 to 20.0)
- Odoo's documentation:
  https://www.odoo.com/documentation/20.0/applications/general/iot.html,
  https://www.odoo.com/documentation/20.0/applications/general/iot/windows_iot.html
  and
  https://www.odoo.com/documentation/16.0/applications/general/iot/config/windows_iot.html
- Odoo's plans: https://www.odoo.com/pricing-plan
- VentorTech: https://apps.odoo.com/apps/modules/20.0/printnode_base
