Typing product names into a transfer is slow, and it fails in predictable ways: the wrong variant gets picked, a lot number loses a character, a quantity is transposed. Barcode scanning removes most of that friction. In Odoo, scanning is not a separate system bolted onto Inventory — it is a different interface to the same receipts, deliveries, internal transfers and counts, driven in real time from the warehouse floor. Set it up properly and a scan does three things at once: it identifies the item, it finds the right operation, and it records the move where the work actually happens.
This guide walks through a complete setup: enabling the app, choosing a nomenclature, assigning barcodes, choosing hardware, and processing receipts, deliveries and counts by scanning.
What the Barcode app actually does
The Barcode app processes transfers in real time using a barcode scanner or the Odoo mobile app. Instead of opening a picking on a desktop, validating it later, and hoping the paper notes match what was moved, staff process the operation as it happens. Odoo's documentation puts the benefit plainly: real-time processing helps ensure barcodes are accurately assigned to the correct products, packages, packagings, transfers and locations, reducing errors and keeping inventory data in sync.
Almost anything in the warehouse can carry a barcode that Odoo understands:
- Products and variants — one scan adds one unit of that exact variant to the current operation.
- Product packaging — scanning a 6-pack or a case adds the packaging quantity, not a single unit.
- Packages — scanning a package such as
PACK000003processes everything inside it at once. - Transfers and operation types — scanning a transfer barcode opens that operation; scanning an operation-type barcode jumps to that work queue.
- Locations — scanning a source or destination location barcode sets where stock comes from or goes to, without typing a location name.
- Lots and serial numbers — scanning assigns traceability to the move line at the moment of handling.
- Commands — printed command barcodes trigger actions such as validate, so staff rarely need to touch a mouse.
Step 1: Enable the Barcode app
There is no separate module hunt. Go to Inventory → Configuration → Settings, scroll to the Barcode section, and tick Barcode Scanner. Click Save. The page refreshes and reveals the Barcode Nomenclature setting underneath, along with a Configure Product Barcodes link and buttons to print barcode commands, operation types and a demo sheet.
That single checkbox installs the dedicated Barcode interface. From then on, staff open the Barcode app to a scanner screen, choose Operations, and pick a queue such as Receipts or Delivery Orders — or simply scan a transfer barcode to go straight to it.
Step 2: Choose a nomenclature — Default or GS1
A nomenclature is the rulebook Odoo uses to interpret what a scan means. The same string of digits can be a product code, a quantity, or a lot number depending on the rules, so this choice shapes everything downstream. Odoo offers two built-in options.
Default Nomenclature
The Default Nomenclature covers the barcode actions using UPC and EAN formats, and by default Odoo automatically handles UPC/EAN conversion — important because a 12-digit UPC-A and a 13-digit EAN-13 for the same product differ only by a leading zero, and without conversion they look like two different products. Choose Default when your barcodes are ordinary retail UPC/EAN codes or simple internal codes you generate yourself, and when a barcode identifies one thing only: this product.
Default GS1 Nomenclature
GS1 barcodes encode several pieces of information in one symbol, structured by Application Identifiers (AIs). With the GS1 nomenclature, Odoo can scan a sealed box and identify the Global Trade Item Number (GTIN), the lot number, quantity information and more from a single scan. The core patterns are:
- AI (01) — GTIN, a 14-digit product identifier, matched to the Barcode field on the product form.
- AI (30) — variable count of items, up to 8 digits, applied to the quantity on the transfer.
- AI (10) — batch or lot number, applied to the lot on the detailed operations line.
One limit is worth stating clearly, because it surprises people: Odoo does not create GS1 barcodes. Businesses must purchase a unique GTIN from GS1, then combine it with the supply-chain information GS1 provides. Choose GS1 when suppliers already ship GS1-labelled cases, when you receive sealed boxes with lot and quantity encoded, or when trading partners require it. Choose Default for everything else — you can still scan lots and serials as separate barcodes.
Step 3: Assign barcodes to products, packaging and locations
Start with products. On each product form, fill the Barcode field by scanning the physical label — scanning avoids transcription errors in the very data meant to prevent them. For bulk work, use Configure Product Barcodes from Inventory settings, which lists products with their names, references and barcodes for fast inline editing.
Follow three discipline rules:
- One barcode, one variant. If size or colour matters operationally, each variant needs its own barcode. A barcode on the template that several variants share cannot tell them apart at scan time.
- No duplicates. A barcode that matches two products forces a choice at the worst possible moment — mid-receipt, scanner in hand.
- Packaging gets its own barcode. Define barcodes on product packaging so scanning a case adds the case quantity. In the receipts flow, for example, a soda can can be received one unit at a time by scanning the single-can barcode, or six at a time by scanning the 6-pack packaging barcode.
Next, label locations. With Storage Locations enabled, put a barcode on each location and print location sheets from settings — scanning a bin is far more reliable than selecting it from a dropdown in an aisle.
Finally, print the barcode commands and operation types sheet and the demo sheet. Laminate the command sheet at each workstation, and use the demo sheet — sample product and command barcodes — to rehearse the whole flow without touching real stock.
Step 4: Choose hardware Odoo can hear
Odoo supports most USB and Bluetooth scanners because they all emulate a keyboard: the scanner “types” the barcode very fast and finishes with a suffix key. That simple fact explains nearly every hardware rule:
- Keyboard layout must match. The scanner and the computer must agree on the keyboard layout, or characters — especially in longer codes — arrive scrambled. Verify compatibility for your layout against Odoo's compatible-hardware documentation before buying in volume.
- Set the suffix. The scanner must send a carriage return after the code — in scanner manuals this is often a configuration barcode labelled
CR suffix ONorApply Enter for suffix. Without it, Odoo sees typed text but no completed scan. - USB scanners suit fixed workstations such as a receiving bench. Bluetooth scanners pair with a phone or tablet for mobility. Mobile computers combine scanner and screen in one rugged device running the Odoo mobile app.
Mobile computers need device-specific setup so their scan engine delivers keystroke events rather than injecting text. On Zebra devices, use DataWedge with your own profile (not the supplied DWDemo profile), associate the Odoo Mobile and Chrome apps, enable keystroke output, and ensure Send Characters as Events is checked — Odoo cannot recognise scans without it. On Honeywell devices, change Wedge Method from Standard to Keyboard in the scanner's Data Processing Settings. On Datalogic Android devices, enable the keyboard wedge and change its input mode from Text injection to Key pressure. Always finish with a test scan in the real app.
Step 5: Run the core workflows by scanning
Receipts
Open the Barcode app, tap Operations → Receipts, and open the receipt — or scan its barcode. Scan each product, package or packaging; each scan increments the received quantity, and the +# button fills the full ordered quantity. Use the pencil icon to edit quantities, lot or serial details, packages and destination location, which defaults to WH/Stock. When everything is scanned, tap Validate. If you scan a product belonging to a different open receipt from the same vendor, Odoo offers to batch the receipts together — useful when two purchase orders arrive on the same truck.
Deliveries
Deliveries mirror receipts. From Operations → Delivery Orders, open the delivery, scan the source location first, then scan each product or package as it is picked. Edit a line with the pencil icon to adjust quantity or pick from another location, then Validate.
Internal transfers and inventory counts
The same pattern — open by scanning, scan source, scan items, scan destination, validate — covers internal transfers and inventory counts. For lot and serial products, the operation type's Barcode tab can make lot/serial scanning mandatory, so a required lot can only be entered by scanning it, or optional, allowing manual typing when a label is damaged.
Rollout checklist and common pitfalls
- Pilot on the demo sheet first, then one operation type, then the floor. Never debut scanning during your busiest receipt of the month.
- Duplicates and missing barcodes are the top data pitfall. Run the Configure Product Barcodes list before go-live and clear both.
Done in this order, barcode scanning becomes how the warehouse works: fewer keystrokes, fewer wrong variants, and stock recorded when boxes move.
Further reading
- Process receipts and deliveries with barcodes — Odoo documentation
- GS1 barcode usage — Odoo documentation
- Barcode scanner setup — Odoo documentation
