Most retail barcodes do one thing: identify an item. A cashier scans a barcode, the system looks up the item code, and the price and quantity come from the item master. This works well for standard packaged goods where the barcode is purely an identifier.
But many products — particularly in grocery, fresh produce, delicatessen, bakery, pharmaceuticals, and manufacturing — use barcodes that carry more than just an item identifier. These barcodes encode additional data directly in the barcode string itself: the price of a pre-weighed item, the weight or quantity of a product measured at the time of packaging, a serial number for a regulated product, or a batch number for traceability. A single scan is meant to convey all of this information at once.
Without a mechanism to interpret this embedded data, the POS treats these barcodes as standard identifiers and ignores everything except the item lookup. Cashiers then have to manually enter the price or weight, which is slow, error-prone, and inconsistent. In high-volume environments like a deli counter or a busy produce section, this friction adds up quickly.
Barcode Masking in iVendNext POS solves this problem by giving retail managers the tools to define exactly how complex barcodes should be decoded — without any developer involvement.
Barcode Masking is a pre-processing layer that sits in front of iVendNext POS's existing barcode resolution engine.
If the scanned barcode does not match any configured mask, it passes straight through to the existing barcode resolution flow without any change. The masking layer is completely transparent to the cashier — scanning a masked barcode looks and feels identical to scanning a standard barcode. The only difference is that the cart line populates with the embedded price, quantity, or serial number automatically, rather than requiring manual entry.
This design means that barcode masking can be introduced incrementally. A store can configure masks for its complex barcode formats while leaving all other scanning behaviour exactly as it was.
The mechanism that determines whether a barcode should be processed by the masking engine is the start sentinel — a two-character prefix at the beginning of the barcode string.

This two-character sentinel approach is both efficient and flexible. The lookup is fast — checking two characters against a list of active sentinels adds negligible processing time. It is also flexible because the sentinel can be any two characters, which means masks can be designed to match the specific barcode formats used by different suppliers, product categories, or internal labelling systems.

iVendNext POS supports two types of barcode mask, each suited to a different kind of barcode format.
Fixed-Length masks are used when the barcode has a predictable, unchanging structure. Every segment occupies the same number of characters in every barcode of that type. For example, an item barcode might always occupy characters 3 through 12, the price might always occupy characters 13 through 17, and the quantity might always occupy characters 18 through 20. The mask definition specifies the exact character length of each segment, and the parser extracts each segment positionally.

Delimiter-based masks are used when the barcode's segments are separated by a specific character rather than having fixed positions. Different segments may vary in length from one barcode to the next, but a consistent separator — a semicolon, a pipe character, or any single character — divides them. The mask definition specifies the delimiter character and the order of segments. The parser splits the barcode string by the delimiter and maps each resulting token to its configured segment in sequence.

Barcode masks can extract six types of data from a scanned barcode, corresponding to the six segment value types available in the mask configuration.
Item Barcode — the segment contains the item's barcode value, which is passed to the existing barcode resolution engine to look up the item.
Item Code — the segment contains the item's internal code directly, bypassing the barcode resolution lookup and going straight to the item master.
Price — the segment contains the item's selling price, encoded as an integer. A scale factor converts the raw integer to the actual price. For example, if the barcode encodes price in cents, a factor of 100 converts 0250 to 2.50.
Quantity — the segment contains the item's quantity or weight. A scale factor handles decimal precision. For weighed items, a factor of 1000 converts 05000 to 5.000 kilograms.
Serial or Batch — the segment contains a serial number or batch number, which is pre-populated on the transaction line for traceability.
Skip Characters — the segment contains characters that carry no useful data — check digits, padding, or filler — and should be discarded during parsing.
Image suggestion 2: Table or annotated barcode diagram showing a sample barcode string broken into labelled segments: sentinel (2 chars), item barcode (10 chars), price (5 chars), quantity (3 chars), with the parsed values shown below each segment — e.g., sentinel "99", item barcode "1234567890", price "00250" → $2.50, quantity "003" → 3 units.
For retail formats that handle complex barcodes, masking is not a nice-to-have — it is an operational necessity. Without it, cashiers scanning pre-weighed produce items must manually enter the price for every item. In a busy grocery checkout, this adds several seconds per item and introduces pricing errors. A produce item labelled at $3.47 per kg and pre-weighed at 0.752 kg requires the cashier to read the price off the label and enter it manually. With barcode masking, a single scan captures the item identity, the weight, and the price all at once.

The result is faster checkouts, fewer errors, and cleaner transactional data — and all of it configured by the retail manager in iVendNext Desk, without requiring any development work.