NetSuite Inventory Management for Ecommerce: The Complete Guide
Disclosure: This article may contain affiliate links. We may earn a referral fee at no cost to you.
If you're running an ecommerce brand doing $5M–$50M in revenue, your inventory is your single largest asset — and your single largest headache. QuickBooks might have gotten you this far with spreadsheets and prayer, but the moment you're managing inventory across a Shopify DTC store, Amazon FBA, a wholesale channel, and two warehouses, you've outgrown it. Period.
NetSuite's inventory management module is purpose-built for this complexity. It's not a bolt-on — it's deeply integrated with your financials, purchasing, and order management. That means when a unit ships from Warehouse B to fulfill an Amazon order, your COGS updates automatically, your available-to-promise inventory adjusts across all channels, and your reorder point calculations factor in the change. No manual journal entries. No reconciliation nightmares.
But here's the thing: NetSuite's inventory management is powerful, and that power comes with real configuration decisions that will make or break your implementation. I've helped dozens of ecommerce brands migrate from QuickBooks to NetSuite, and inventory setup is where I spend the most time — because getting it wrong means overselling, stockouts, and financial statements you can't trust. This guide walks you through everything you need to know.
Key Takeaways
- Multi-location inventory is native in NetSuite, giving you real-time visibility across warehouses, 3PLs, Amazon FBA, and in-transit stock without third-party plugins.
- Reorder points and safety stock can be configured per item per location, which is essential for ecommerce brands with different velocity profiles across channels.
- Lot and serial tracking is available but requires the Advanced Inventory feature, which is an additional cost — budget for it if you sell products with expiration dates or need unit-level traceability.
- Demand planning integration means your reorder points can adjust dynamically based on sales velocity, reducing both stockouts and overstock situations.
- Shopify and Amazon inventory sync requires middleware like Celigo or custom SuiteScript — NetSuite does not natively push inventory counts to marketplaces in real time.
- Cycle counting replaces disruptive full physical counts, letting you maintain inventory accuracy without shutting down fulfillment for a week.
How Does Multi-Location Inventory Work in NetSuite?
Multi-location inventory is one of NetSuite's core strengths and a primary reason ecommerce brands upgrade from QuickBooks. Every inventory item in NetSuite tracks quantity on hand, available, committed, on order, and in transit — broken down by location.
Here's what that looks like practically. Say you're a $10M DTC skincare brand with a primary warehouse in New Jersey, a 3PL in Nevada for West Coast orders, and Amazon FBA inventory in four fulfillment centers. In NetSuite, you'd set up each of these as a location record. Your "Vitamin C Serum 30ml" item record would show:
- NJ Warehouse: 2,400 on hand, 180 committed to open orders, 2,220 available
- NV 3PL: 800 on hand, 45 committed, 755 available
- Amazon FBA (aggregated): 1,200 on hand (pulled via integration)
- In Transit from manufacturer: 5,000 on PO, ETA April 15
This is a single unified view. When a Shopify order comes in, your fulfillment logic can route it to the nearest warehouse with available stock. When your purchasing team cuts a PO, they can see exactly where stock is needed.
The key configuration decision: do you use locations for physical warehouses only, or do you also create virtual locations for concepts like "Quality Hold," "Damaged/Returns," or "Photo Studio Samples"? I recommend virtual locations for any inventory state that affects availability. If 50 units are pulled for a photo shoot, they shouldn't show as available to sell.
Transfer orders move inventory between locations and create the accounting trail automatically — debit inventory at the receiving location, credit at the sending location. For ecommerce brands doing regular warehouse-to-warehouse transfers or sending replenishment stock to Amazon FBA, this is transformational compared to the manual journal entries QuickBooks requires.
How Should You Configure Reorder Points and Safety Stock?
Reorder points and safety stock are where most ecommerce brands either over-invest (tying up cash in excess inventory) or under-invest (losing revenue to stockouts). NetSuite lets you set these at the item level and at the item-location level, and you should always use the item-location level.
Why? Because your best-selling SKU might need 500 units of safety stock at your East Coast warehouse but only 150 at your West Coast 3PL. A single global reorder point doesn't account for regional demand patterns, lead time differences, or channel-specific velocity.
Here's a practical framework I use with clients:
Reorder Point Formula: Average daily demand × Lead time in days + Safety stock
Safety Stock Formula: Z-score × Standard deviation of daily demand × Square root of lead time in days
For a $15M apparel brand I worked with, we set up a saved search that calculated trailing 90-day average daily sales by SKU by location, then multiplied by the vendor lead time stored on the item record. We loaded these as reorder points in bulk using CSV import. The safety stock multiplier varied by SKU importance: A-items (top 20% of revenue) got a 1.65 Z-score (95% service level), B-items got 1.28 (90%), and C-items got 1.04 (85%).
NetSuite's "Order Items" screen automatically surfaces items that have dropped below their reorder point, grouped by preferred vendor. Your purchasing team can generate POs directly from this screen with one click. It replaces the spreadsheet-based reorder process that most QuickBooks users rely on.
Pro tip: Set up a scheduled saved search that emails your purchasing manager every Monday morning with items within 10% of their reorder point. This gives you a 1-2 day early warning before items actually need to be ordered, smoothing out your PO volume instead of creating a Friday afternoon fire drill.
What About Lot Tracking, Serial Numbers, and Expiration Dates?
If you sell consumables (supplements, food, skincare) or high-value goods (electronics, jewelry), you'll need lot or serial tracking. In NetSuite, this requires the Advanced Inventory feature — it's not included in the base license and typically adds $1,500–$3,000/year depending on your contract.
Lot tracking assigns a lot number to a batch of items. When you receive 5,000 units of Omega-3 supplements from your manufacturer, you'd assign them lot number "OM3-2026-0315" with an expiration date of March 2028. NetSuite then tracks which lot numbers shipped to which customers. If there's a recall, you can pull a report in seconds showing every affected order.
Serial tracking assigns a unique serial number to each individual unit. This is more common for electronics or high-value items. Each unit gets its own identity from receipt through sale.
For ecommerce brands, the most important lot tracking feature is FEFO (First Expired, First Out) picking. NetSuite can automatically direct warehouse staff to pick the oldest lot first, preventing product expiration on your shelves. This is especially critical for Amazon FBA, where expired products result in disposal fees and can get your listing suspended.
Practical example: A supplement brand I implemented had $180K in expired inventory write-offs the year before going live on NetSuite. After implementing lot tracking with FEFO enforcement and expiration date alerts (triggered 90 days before expiry), write-offs dropped to $12K in the first year — a 93% reduction.
The catch: lot and serial tracking adds friction to your receiving and picking processes. Every receipt requires lot assignment. Every pick requires lot selection (or FEFO enforcement). If you're doing this in a high-volume ecommerce environment, make sure your warehouse team is trained and your barcode scanning workflow supports it.
How Do You Prevent Overselling Across Channels?
Overselling is the nightmare scenario for multi-channel ecommerce brands. A customer orders on Shopify, but that last unit already sold on Amazon 30 seconds ago. Now you're canceling an order, damaging your seller metrics, and frustrating a customer.
NetSuite helps prevent overselling, but it's not magic — and it's not real-time out of the box. Here's how the architecture works:
Available-to-Promise (ATP) in NetSuite calculates: On Hand - Committed + On Order = Available. This is calculated per location and rolls up to a total. The "Committed" quantity increases the moment a sales order is created in NetSuite, so that inventory is reserved.
The challenge is integration latency. When a Shopify order is placed, it doesn't instantly appear in NetSuite. Most integrations (Celigo, FarApp, custom) sync orders every 1-5 minutes. During that window, the same inventory could theoretically sell on another channel.
Here's the multi-pronged approach I recommend:
-
Buffer stock: Hold back 5-10% of available inventory from each channel's published quantity. If you have 100 units available, tell Shopify you have 90 and Amazon you have 90. Yes, you're technically under-representing inventory, but the cost of a stockout is lower than the cost of an oversell.
-
Centralized inventory publication: Use your NetSuite ATP as the single source of truth, and push inventory quantities out to channels from NetSuite — not from each channel independently. Celigo's NetSuite-Shopify connector supports this pattern.
-
Low-stock alerts: Set up a workflow that triggers when available quantity drops below 5 units, automatically reducing published quantities to zero on secondary channels.
-
Channel priority rules: Decide which channel gets priority when stock is limited. Most brands prioritize DTC (higher margin) over marketplace channels.
How Does Amazon FBA Inventory Work With NetSuite?
Amazon FBA inventory management in NetSuite is one of the most common — and most misunderstood — requirements I encounter. Here's the reality: Amazon FBA is essentially a 3PL relationship, and you need to treat it that way in NetSuite.
Setup approach: Create a location called "Amazon FBA" (or multiple locations if you want visibility into specific FBA warehouses). Use an integration tool to pull FBA inventory reports and update NetSuite quantities. The Amazon Selling Partner API provides inventory data that can be mapped to NetSuite item records.
FBA fee reconciliation is where most brands struggle. Amazon charges storage fees, fulfillment fees, referral fees, and a dozen other line items. These need to be properly categorized in your GL. I recommend creating a dedicated Amazon fee account hierarchy:
- 5100 - Amazon Fees (parent)
- 5101 - Referral Fees
- 5102 - FBA Fulfillment Fees
- 5103 - Storage Fees
- 5104 - Advertising Fees (PPC)
- 5105 - Returns Processing Fees
Your integration should parse the Amazon Settlement Report and create a journal entry (or vendor bill) that breaks down each fee category. This gives your CFO visibility into true Amazon channel profitability, not just a lump-sum "Amazon fees" line item.
FBA vs. FBM (Fulfilled by Merchant) inventory: If you sell both FBA and FBM on Amazon, you need clear fulfillment rules in NetSuite. FBA orders are fulfilled by Amazon — NetSuite should record the revenue and COGS but not generate a pick ticket. FBM orders need to route to your warehouse for fulfillment. The item record's fulfillment method or a custom field on the sales order controls this routing.
What's the Best Approach to Cycle Counting in NetSuite?
Full physical inventory counts are disruptive. For a high-volume ecommerce operation, shutting down the warehouse for 2-3 days means delayed shipments, customer complaints, and revenue loss. Cycle counting solves this by counting a subset of inventory each day or week.
NetSuite supports cycle counting natively. Here's how to set it up:
ABC analysis first: Classify your items by revenue contribution. A-items (top 80% of revenue, typically 20% of SKUs) get counted quarterly. B-items get counted semi-annually. C-items get counted annually. NetSuite can auto-calculate ABC classification based on trailing sales data.
Cycle count plans define which items to count on which schedule. You can generate plans automatically based on ABC classification, or manually for specific bin locations.
Variance thresholds trigger investigation workflows. Set a tolerance — say, 2% variance for A-items and 5% for C-items. Variances beyond the threshold generate a task for the warehouse manager to investigate before the adjustment is posted.
Pro tip: Run your first full physical count before going live on NetSuite. Load those counts as your opening balances. Then switch to cycle counting from day one. The accuracy of your starting balances sets the tone for everything that follows. I've seen brands skip this step to save time during implementation — and then spend months chasing phantom inventory variances.
For brands using barcode scanning (which you should be), cycle counts are fast. The warehouse associate scans a bin location, scans each item, enters the count, and moves on. NetSuite reconciles automatically and flags discrepancies.
How Does NetSuite Handle Kitting and Bundling for Ecommerce?
If you sell product bundles (a "Starter Kit" that includes three individual products), NetSuite offers two approaches: inventory assemblies and groups/kits.
Inventory assemblies physically create a new item. You issue a work order, pull the component items from inventory, and build the assembly. The components are consumed and the assembly item's quantity increases. This makes sense for pre-built bundles that sit on a shelf — like a gift set that's shrink-wrapped and ready to ship.
Groups/kits are virtual bundles. The bundle exists as a sellable item, but inventory stays at the component level. When the bundle sells, NetSuite commits one of each component. This is better for ecommerce bundles where you don't want to pre-build inventory — you pick the components separately during fulfillment.
For most ecommerce brands, I recommend groups/kits for DTC bundles. Pre-building assemblies ties up inventory and reduces flexibility. If your "Summer Essentials Kit" isn't selling as expected, the components are locked up as assemblies rather than available to sell individually.
The exception: if you sell on Amazon FBA, bundles sent to FBA must be physically assembled and shipped as a single unit. In that case, use assemblies for the FBA portion and groups/kits for DTC.
FAQ
Can NetSuite sync inventory with Shopify in real time? Not natively. You need middleware like Celigo, FarApp, or a custom integration. Most sync intervals are 1-5 minutes. True real-time sync (sub-second) requires custom SuiteScript and webhooks, which adds development cost. For most ecommerce brands, a 2-3 minute sync interval is acceptable if paired with a buffer stock strategy.
Does NetSuite support negative inventory? Yes, but you should turn this off. NetSuite has an "Allow Negative Quantity" preference — disable it. Negative inventory creates accounting chaos and typically indicates a process problem (shipping before receiving is posted, for example). Force your team to post receipts before fulfillments.
How does NetSuite handle returns inventory? Returns are processed through Return Authorizations (RAs) and Item Receipts. You can configure items to return to a "Returns QC" location for inspection before being restocked to available inventory. This is critical for ecommerce — you don't want a returned item going back to pickable inventory without inspection. Set up an approval workflow where the warehouse team inspects the return, classifies it (restock, refurbish, or dispose), and updates the item's location accordingly.
What's the difference between NetSuite's Standard and Advanced Inventory features? Standard inventory includes multi-location tracking, basic reorder points, and transfer orders. Advanced Inventory adds lot/serial tracking, demand planning, bin management, and FEFO/FIFO enforcement. Most ecommerce brands doing over $10M in revenue need Advanced Inventory. Budget approximately $2,000-$3,000 per year for the feature license.
Can I track inventory costs in multiple currencies? Yes, if you're on NetSuite OneWorld. Each subsidiary can have its own base currency, and inventory costs are tracked in that currency. Standard NetSuite tracks inventory in a single base currency, with foreign currency purchase orders converted at the transaction exchange rate.
Not sure if NetSuite is the right fit? Take our free ERP readiness assessment to find out.