Home / Help Center / pos-app / Stock / Godown / Serial Numbers
🔢 Stock / Godown

Serial Numbers

Serial Numbers gives you one searchable list of every individually tracked unit across all your serial-tracked products — its current status, warranty expiry, and which customer it was sold to.

📍 Menu path: Stock / Godown → Serial Numbers
👤 Who uses it: All roles with Inventory view access

Overview

This page is a read-only, filterable ledger of serial numbers already recorded against your serial-tracked products (e.g. phones, appliances, anything with an IMEI or unique unit number) — it does not add new serials itself.

New serial numbers are added from the Inventory page: open a serial-tracked product's ⋮ menu → Serial Numbers to register new units as they arrive, and their status updates automatically to Sold when billed at POS.

A left-hand status rail (All / Available / Sold / Returned / Damaged) shows a live count badge per status, and a Products list below it lets you narrow to one specific product.

Before You Start

Step-by-Step Guide

1 Filter by status

  1. Use the left rail to switch between All Serials, Available, Sold, Returned and Damaged — each shows its own live count.
  2. The grand total badge at the top of the page adds up all four statuses.

2 Filter by a specific product

  1. Use the Products dropdown at the top, or click a product name in the left rail's Products list, to see only that product's serials.
  2. Click "All Products" to clear the product filter.

3 Search, sort and export the list

  1. Use the table's search box to find a serial number, product name/SKU, or customer name/phone.
  2. Click any column header (Serial Number, Product, Status, Batch, Warranty Expiry, Customer, Sale Date) to sort by that column.
  3. Switch page size (25/50/100) at the bottom, and use the export button to download the current view as a spreadsheet.

Every Field & Button, Explained

Field / ButtonWhat it does
Grand total badgeSum of Available + Sold + Returned + Damaged counts, shown at the top of the page.
Product filter dropdownRestricts the table to serials belonging to one serial-tracked product.
Status railAll Serials / Available / Sold / Returned / Damaged, each with its own count badge; clicking one filters the table instantly.
Serial Number columnThe unique serial/IMEI value, shown in monospace font.
Product columnProduct name and SKU the serial belongs to.
Status columnColour-coded badge: Available (green), Sold (blue), Returned (amber), Damaged (red).
Batch columnThe batch/lot number this serial was received under, if batch tracking is also used for the product.
Warranty Expiry columnThe warranty end date recorded for this specific unit, if any.
Customer columnName and phone of the customer this unit was sold to (populated automatically once sold).
Sale Date columnThe date this specific serial was billed at POS.

Tips & Best Practices

Troubleshooting & FAQ

The list is completely empty.
No product is marked "Serial Tracked" yet, or no serial numbers have been registered. Go to Inventory, open a serial-tracked product's ⋮ menu → Serial Numbers, and add units there.
I can't find a "Serial Numbers" action on a product in Inventory.
That action only appears for products flagged Serial Tracked on the Products page, and requires the Advanced plan tier or above.
A serial still shows Available after I sold the unit.
Status only flips to Sold when the specific serial is selected during POS billing for a serial-tracked product. If billing was done without picking a serial, the record is not linked and will need a manual status update from the Inventory panel.
Can I edit or delete a serial number from this page?
No — this page is read-only. Adding, editing status, or deleting serials is done from Inventory → product ⋮ menu → Serial Numbers.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/packages/pos-react-lib/src/pages/SerialNumbersPage.jsx
  • frontend-app/packages/pos-react-lib/src/pages/inventory/SerialNumbersPanel.jsx

Backend endpoints used:

  • GET /products
  • GET /serials
  • POST /serials
  • GET /serials/product/:productId/stats
  • PATCH /serials/:id
  • DELETE /serials/:id

Related tables (db-core repositories):

  • ProductSerial
  • Product
  • Sale

Redux slices:

  • scope (selectCurrentScope / getScopeQueryParams)

Feature flag key: inventory

The page fetches per-status counts with four parallel GET /serials?status=X&limit=1 calls (reading only total from each) rather than one combined stats endpoint, so the count badges update independently of the currently loaded table rows. The table itself is rendered by the shared DataGrid component with client-side search/sort/export.