How to Track Last Counted Bins in NetSuite
Learn How to Monitor Last-Counted Bins in NetSuite to Avoid Inventory Discrepancies.

On this page
Cycle counting by item leaves bins uncounted when inventory records don't match physical stock. If NetSuite shows zero on-hand in a bin but product is actually sitting there, that bin falls off your count worksheet entirely. The result is inventory discrepancies that compound through the year and surface as stockouts or write-offs during physical inventory.
The Problem with Item-Based Counts
When you create an inventory count in NetSuite, the system generates worksheet lines based on items and their recorded bin locations. If NetSuite believes an item has zero quantity in a bin, that bin won't appear on your count sheet. This is the core issue: NetSuite tracks last-counted dates by item, not by bin location.
Here's the scenario that exposes this gap:
- Rack 1 physically contains 20 bins
- Your count worksheet returns 18 bins on Rack 1
- The other 7 bins in the results are located elsewhere
- Two bins on Rack 1 have no worksheet lines because NetSuite shows zero on-hand
Those two bins get skipped. If product is physically there but NetSuite has no record of it, the discrepancy goes undetected. Your auditors will ask about this, and the spreadsheet workaround of manually tracking bin counts creates its own reconciliation burden.
What NetSuite's Inventory Count Feature Actually Does
NetSuite's native Inventory Count feature (Transactions > Inventory > Count Inventory) generates counts based on item records, bin assignments, and on-hand quantities. The system uses the last count date field on the item record to determine which items need recounting.
The limitation is structural: bins don't have a last-counted timestamp field in the native record. You can set up a bin-based count by filtering on location and bin, but the worksheet still generates from items with on-hand quantities in those bins. Empty bins, or bins with quantities NetSuite doesn't know about, won't generate lines.
How to Verify Every Bin Gets Counted
You need a two-step approach: run the item-based count, then cross-reference against your physical bin list to identify gaps.
Step 1: Create a Complete Bin List
Use a saved search to pull every bin in your warehouse:
- Go to Lists > Search > Saved Searches > New
- Choose Bin as the record type
- Add filters for Location (select your warehouse) and Bin Number (is not empty)
- Add results for Bin Number and Location
- Save and schedule this search to run before each count cycle
Export this list to compare against your count worksheet.
Step 2: Compare Count Worksheet Against Bin Master List
After generating your inventory count, export the worksheet lines and sort by bin. Match against your complete bin list. Any bin on the master list without a corresponding worksheet line needs manual verification.
This is where teams lose hours. A warehouse with 5,000 bins and 15,000 items produces a worksheet that takes significant effort to cross-check. The control here is a bin-by-bin physical walkthrough during your January count, not relying on NetSuite's item-based generation.
Using Smart Count SuiteApp for Bin-Level Control
The Smart Count SuiteApp (SuiteApp Marketplace) extends NetSuite's native counting capabilities with handheld scanning workflows. It does track which bins have been scanned during a count session. However, it does not retroactively generate lines for bins NetSuite excluded from the worksheet.
To ensure every bin gets counted with Smart Count:
- Build your count worksheet from your complete bin list, not just items with on-hand quantities
- Set up count groups by physical zone or rack to make the process manageable
- Use the bin-scanning mode to force a physical scan of each bin location, even if the worksheet shows zero expected quantity
The key control here is that Smart Count records the scan event per bin. You can review the count session report to see which bins were physically scanned versus which were skipped.
A SuiteScript Approach for Bin Count Verification
If you need to track last-counted bins systematically, a small SuiteScript can record bin count dates to a custom record. This gives you a permanent audit trail that native NetSuite doesn't provide.
/**
* @NApiVersion 2.1
* @NScriptType Suitelet
*/
define(['N/record', 'N/search', 'N/ui/serverWidget'],
(record, search, serverWidget) => {
const onRequest = (context) => {
const binSearch = search.create({
type: search.Type.BIN,
columns: ['binnumber', 'location', 'custrecord_last_count_date']
});
const results = [];
binSearch.run().each((result) => {
results.push({
binNumber: result.getValue('binnumber'),
location: result.getValue('location'),
lastCount: result.getValue('custrecord_last_count_date')
});
return true;
});
const form = serverWidget.createForm({
title: 'Bin Count Status Report'
});
// Build HTML table from results
let html = '<table border="1"><tr><th>Bin</th><th>Location</th><th>Last Counted</th></tr>';
results.forEach((row) => {
html += `<tr><td>${row.binNumber}</td><td>${row.location}</td><td>${row.lastCount || 'Never'}</td></tr>`;
});
html += '</table>';
form.addField({
id: 'custpage_results',
type: serverWidget.FieldType.INLINEHTML,
label: 'Count Results'
}).defaultValue = html;
context.response.writePage(form);
};
return { onRequest };
}
);This script requires a custom field (custrecord_last_count_date) on the bin record that you update after each count cycle. The script generates a suitelet report showing every bin and its last count date, so you can identify bins that haven't been counted within your required cycle.
Build the Count Schedule Around Bin Coverage
The practical fix for your January count is to structure the count by physical location rather than item value alone. Here's a schedule that ensures full coverage:
| Count Type | Frequency | Coverage |
|---|---|---|
| Item-based cycle count | Monthly | High-value or high-velocity items |
| Bin-based zone count | Quarterly | Every bin in a designated zone |
| Full physical inventory | Annually | Every bin, every item |
For the annual physical, create count worksheets grouped by zone. Walk each rack systematically and scan every bin, regardless of whether NetSuite shows quantity. Record zero-count bins as verified so you have evidence of the physical check.
What to Check Before January
Set up your bin master list saved search now. Run it against a test count worksheet to identify gaps in your current process. If you find bins that NetSuite consistently omits, those are the locations where unknown inventory is likely hiding.
The bottom-line impact is straightforward: if you can't prove every bin was counted, you can't trust your on-hand quantities. A bin-level tracking process gives you clean, reconciled, and audit-ready inventory data.


