Odoo Help

3 Answers

Frédéric Van Der Essen (fva)

--Frédéric Van Der Essen (fva)--

| 6 7 5
--Frédéric Van Der Essen (fva)--

Frédéric worked on different core projects at Odoo since 2012. He is a core developer of the Odoo R&D department. He worked on several projects including the design of the current website and the UI of the open chatter communication tool.

Frédéric is also the owner of the PosBox project and the latest versions of the point of sale frontend.

Frédéric Van Der Essen (fva)
1/31/13, 9:23 AM

The Point of Sale only supports the EAN13 Barcode Encoding. Wich means that products are identified by a 13 digit number. These numbers can be used to encode much more than the ID of a product. Here is how it works.


The first two (from the left) or three numbers of the barcode are used to tell the point of sale what kind of data / action is associated with the barcode. Any barcode not matching any prefix is assumed to be a product identifiying barcode.



The barcodes starting by 21 and with the following format : 21 XXXXX WWWWW C can be used to encode a product with a specific weight or quantity. The quantity is encoded as a 5 digit number with three decimals in the WWWWW part of the barcode. For the product to be identified it must have an EAN13 barcode matching the 21 XXXXX part of the barcode used to encode weight, the rest is ignored. For your information, C is the checksum used to prevent decoding errors and depends of the 12 previous digits.


The barcodes starting by 23 and with the following format : 23 XXXXX PPPPP C can be used to encode a product with a specific price. It works exactly the same as the Weight barcodes except PPPPP encodes the prices as a 5 digit number with two decimals.


The barcodes starting by 22 and with the following format : 22 XXXXX DDDDD C can be used to encode a percentage discount that will be applied on the previously ordered product, if the identified product match the product encoded in the discount barcode. The discount is encoded as a 5 digit number with two decimals, and should be between 0.00 and 100.00. Discount barcodes are activated by default. If you use the Point of Sale in self checkout mode, a client with this knowledge could forge discount barcodes and cheat the system. So you may want to disable them in those cases.


Barcodes starting with 041 will log any Employee with a matching EAN as the current cashier for the transaction. Cashier badges can also be used in Self-Checkout mode to go back to regular mode and solve any issues.


Barcodes starting with 042 will log any user with a matching EAN as the current Client for the transaction.

Customizing Actions

If this doesn't work for you and you want to change the prefixes, or disable some kind of barcodes, you will have to change the javascript code of the point of sale by extending and overriding the parse_ean() method of the point_of_sale.BarcodeReader class located in addons/point_of_sale/static/src/js/devices.js

I advise you to do this in a new module.

Umashankar Subramani
3/25/15, 1:11 AM

Is there any way to use customized barcode in pos.....

2/18/16, 12:55 AM

Where and how does this barcodes impact in Odoo POS and Core???

3/11/14, 10:18 PM

My doubt is: How do set an EAN13 with prefix 23 on the product form if require validation? I tried "23 0000 1" but no sucess.

Ask a Question
Keep Informed
4 follower(s)
About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now