# Validate batches and expiry dates with GS1 barcodes in WMS Mobile
URL: https://support.starshipit.com/articles/14700000000055-validate-batches-and-expiry-dates-with-gs1-barcodes-in-wms-mobile
Canonical: https://support.starshipit.com/articles/14700000000055-validate-batches-and-expiry-dates-with-gs1-barcodes-in-wms-mobile
Markdown: https://support.starshipit.com/articles/14700000000055-validate-batches-and-expiry-dates-with-gs1-barcodes-in-wms-mobile.md
Updated: 2026-08-03

> For the complete documentation index, see [llms.txt](https://support.starshipit.com/llms.txt).

> Use GS1 barcodes to confirm products and validate batch, serial and expiry details against allocated stock in WMS Mobile.

Use GS1 barcodes in WMS Mobile to confirm the product and check tracking details against the stock allocated for picking or packing.

## Before you begin

Make sure:

* The WMS product uses the required **Batch** or **Serial** tracking type. See [Configure WMS products and inventory](/articles/14700000000006-configure-wms-products-and-inventory).
* The GS1 Global Trade Item Number (GTIN) in application identifier (AI) `01` is saved as the product's **Barcode** in WMS.
* Batch-tracked stock has been received with the correct batch or lot number and, when required, an expiry date.
* Serial-tracked stock has been received with its individual serial numbers.
* The order has been released so WMS has allocated the required stock, including its batch, serial or expiry details.
* Barcode scanning is available in the worker's WMS interface policy and WMS Mobile is set to the correct camera or physical scanner mode.
* Your scanner sends the complete GS1 payload. For raw element strings, it must preserve the FNC1 group separator between a variable-length value, such as AI `10`, and the next AI. A physical scanner should also send Enter to submit the value.

Test the scanner with a known label before using it for live orders. The WMS parser also recognises parenthesised AIs, such as `(01)09312345678907(10)LOT123(17)260430`.

## Understand what WMS Mobile validates

WMS Mobile processes a GS1 product scan in this order:

1. It uses the product identifier, normally the GTIN in AI `01`, to resolve the WMS product.
2. It reads any supported tracking values from the full scan.
3. It compares batch, expiry or serial values supplied by the scan with the selected WMS allocation.
4. It accepts the scan when the product and supplied tracking values match. It rejects a supplied value that conflicts with the allocation.

Batch and expiry comparisons are case-insensitive and expiry is compared by calendar date.

:::important
If the GS1 scan omits the batch or expiry, that omission alone does not reject the product. WMS Mobile only rejects these details when the scan supplies a value that does not match the selected allocation.
:::

Both AI `15` (best-before date) and AI `17` (expiration date) are treated as the WMS allocation expiry. If a barcode contains both, AI `17` takes precedence.

When AI `21` is present, WMS Mobile uses it for exact serial matching. A supplied serial that does not match an allocated serial is rejected instead of falling back to another unit with the same SKU. If AI `21` is omitted, the existing WMS product and serial scan rules continue to apply.

## Use GS1 scans in each workflow

| WMS Mobile workflow | How GS1 validation applies |
| --- | --- |
| **Standard picking** | Scan the GS1 product barcode at the product confirmation step. WMS compares any supplied batch or expiry with the selected allocation before increasing the picked quantity. |
| **Tote picking** | Scan the GS1 product barcode for the selected source allocation. WMS validates supplied tracking details before accepting the item; tote assignment and tote confirmation remain separate scans. |
| **Packing** | In a single-order mobile pack job, scan the GS1 product barcode while selecting or gathering an allocated item. WMS applies the same product, batch, expiry and serial checks before increasing the gathered quantity. |

This validation confirms that the labelled stock matches the WMS allocation. It does not change the allocation or replace receiving the tracking details into WMS.

## Check supported GS1 application identifiers

The WMS GS1 parser recognises these application identifiers. Only the values described as validation inputs affect the selected pick or pack allocation.

| AI | Value | WMS Mobile behaviour |
| --- | --- | --- |
| `00` | Serial Shipping Container Code (SSCC) | Recognised as an identifier. It does not validate batch, expiry or serial tracking. |
| `01` | GTIN | Resolves the WMS product through its barcode mapping. |
| `10` | Batch or lot number | Compared with the allocation batch when both values are present. |
| `11` | Production date | Recognised by the parser but not compared with the allocation. |
| `15` | Best-before date | Used as the WMS allocation expiry when AI `17` is absent. |
| `17` | Expiration date | Used as the WMS allocation expiry and takes precedence over AI `15`. |
| `21` | Serial number | Used for exact serial matching when present. |
| `30` | Variable count | Recognised by the parser but does not set the picked or packed quantity. Each accepted scan follows the normal WMS Mobile quantity rules. |

## Verify the validation

Use a controlled test order with a batch-tracked line quantity of at least two so the first accepted scan does not complete the line.

1. Release the order and check the batch and expiry allocated in WMS.
2. Open the standard pick, tote pick or single-order pack job in WMS Mobile.
3. Scan a GS1 label whose GTIN and supplied tracking values match the allocation. For tote picking, scan the assigned tote to confirm placement. Confirm the app accepts the item and updates the quantity.
4. Scan a label for the same product with a different batch or expiry. Confirm WMS Mobile shows **Scan Rejected** and does not update the quantity.
5. Scan a valid product label that omits batch or expiry. For tote picking, scan the assigned tote again. Confirm the omission alone does not reject the scan and the quantity updates.

Repeat the check in each mobile workflow your warehouse uses before rolling the labels out broadly.

## Troubleshoot GS1 scans

| Problem | What to check |
| --- | --- |
| WMS Mobile reports the wrong product or cannot find it | Confirm the complete AI `01` GTIN is saved in the WMS product's **Barcode** field. Check that the scanner sends the full value without changing digits. |
| A matching physical label is rejected for batch or expiry | Compare the label with the batch and expiry on the selected allocation. Use the allocated stock or correct the WMS stock and allocation before continuing. |
| Tracking values are ignored or combined into one value | Check the scanner output. Preserve the FNC1 group separator after variable-length AIs such as AI `10` when another AI follows. |
| The wrong serial is rejected even though the GTIN matches | AI `21` identifies an individual serialised unit. Use the serial shown on the selected allocation. |
| GS1 validation works in picking but not in the pack job you opened | WMS Mobile supports single-order pack jobs. Complete batch packing in WMS web. |

## Related articles

* [Pick orders in WMS Mobile](/articles/14700000000025-mobile-picking)
* [Pack and ship orders in WMS Mobile](/articles/14700000000037-pack-and-ship-orders-in-wms-mobile)
* [Configure WMS products and inventory](/articles/14700000000006-configure-wms-products-and-inventory)
