Stock Scan Supplier GS1 or Datamatrix Code to Fields?


I’m looking at using ERPNext for an incoming goods system, to receipt deliveries and apply an internal lot number to these goods.

Looking for some help or pointers on the following…

The ordering system is external for the time being, so the main way to input goods would be via a manual Stock Entry.

Many of our suppliers use either a GS1 2D code or 2D datamatrix code on their products, EAN and UPC-A are not often used.

These 2D codes contain useful information such as GTIN, manufacturer lot number, and expiry date. Using a barcode scanner to enter this information automatically enter the data would greatly reduce user input errors.

ERPNext only seems to have support for associating an EAN or UPC-A 1D barcodes to an item. I can’t see a way to associate a GTIN number with an Item. Is there a way to add this to the existing Barcode entry for an item, or is it easier to add a custom field for the GTIN information?

Also, would it be possible to scan a GS1 or datamatrix (one major supplier uses just datamatrix to encode Lot Number and Expiry only) and auto-populate the Stock Entry table with this information?

I found a seperate thread on this for ERPNext v13, is this a good starting point for v14?


My experien e has been that not all GTIN codes are created equally. Different vendors in different parts of the world use the supposedly ‘standard’ fields to hold non-standard data.

Best bet would be to create a custom field to hold the scanned data in it’s complete form and then create a custom function to parse the data and populate the proper fields in the Stock Entry.

Your assumption about the ability of erpnext to handle only 1D barcodes is partially correct. Until there can be an agreed upon standard for GTIN fields, it will be impossible to scan a single 2D code and populate multiple doc fields.

Hope this helps…


1 Like

Thanks for the info.

Curious as to the many types of non-standard GTIN you’ve come across, there are 4 as far as I’m aware in the GS1 standard (GTIN-8, GTIN-12, GTIN-13, and GTIN-14).

Do you know where to start with customising the inputs and data parsing? I’m new to ERPNext and python.
I work in a very heavily regulated industry where the GS1 standards are very much adhered to, so hopeful to try and come up with something that can read the information I need to make life a bit easier.

The biggest offenders I have run into were mechanical parts manufactures and medical device manufactures. One used the batch number field to sub-contain an additional 4 fields with a special character separator. The medical device manufactures were transposing two fields and then adding 3 subfields within one of them. The funny thing about them is they used two different GTIN formats. One for shipments of devices from their manufacture site to their own distribution centers, and the other for labeling customer bound shipments.

To be honest, I have not found a single instance where the standard was followed exactly. However, that may also be due to our business model. We help clients do custom barcode work, so I may be only experiencing the special cases. Even with that as a bias condition, there are many such custom GTIN formats out there.

BKM :nerd_face:

Doesn’t sound good, I’ve checked a few of ours and they all seem to follow the GS1 standard…so far.

I’m going to get a Zebra DS4608 scanner, which can be programmed (Label Parse + feature) to scan a GS1 label and input the AIs I need in the right order regardless of the order they appear in the GS1 label, including TAB commands etc. Honeywell also have a similar feature but a bit hazy on if it’s built-in or an add-on.

Hopefully this should help get around all the different GS1 info and order the AIs can be encoded manufacturer to manufacturer.

Scanners that can spit out the separated fields and string together the correct sequence of data and control characters will typically outrun the UI in a browser.

This means that by the time the browser has processed the filling of the first data field, the scanner has already dumped all of the fields in the communications stream.

The result is that only the first field is completed and the cursor is left in the first field as if the “Tab” command never happened.

This is particularly a problem with ERPnext because every field on the screen (in the browser) must send data across the internet to the server and wait for an acknowledgement (hand shaking signal) back before it is ready for the “Tab” character to advance to the next field. The UI cannot buffer all of the data coming in from the scanner and process it in sequence.

Before you spend a ton of money on a special programmable scanner, try using a cheaper 1D scanner and build a barcode with multiple fields and scan it into a data entry form in ERPnext. I am afraid you will be a bit disappointed in how it performs in a browser. I STRONGLY encourage you to test how populating multiple fields from a single scan works in your environment BEFORE you invest heavily into this form of barcode scanning.

This is the reason I suggested creating a field to hold the entire dump from the scanner and a custom script to parse the dump field data into the doc fields you actually want to populate.

Hope this helps…


Thanks for the additional info BKM, some good things to think about.

I already have an old 2D scanner which is fine for EAN but it only reads the numbers of 2D codes and cannot transmit the control characters. My ERPNext install is on a local server, so response time is not too bad.

Price is ~£110 for a 2D scanner with decoding, so not too expensive and it can always be used for other local applications. The main benefit I’m looking at is getting the right info in order, mainly extracting Lot and Expiry, from how it is present in different suppliers’ GS1 labels.