# NetSuite Lot and Serial Traceability: Forward and Backward Trace

> Source: https://netray.co/erp-help/netsuite-lot-serial-traceability-recall-report
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: ERP Help

## Short answer

NetSuite stores lot and serial numbers as inventory number records linked to transactions through the Inventory Detail subrecord. A recall trace works by starting from the inventory number, finding every transaction line that touched it, and following work order issues and assembly builds to the finished lots they went into. It is fully possible with saved searches or SuiteQL, though it takes setup.

## Kind

how-to

## System

netsuite

## Erp

Oracle NetSuite

## Module

Inventory / Lot and Serial Tracking

## Query

how to trace lot numbers forward and backward in NetSuite

## Alternate Queries

- NetSuite lot traceability report recall
- NetSuite serial number where used
- NetSuite lot numbered assembly inventory detail
- NetSuite find which customers received a lot

## Applies To

NetSuite with Lot Tracking or Serialized Inventory and Advanced Bin / Numbered Inventory Management as needed; lot numbered and serialized assemblies

## Steps

### How to run a lot trace

**Items:**

- Confirm items are flagged Lot Numbered or Serialized on the item record and that the Lot Tracking or Serialized Inventory feature is enabled.
- Find the lot: Lists > Accounting > Inventory Numbers (or the Inventory Number search) and open the record to see on-hand by location and the expiration date.
- Run a Transaction saved search, joined to Inventory Detail, filtered on the inventory number, to list every receipt, issue, build, transfer and sale for that lot.
- Add columns for transaction type, number, date, entity, item, location and quantity so the result reads as a movement history.
- For a backward trace of a finished lot, open the assembly build or work order completion that created it and list the component lots on the matching work order issue.
- For a forward trace of a component lot, find the work order issues that consumed it, then find the finished lots built under those work orders, then search sales for those finished lots.
- Export the customer list from the sales and shipment lines and compare against the recall scope.
- Save the searches and add the lot expiration date and inventory status as columns so the same report works for the next incident.

## Sections

### Where the data lives

**Body:**

Each lot or serial is an Inventory Number record, keyed by item, number and sometimes location. Quantity movement is stored on the Inventory Detail subrecord of each transaction line, which holds the assigned number, quantity and bin. Item receipts, item fulfillments, inventory adjustments, transfers, work order issues and completions, and assembly builds all carry inventory detail.

That means a lot has no single history table. The history is the set of transaction lines whose inventory detail references the number. Searching on the number through the Inventory Detail join is therefore the correct way to rebuild it, and it is also why a transaction posted without an assignment leaves a gap in the trace.

**Code:**

-- Transaction saved search (Lists > Search > Saved Searches > New)
-- Type: Transaction
-- Criteria: Inventory Detail : Inventory Number : Number  contains  LOT-2026-0412
-- Results: Type, Document Number, Date, Name, Item, Location,
--          Inventory Detail : Inventory Number, Inventory Detail : Quantity

### Backward and forward trace through production

**Body:**

The trace breaks at the manufacturing step unless you follow the work order. A finished lot is created by a work order completion or assembly build. The components it consumed are on the work order issue or the build's component list, each with its own lot. Moving from finished lot to component lot means joining on the created-from work order.

Do it in two searches rather than one clever one. First list the work orders that produced the finished lot. Second, list the issue lines on those work orders and their lots. For a forward trace reverse the order: component lot, to work orders that issued it, to finished lots, to sales. Writing the two legs separately makes the logic checkable.

### Inventory status, expiry and quarantine

**Body:**

With the Inventory Status feature, each lot quantity carries a status such as available or on hold, and the status determines whether stock can be sold. During a recall, moving remaining quantity to a non-available status stops further shipments while you investigate. That is cleaner than marking items inactive, which affects every lot.

Expiration dates live on the inventory number, so a saved search on inventory number with an expiry filter gives a near-expiry list for the warehouse. Pair it with location and bin to give pickers something usable.

**Code:**

-- SuiteQL: lots expiring in 60 days (verify column names in the Records Catalog)
SELECT i.itemid, n.inventorynumber, n.expirationdate
FROM inventorynumber n
JOIN item i ON i.id = n.item
WHERE n.expirationdate <= CURRENT_DATE + 60
ORDER BY n.expirationdate

### Making the trace reliable

**Body:**

A trace is only as good as receiving discipline. If receipts are posted with a generic lot like TEMP, or work orders are completed without assigning component lots, the chain is broken before anyone needs it. Use mandatory inventory detail, validate lot formats with a user event script, and prefer vendor lot capture at the dock.

Run a mock recall each quarter. Pick a finished lot, time how long it takes to list affected customers, and note where the data was missing. That is the cheapest audit you can do.

## Pitfalls

- Receiving with placeholder lot numbers, which breaks the backward trace to vendor lots.
- Completing work orders without component lot assignments, so the production link is missing.
- Using one saved search for both directions, which hides logic errors.
- Marking items inactive during a recall instead of putting the affected lot on hold.
- Not testing the trace until a real incident occurs.

## Ai Angle

An assistant grounded in NetSuite can take a lot number, run the inventory-detail queries and assemble the forward and backward chain, then show the searches so a quality manager can check them. ERPray stays read-only and respects the user's role, so it only sees what that person could search. For a single regular recall report, a well-built saved search needs no AI at all.

## Faq

### Can NetSuite do a full forward and backward lot trace?

**Answer:** Yes, when lots are captured at receipt, on work order issues and on completions. The trace is built from Inventory Detail on transactions, joined through work orders. It needs saved searches or SuiteQL rather than a single built-in report in most accounts.

### Where do I see all transactions for one serial number?

**Answer:** Open the Inventory Number record or run a transaction search with the Inventory Detail join filtered on the serial. Receipts, sales, transfers, adjustments, builds and returns that touched it will all appear, provided they carried inventory detail.

### How do I block a lot from shipping during a recall?

**Answer:** With Inventory Status enabled, change the status of the affected lot quantity to a non-available status using an Inventory Status Change. Available stock excludes it, so it cannot be sold or fulfilled until released.

### Does a lot numbered assembly keep component lots?

**Answer:** The finished assembly gets its own lot, and component lots are recorded on the build or work order issue. The link between them is the work order, so queries must join through it to connect finished lots to component lots.

## Search terms

NetSuite lot traceability, NetSuite serial number tracking, NetSuite recall report, NetSuite inventory detail, NetSuite inventory number, lot numbered assembly NetSuite, NetSuite lot expiration, forward backward trace ERP, NetSuite inventory status

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
