- Home
- Apps
- SaaS Tools
- POS Barcode & Label Printing Studio
Illustrative previewA build-to-order Odoo module that lets you design custom label templates and bulk-print product,
shelf-edge, and weighed-item barcode labels straight from your product list or PO receipts. Built, installed, and supported by
ECOSIRE for Odoo 17, 18, and 19.
What is POS Barcode & Label Printing Studio?
A build-to-order Odoo module that lets you design custom label templates and bulk-print product, shelf-edge, and weighed-item barcode labels straight from your product list or PO receipts. Built, installed, and supported by ECOSIRE for Odoo 17, 18, and 19. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Retailers and grocers live or die by their labels. Odoo core ships a basic "Print Labels" action on product.template that pushes a fixed 2x7 or 4x7 QWeb sheet of name-price-barcode tags, but it runs out of road fast: you cannot brand the layout, you cannot add a shelf-edge or price-tag format, you cannot generate EAN-13 embedded-price barcodes for weighed items, and there is no clean way to fire a batch of the right labels straight off an incoming purchase receipt. Teams end up exporting to spreadsheets, wrestling with third-party label software, or reprinting the whole product list just to relabel one shelf — every one of those is a place where prices drift out of sync with the POS.
POS Barcode & Label Printing Studio is a module we build to close that gap on your catalog and your hardware. At its core is a label.template model (models.Model) that stores reusable layouts — element positions, fonts, which fields to show (list_price, barcode, name, default_code, UoM, currency), and the physical media size — rendered through parameterized QWeb reports so the same template drives a 40x30mm price tag, a 100x50mm shelf-edge strip, or an A4 sheet of die-cut labels. Barcodes are generated server-side (Code128, EAN-13, EAN-8) with proper check-digit computation, and for weighed goods we implement the EAN-13 embedded-price convention (2 prefix + PLU + weight/price payload + check digit) so a scale-printed sticker scans correctly at the register. A compute layer (@api.depends on price and currency) keeps the printed price bound to the same field the POS reads, so a label can never quietly show a stale figure.
Operationally, the module adds a "Print Labels" server action wired into the product.template/product.product list view and, on request, onto the stock.picking receipt flow — select an incoming PO's move lines and print exactly the received quantities in one pass, no manual counting. A wizard lets the operator pick the template, quantity-per-product (or "one per unit received"), and the target printer size before rendering. We support multiple label printers and media sizes by mapping each label.template to a paper format and, where you use dedicated thermal units (Zebra/TSC/Brother), routing through your print server or ESC/POS/ZPL path rather than the browser dialog. Access is locked down with ir.model.access.csv plus record rules so only authorized roles can edit templates or trigger bulk runs, and an optional automated action can queue a relabel batch whenever a price changes. Everything is reachable over Odoo's XML-RPC/JSON-RPC API too, so an external scale, WMS, or scheduled job can request labels programmatically.
Because this is build-to-order, nothing is pre-listed on apps.odoo.com — we scope it to your exact label stock, printer models, barcode conventions, and Odoo edition first. After a short scoping call we confirm the template set, the media sizes, and whether you need the PO-receipt and price-change triggers, then build against your target version (17.0, 18.0, or 19.0) on a staging database. Typical delivery is one working week from confirmed scope. You get the installable source, a UAT pass on staging with a rollback plan, install and configuration on your environment, documentation, a training session, and a post-go-live support window — all delivered and maintained by ECOSIRE. Community and Enterprise are both supported; we flag anything that depends on Enterprise-only stock or barcode features during scoping so there are no surprises.
What you get
- Installable module source code for your confirmed Odoo version (17.0, 18.0, or 19.0), with a clean `__manifest__.py` and pinned dependencies
- Installation and configuration on your environment, including label template setup and printer/media mapping
- Technical documentation: models, QWeb report templates, security rules, and the XML-RPC/JSON-RPC label endpoints
- End-user guide plus a live training session for your labeling and receiving staff
- UAT pass on a staging database with a documented rollback plan before any production change
- Post-go-live support window for fixes and questions after launch
- Git repository handover with full commit history and tagged release
Who this is for
Grocery & supermarket operators
Need EAN-13 embedded-price labels for weighed produce and deli items, plus fast shelf-edge relabeling when prices change — all bound to the same POS price field so scans and receipts never disagree.
Multi-SKU retailers
Label hundreds of products per receiving cycle and want to print exactly the received quantities straight off the PO instead of exporting to spreadsheets or reprinting the whole catalog.
Store & inventory managers
Want branded, consistent price tags and shelf labels across locations, role-locked template editing, and an audit-safe relabel trigger tied to price updates.
Odoo administrators & IT leads
Need a maintainable module with clean ORM code, `ir.model.access.csv` security, QWeb reports, and an XML-RPC/JSON-RPC path so scales or a WMS can request labels programmatically.
How POS Barcode & Label Printing Studio Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Custom label layouts | Reusable `label.template` layouts (price tag, shelf-edge, A4 sheet) via QWeb | Possible, but you design and maintain the QWeb from scratch | A few fixed templates, limited restyling | Hard-coded name-price-barcode sheet, no design control |
| Weighed-item EAN-13 embedded price | Built to the `2`-prefix PLU/weight convention with check digit | Feasible if your dev knows the encoding rules | Rarely covered or sold as an add-on | Not supported |
| Print from PO receipt | Print exact received quantities off `stock.picking` in one pass | Extra scope on top of base labeling | Usually product-list only | Not available |
| Price accuracy | `@api.depends` binds label price to the POS price field | Depends on how carefully it's wired | Reads price but no update trigger | Reads price at print time only |
| Printer & media support | Multiple sizes; ZPL/ESC-POS routing for thermal units | Whatever you budget to build | Often browser-dialog only | Browser print dialog, standard sheets |
| Security & access control | `ir.model.access.csv` + record rules on templates and bulk runs | Must be designed and reviewed by you | Basic or generic access | Inherits generic product access |
| API / automation | XML-RPC/JSON-RPC endpoints + optional price-change trigger | Build the endpoints yourself | Rarely exposed | No dedicated label API |
| Support & handover | Install, training, support window, git repo handover | Tied to your internal team's availability | Ticket-based vendor support only | No vendor; community forums |
Frequently Asked Questions about POS Barcode & Label Printing Studio
How long does delivery take?
Because this is a build-to-order module, we start from a short scoping call to confirm your label stock, printers, barcode conventions, and Odoo edition. Typical delivery is one working week from confirmed scope, including a UAT pass on staging before we touch production.
Is this an existing app I can download from apps.odoo.com?
No. ECOSIRE builds, installs, and supports this module specifically for your catalog and hardware. There is no instant download — you receive the installable source, configured on your environment, after we build against your target version.
How do you handle support and updates after go-live?
Every engagement includes a post-go-live support window for fixes and questions, plus a full git repository handover so your team owns the code. We can also quote ongoing maintenance or a version migration (for example 17.0 to 19.0) as a separate scope when you upgrade Odoo.
Does it work with my thermal label printer?
Yes — we map each label template to a physical media size and, for dedicated thermal units like Zebra, TSC, or Brother, route through your print server or a ZPL/ESC-POS path rather than the browser print dialog. We confirm your exact printer models during scoping.
Can it print embedded-price barcodes for weighed items?
Yes. We implement the EAN-13 embedded-price convention (a `2` prefix, PLU code, and weight/price payload with a computed check digit) so scale-printed or shelf labels scan correctly and ring up the right amount at the POS.
Does it work on both Odoo Community and Enterprise?
Yes, and on Odoo 17.0, 18.0, and 19.0. The core barcode, QWeb, and printing logic runs on Community. If any part of your workflow depends on Enterprise-only stock or barcode features, we flag it during scoping so there are no surprises.
Can external systems trigger label printing?
Yes. Label requests are exposed over Odoo's XML-RPC/JSON-RPC API, so an integrated scale, WMS, or a scheduled automated action can request a batch of labels programmatically without anyone opening the Odoo UI.
Related Modules

