Skip to main content
Card class: Cross-ChannelCategory: Ecommerce Platform
Items with open Sales Order demand but zero on-hand. The morning purchasing queue, ranked by SO value.

At a glance

Alert table: SKUs with at least one open Sales Order line item demanding the SKU AND zero on-hand inventory. The morning purchasing queue, ranked by SO value. Each row is a SKU + the count and dollar value of open SOs that need it + days-since-last-receipt + estimated days-to-next-inbound. The Operations Director’s daily fire-drill list. Distinct from a regular OOS report because it filters to “OOS that costs me money RIGHT NOW” rather than “any SKU with zero stock”.
What it countsSKU WHERE netsuite.item.on_hand = 0 AND EXISTS open SO line item AND open SO not yet ship-blocked-overridden. Each row is one SKU; columns: # open SOs blocked, total SO value blocked, oldest SO date, last-inbound date, expected-next-inbound date.
VAT / tax treatmentn/a, this is an inventory-and-demand intersection. SO value is gross (matches NS total).
ShippingIncluded in SO value.
DiscountsAlready deducted in SO value.
Refundsn/a.
Cancelled / voided ordersExcluded from open SO list.
CurrencyPer-SO in transaction currency, summed in consolidation.
Channels / sourcesAll sources blended; the SO blocking is by inventory regardless of how the SO was created.
Time windowRT
Alert triggerany high-value SO blocked (default >$5,000 single SO; configurable).
Rolesowner, operations, purchasing

Calculation

Calculated automatically from your NetSuite data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A US wholesale distributor on NetSuite OneWorld. Snapshot Tuesday 05 May 26, 09:00 EST. Headline: 24 SKUs with zero on-hand AND open SO demand. Total open SO value blocked: $384,000. Top blocked SKUs:
SKUDescriptionNS on-handOpen SOs #Open SO valueOldest SO ageLast receiptExpected inbound
FAST-A325-1/2x4A325 1/2x4 bolts018$84,00014 days22 Apr 2612 May 26 (PO_84412)
FAST-SS316-M10x40SS316 M10 bolt024$62,4009 days18 Apr 2618 May 26 (PO_84520)
ANCH-WSL-3/8Wedge anchor 3/8032$48,2005 days27 Apr 2609 May 26 (PO_84481)
FAST-NUT-FLG-1/2Flange nut 1/2014$32,80011 days24 Apr 2614 May 26 (PO_84455)
FAST-WASH-LK-3/4Lock washer 3/4012$28,2007 days30 Apr 26None scheduled
The morning purchasing review:
  1. FAST-A325-1/2x4 is the priority. $84,000 of SOs waiting, oldest 14 days. Inbound expected 12 May 26 (8 days away) on PO_84412. Action: confirm PO_84412 status with the supplier today; if at risk, expedite or split-ship. Customers waiting 14 days on a Net-30 order are at risk of cancelling.
  2. FAST-WASH-LK-3/4 has no scheduled inbound. $28,200 of SOs blocked with no PO in the system. Action: emergency PO creation today. The 7-day-old SOs cannot wait the typical 21-day procurement-and-shipping cycle without customer escalation. Consider air-freight or a competitor-supplier sourcing.
  3. ANCH-WSL-3/8: 32 SOs waiting, $48,200, oldest 5 days. Inbound 09 May 26 (4 days). Less urgent; the inbound will likely clear it. Confirm receiving-team is staffed for the inbound day.
  4. The aggregate impact:
    • 24 SKUs with 384,000ofblockedSOsisroughly6384,000 of blocked SOs is roughly 6% of the open-SO pipeline (6.35m total from Open SO Value).
    • Each day each SO sits unfulfilled adds 1 day to that customer’s SO to Invoice Lead Time, which in turn lifts DSO.
    • Cancellations of these SOs contribute to refund volume and customer-churn risk.
  5. Cross-reference OOS with Active Ad Spend, the dual problem. Some of these blocked SKUs may simultaneously be promoted on Google Ads or Amazon Ads, where the merchant pays for clicks that land on out-of-stock product pages. Double leakage.
  6. Cross-reference Inventory Sync Drift: if NS shows zero but Shopify shows in-stock, the merchant is overselling on the website while warehouse is empty. Both cards firing on the same SKU = customer-experience disaster.
The CEO conversation: The pitch: “$384,000 of orders sitting in your warehouse waiting for stock that hasn’t been ordered yet. Average customer wait: 9 days. Want to know which SKUs?” The CEO’s response: “Yes, and why didn’t anyone tell me?” The answer: nobody could; the join across NS open-SOs + NS on-hand + NS PO-pipeline doesn’t exist as a native NS report. Vortex IQ runs it daily as a saved query. Action playbook for the Purchasing Director:
  1. Daily 9am review of this card.
  2. Top-3 SKUs by blocked SO value get immediate supplier calls.
  3. SKUs without a scheduled inbound get emergency POs same-day.
  4. Track the count and total over time; falling = system working, rising = either demand surged or procurement fell behind.

Sibling cards merchants should reference together

CardWhy pair it with OOS with Open SO Demand
Low Stock AlertsThe leading indicator; SKUs heading to zero.
Inventory Sync DriftIf NS shows zero but commerce shows in-stock, double trouble.
Dead Stock with Active Ad SpendThe mirror leak: stock with no demand vs demand with no stock.
SOs Blocked on Inventory or CreditThe order-side view of the same problem.
Open Sales OrdersThe pipeline; OOS-blocked SOs are the stuck subset.
Inventory AgingThe negative correlate: while these SKUs are out of stock, others sit on the shelf.

