NetSuite Lot and Serial Traceability: Forward and Backward Trace
how to trace lot numbers forward and backward in NetSuite
Also searched as
- NetSuite lot traceability report recall
- NetSuite serial number where used
- NetSuite lot numbered assembly inventory detail
- NetSuite find which customers received a lot
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.
Applies to: NetSuite with Lot Tracking or Serialized Inventory and Advanced Bin / Numbered Inventory Management as needed; lot numbered and serialized assemblies
How to run a lot trace
- 1Confirm items are flagged Lot Numbered or Serialized on the item record and that the Lot Tracking or Serialized Inventory feature is enabled.
- 2Find 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.
- 3Run 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.
- 4Add columns for transaction type, number, date, entity, item, location and quantity so the result reads as a movement history.
- 5For 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.
- 6For 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.
- 7Export the customer list from the sales and shipment lines and compare against the recall scope.
- 8Save the searches and add the lot expiration date and inventory status as columns so the same report works for the next incident.
Where the data lives
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.
-- 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
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
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.
-- 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
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.
Try it here, free
Food Lot Traceability SQL Query Generator (Forward and Backward)
Fill in your table and column names to get recursive SQL that traces a lot back to suppliers or forward to customers.
Common 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.
How an ERP-grounded AI assistant handles this
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.
Frequently asked questions
Can NetSuite do a full forward and backward lot trace?
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?
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?
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?
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.
Related
NetSuite Quality Management: Incoming Inspection and Quarantine
Core NetSuite does not ship a full quality management system with inspection plans, sampling rules and certificates. You build incoming inspection from Inventory Status, a quarantine status or location, a workflow and a custom record for inspection results and nonconformances, or you add a quality SuiteApp. Which route is right depends on how formal your audit requirements are.
How-toHow to Set Up Routings and WIP in NetSuite Manufacturing
In NetSuite Advanced Manufacturing, a routing defines the ordered operations, work centers and labor or machine resources an assembly passes through. When a work order with a routing is released, NetSuite creates manufacturing operation tasks, and costs move into WIP through work order issues and operation completions before the final work order completion relieves WIP into finished inventory.
How-toHow to write and run SuiteQL queries in NetSuite
SuiteQL is NetSuite's read-only SQL dialect over the underlying record tables, run either interactively from Analytics > SuiteQL Query Tool (or the older /app/suiteanalytics query page), through REST at /services/rest/query/v1/suiteql, or programmatically via the N/query module in SuiteScript 2.x. It supports standard SELECT, JOIN, WHERE, GROUP BY and window functions against table names that mostly match record type IDs (transaction, transactionline, item, customer).
How-toHow to use formula fields in a NetSuite saved search
In the saved search Results tab, add a column, set Field to "Formula (Text)", "Formula (Numeric)", "Formula (Date)" or "Formula (Currency)", then type an Oracle SQL expression into the Formula box using curly braces around field IDs, e.g. {trandate} or {item.custitem_weight}. Formula fields can also go on the Criteria tab so you can filter on the calculated value itself.
Error fixFix NetSuite SSS_USAGE_LIMIT_EXCEEDED Error
SSS_USAGE_LIMIT_EXCEEDED fires when a SuiteScript execution consumes all the governance units (usage points) allotted to its script type before it finishes. Fix it by checking runtime.getCurrentScript().getRemainingUsage() before expensive calls, yielding or rescheduling in Scheduled scripts, and moving heavy record-count work into Map/Reduce, which yields automatically across stages.
Error fixFix NetSuite INVALID_FLD_VALUE Error
INVALID_FLD_VALUE means NetSuite rejected a value you tried to set on a field because it does not match the field's expected type, list option, or reference record. Fix it by confirming the internal ID or text value actually exists on that field's source list and matches the field's value type (text versus list versus record reference) before setting it.
AI for ERPAI agents for NetSuite manufacturing operations
AI agents for NetSuite manufacturing: WIP tracking, routing exceptions, and work order status grounded in SuiteQL, with human approval on anything that writes back.
AI for ERPNetSuite AI for Medical Device Manufacturers: Traceability, DHR Context and QMSR Readiness
AI on NetSuite for medical device makers: UDI, lot and serial trace, device history record questions and CAPA context, run privately, read-only by default.
Stuck on Oracle NetSuite?
Talk to engineers who work inside Oracle NetSuite every week, and who build private AI that answers these questions from your own ERP data.
New to NetSuite? Start with the NetSuite guide and toolkit, or plan with NetSuite Cost Calculator, Training Path Builder, ERP Certification Study Planner.
Keep exploring
Free tools
- Food Lot Traceability SQL Query Generator (Forward and Backward)Fill in your table and column names to get recursive SQL that traces a lot back to suppliers or forward to customers.
- NetSuite Assembly Build ChecklistA pre-build and post-build checklist for NetSuite assembly items and work orders, covering setup, inventory and costing checks.
- NetSuite Script Deployment Inventory WorksheetKeep an inventory of every SuiteScript and deployment with its owner, status and review date, and export it to Excel.
ERP fixes and how-tos
- Date Code and Lot Traceability in Cetec ERPHow to keep date code and lot traceability in Cetec ERP for electronics: capture at receiving, preserve through builds, and answer a recall trace quickly.
- How to Link a CAPA to ERP Lots and Serial Numbers for Containment and EffectivenessUse ERP lot and serial genealogy to scope containment for a CAPA, record affected jobs and shipments, and verify effectiveness with real data instead of opinion.
- NetSuite Quality Management: Incoming Inspection and QuarantineNetSuite has no full QMS, but inventory status, workflows and custom records give incoming inspection, quarantine and NCR tracking. Setup steps and limits.
Runs with your ERP
- BlackLine and Oracle NetSuite: Account Reconciliation ConnectorHow BlackLine pulls NetSuite balances, GL and bank transactions and saved searches for account reconciliation and matching, with setup steps and pitfalls.
- ShipHawk and Oracle NetSuite: carrier rates, labels and trackingHow ShipHawk pulls NetSuite item fulfillments, rate-shops parcel and LTL carriers and writes tracking back, with setup steps, pitfalls and AI uses.
- OpenBOM and Oracle NetSuite: from CAD BOM to assembly itemsHow OpenBOM for NetSuite moves SOLIDWORKS and other CAD BOMs into NetSuite assembly items and BOMs, push and pull modes, setup steps, pitfalls and AI use.
Guides
- Lot Traceability for a Medical Device Contract ManufacturerSet up lot traceability in your ERP for medical device work: material certs, forward and backward genealogy, recall drills, and what auditors ask to see.
- Foundry Heat and Lot Traceability for CastingsHow foundries trace castings back to heat, charge, pattern and process records, what customers and auditors ask for, and how to retrieve it in minutes.
- Infor M3 Lot Traceability and Recall Management ConfigurationConfigure Infor M3 lot traceability with forward and backward tracking, recall management, lot status workflows, and serialization for regulated industries.
AI on your ERP
- AI for JD Edwards Food and Beverage: Faster Traceability, Shelf Life, and Recall DrillsAI for JD Edwards food and beverage plants: lot traceability, shelf life, allergen control, recall drills and trade-promotion demand, private and read-only.
- NetSuite AI for Food and Beverage: Lot Genealogy, Shelf Life and Recall ReadinessAI on NetSuite for food and beverage: lot genealogy, FSMA 204 traceability, shelf-life and FEFO questions answered from live data, on-prem or private cloud.
Integrations
- How to use Claude with Oracle NetSuiteUse Claude with Oracle NetSuite through MCP connectors, the Anthropic API, AWS Bedrock or Vertex, plus the on-prem alternative for controlled data.
- How to add AI agents to Oracle NetSuiteHow to add AI agents to Oracle NetSuite: SuiteQL and REST tool layer, RESTlet writes, role-scoped tokens, human approval, and where a private model fits.