barcode_handler
An invisible field that renders nothing and exists purely to catch barcode scans into a field. Odoo 20 removes it, and barcode handling moves out of the field layer entirely.
September 18, 2026Updated September 18, 20264 min read
| Technical name | barcode_handler |
|---|---|
| Field types | any (undeclared) |
| Views | form |
| Module | barcodes, installed with Inventory and similar apps |
| Used in core | 2 uses in Odoo 19 Community. Zero in Odoo 20, where the widget no longer exists. |
| Versions | Odoo 19.0 |
| No-code setup | No. There is no Studio entry for this widget. |
| Alternatives | field_float_scannable, many2one_barcode, char |
What the barcode_handler widget does
What this means for your team
Working examples
What Odoo 20 does instead
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 19.0 | Verified | Verified against the shipped 19.0 source. |
| Odoo 20.0 | Not available | Removed. Barcode handling moved to a service, with no widget replacement. |
Present and working in Odoo 19, absent in Odoo 20.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| An unexpected text input appears on a form after upgrading to Odoo 20 | The barcode_handler registration no longer exists, so the field renders with its default widget. Remove the field from the view and rework the scan flow against the Odoo 20 barcode service. |
| Scans stopped reaching the record after upgrading | Same cause. The invisible listener is gone. There is no drop-in replacement. Plan the rework rather than searching for a renamed widget. |
| The field is invisible on Odoo 19 and appears to do nothing | Working as designed. Its template is empty and its effect is the value it writes on scan. Check the field's onchange on the Python side; that is where a scan is interpreted. |
Barcode_handler widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
barcode_handler | Catching barcode scans into a field, on Odoo 19 | Renders nothing at all, and does not exist in Odoo 20 |
| field_float_scannable | A visible quantity field that responds to scans | Also removed in Odoo 20 |
| many2one_barcode | Selecting a record by scanning its barcode | Visible picker, and still present in Odoo 20 |
| char | A plain visible code field | No scan listener |
Frequently asked questions
Does barcode_handler still work in Odoo 20?+
What replaced barcode_handler in Odoo 20?+
Why does the barcode_handler field render nothing?+
Barcode scanning in your Odoo 20 upgrade path?
Scanning is where an Odoo 20 upgrade gets expensive, because the mechanism moved out of the field layer and no script will rename it for you. We scope that rework against the 20.0 branch before it becomes a go-live surprise.
Get an upgrade audit