Reconciling against the vendor’s own dashboard

Where to look in NetSuite’s own dashboard: NetSuite’s Demand Planning module exposes a similar view via Reports > Inventory > Inventory Demand Plan, but only for merchants on the Demand Planning paid edition. Without it, the merchant must build a saved search:
  1. Saved Search: Item, criteria Quantity Available <= 0 AND Open Sales Order Quantity > 0. Columns: Item, Open SO Qty, Open SO Value, Last Receipt, Next Expected Receipt.
This is the equivalent search Vortex IQ runs continuously. Why our list may legitimately differ:
ReasonDirectionWhy
Quantity Available vs On HandMaterialNS distinguishes “On Hand” from “Available” (subtracting committed-to-other-SO). Vortex IQ uses Available by default.
Multi-locationMaterialA merchant with multiple warehouses may have stock at warehouse B for a SKU that shows zero at warehouse A. Configure the location-priority rule.
Drop-ship vs StockEitherDrop-ship SKUs (sourced from supplier on demand) shouldn’t appear here; their on-hand is permanently zero by design. Filter via the dropshipitem flag.
Special order itemsEitherCustom-spec items have zero stock by design; filter or exclude from the alert.
Cross-connector reconciliation:
CardExpected relationshipNotes
shopify.oos_countShould approximately match for SKUs sold via ShopifyDifferences indicate inventory sync drift; cross-reference Inventory Sync Drift.
google_ads.oos_landing_pagesThe ad-spend-on-OOS-product subsetCross-references via SKU + URL.

Known limitations / merchant FAQs

A SKU shows zero on-hand but has 18 SOs waiting. How does that even happen? Three usual causes: (1) demand surge (a marketing push, a viral moment, a competitor outage drove demand the warehouse couldn’t anticipate); (2) inbound delay (the next inbound shipment is late); (3) over-allocation (more SOs were created than the available inventory could support, before the system started rejecting). All three are normal in distribution; this card surfaces the financial impact so you can prioritise. Should I cancel SOs that have been blocked too long? Depends on customer relationship. For a 14-day-old SO from a top-10 customer, ride it out (the customer will accept the wait). For a 14-day-old SO from a small one-off web buyer, refund + apologise + offer a small credit; the customer experience hit of waiting longer outweighs the small revenue. My drop-ship SKUs always show zero on-hand. Will they appear here? Configure the drop-ship filter in the manifest. Drop-ship items have zero stock by design (the warehouse never holds them; they ship direct from supplier to customer). Without the filter, they generate noise. Why do I need this card if NetSuite has Demand Planning? NetSuite’s Demand Planning is a paid module; not all merchants subscribe. This card delivers the operational essence (which SKUs are blocking SOs right now) without the planning layer. For merchants with full Demand Planning, this card becomes a redundant view; for merchants without, it’s the daily fire-drill list. My OOS list is the same 5 SKUs every week. Why? Persistent OOS on the same SKUs signals either (a) the safety-stock level is set too low, (b) the supplier lead-time is unreliable, (c) demand consistently exceeds reorder cadence. Permanent fix: rebalance safety stock based on demand-volatility analysis. Temporary fix: place larger / more frequent POs. The card shows $0 blocked SO value but the count is 8 SKUs. Are 8 SKUs OOS but no demand? The dollar value column counts only SOs that are flagged as currently expecting fulfilment. SKUs with zero stock and no current SO demand may appear with a 0 value; consider those a warning signal but not a fire-drill. Ride them through the next inbound. My OneWorld account: do I see this per-subsidiary? Yes. Each subsidiary’s inventory is independent; the OOS-with-demand calc runs separately. Some merchants prefer a global view (transfer stock from another subsidiary if available); configurable. Can I action stock-transfers from this card? Yes via Ask Viq: “transfer 38 units of FAST-A325 from US Inc to UK Ltd”. Requires NetSuite Transfer Orders to be enabled. The card’s “transfer” action posts a TO and the merchant approves. A SKU shows OOS but I know there’s stock at the offsite warehouse. What’s wrong? The offsite warehouse must be configured in the location-priority rule. NS knows about all locations; Vortex IQ defaults to a single location for the OOS comparison. Update the manifest to include the offsite location in the available-pool calc. Does this include consigned inventory? Configurable. Consigned inventory (held by the merchant but owned by the supplier) is technically available for fulfilment but not “owned” stock. Some merchants include it in OOS calcs (it’s available); others exclude (treats it as supplier inventory). Default: included. Why is the card “RT” and not period-bounded? Because the action this card drives is immediate (purchase order today, supplier call now). A 30-day rolling view would mask the live state. The Time series of “how many days has the SKU been OOS” is exposed as a separate chart. What’s the difference between this card and SOs Blocked on Inventory? This card lists SKUs with the count of blocked SOs; SOs Blocked on Inventory or Credit lists individual SOs with their blocking SKUs. Same data, two perspectives. Use this one for purchasing prioritisation, the other for sales-rep escalation.

Tracked live in Vortex IQ Nerve Centre

OOS with Open SO Demand is one of hundreds of KPI pulses Vortex IQ tracks across NetSuite and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.