Direct printing is coming to Odoo 20: what it changes for your day
Odoo 20 looks set to add native direct printing through a local proxy, killing the download-then-print loop for invoices and delivery slips.
The loop is familiar. Click Print on a delivery slip. The browser downloads a PDF. You open it. Ctrl+P. Pick the right printer from a list of twelve. Click Print again. Walk to the warehouse printer to grab the sheet. Repeat forty times a shift.
A pull request against Odoo’s main branch wants to kill that loop. If it lands in Odoo 20, the Print button does what the button says: paper comes out of the printer you picked, one click.
What’s actually changing
Every PDF report in Odoo today goes through your browser. That’s fine for the occasional quote you want to review before printing. It’s a small disaster for a receiving team processing two hundred delivery slips a shift.
The new approach adds a small helper that runs somewhere on your office network — a “local proxy” in the PR’s language. Odoo sends the report to that helper, and the helper sends it straight to the physical printer. Nothing leaves your LAN. Your browser is no longer in the path.
From your seat, three things change:
- The Print button prints. No PDF download, no preview tab, no second dialog.
- You can set a default printer per report type. Delivery slips go to the warehouse laser. Invoices go to the office printer. Picking lists go to the label printer.
- A printer picker appears for the reports where the default doesn’t fit — one click away, not buried behind the OS dialog.
What IT does once
Someone with admin rights will install the helper on a machine that stays on and sits on the same network as the printers. They point it at the printers it should talk to, and tell Odoo where to find it. That’s the rough shape of it — the exact install steps will be in the Odoo 20 docs when it ships.
After that, the mapping of “this report → this printer” lives inside Odoo, which means the accountant can change where invoices print without filing a ticket.
Who feels it first
Three groups:
- Warehouse. Delivery slips, picking lists, transfer labels. The volume here is already the highest, and the browser-PDF dance is already the worst.
- Accounting. Month-end invoice batches. The “print selected” flow in list view finally matches what you’d expect.
- POS back office. Reprints of receipts, end-of-day reports, daily summaries.
Sales and project teams will notice it too, but they don’t print enough for it to change their day much. For warehouse and accounting, this is the difference between fighting the tool and using it.
The honest caveats
It’s a pull request, not a shipped feature. Odoo 20 hasn’t been released. The roadmap has slipped before. If you’re planning a deployment for next month and printing is a deal-breaker, don’t bet on this — the community module base_report_to_printer still works, and the IoT Box is the right answer if you need ESC/POS and label printers today.
The IoT Box doesn’t disappear either. It still matters for direct USB printing at a POS terminal, barcode scanners, scales, and payment terminals. The new proxy is aimed at network-attached office and warehouse printers — the kind that already have an IP address.
And if you’ve already built a workflow around a third-party print module, think before migrating. Native will probably win on polish and long-term maintenance, but “probably” is doing work in that sentence until the code is in a tagged release.
Worth watching, not waiting on
The feature is the kind of small thing that isn’t small at all. Printing has been the unglamorous friction point in Odoo for years — every consultant has their preferred workaround, every warehouse has its own Python daemon held together with duct tape. Having it in the box would be genuinely good news.
Just don’t tell your warehouse lead it’s coming next week. Tell them it’s on the way, and keep an eye on the Odoo 20 release notes when they land.