POS All in One Report Generator
A made-to-order Odoo Point of Sale reporting engine that turns raw session, order line, and payment data into dynamic, filterable reports. ECOSIRE builds it to your exact KPIs, installs it, and supports it after you request a quotation.

POS Analytic Account
A build-to-order Odoo module that propagates analytic accounts and cost centers onto POS orders and their generated journal entries, so point-of-sale revenue and costs land in the right analytic buckets automatically. Scoped, built, installed, and supported by ECOSIRE.

POS Card Terminal Payment Connector for Odoo
A build-to-order Odoo POS payment connector that pairs physical card terminals (Stripe Terminal, PAX, Ingenico) to your point of sale for tap, chip and contactless capture, with refunds, tips and cashback handled straight from the receipt. ECOSIRE builds, installs and supports it for Odoo 17, 18 and 19.

POS Cashier Management & Shift Control
A build-to-order Odoo POS extension that gives every cashier their own login, shift, and cash-drawer accountability — with blind-close counts, variance reporting, and a tamper-evident audit trail. ECOSIRE builds, installs, and supports it for your Odoo 17, 18, or 19 environment.
POS Barcode & Label Printing Studio
A build-to-order Odoo module that lets you design custom label templates and bulk-print product, shelf-edge, and weighed-item barcode labels straight from your product list or PO receipts. Built, installed, and supported by ECOSIRE for Odoo 17, 18, and 19.
- Reusable `label.template` model storing element positions, visible fields, fonts, and physical media size, rendered through parameterized QWeb reports
- Custom label designs combining price, barcode, product name, `default_code`/internal reference, UoM, and currency symbol
- Server-side barcode generation for Code128, EAN-13, and EAN-8 with correct check-digit computation
- EAN-13 embedded-price barcodes for weighed items (`2`-prefix + PLU + weight/price payload) that scan correctly at the register