> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Slow-Moving Inventory (>90d), Sage

> Value of inventory with no movement in over 90 days, the early-warning cohort before dead stock. Intacct Inventory module. How to read it, why it matters, and how to act on it.

**Card class:** [Non-Hero](/nerve-centre/overview#card-classes-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> Value of inventory with no movement in over 90 days, the early-warning cohort before dead stock. Intacct Inventory module.

## At a glance

> The dollar value of inventory that has not moved in more than 90 days but has not yet crossed the dead-stock line. This is the amber cohort: stock that is slowing down and heading toward write-down territory while there is still time to act with merchandising rather than accounting. Where [Dead Stock Value](/nerve-centre/kpi-cards/sage/dead-stock-value) is the hard-cut bad-stock view that needs a finance decision, this card is the early-warning view that needs a sell-through plan. The card requires the Sage Intacct Inventory module and hides for Sage Accounting merchants who carry no perpetual inventory.

|                     |                                                                                                                                                                                                                                                                                                                                              |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**  | `InventoryItem.QuantityOnHand × InventoryItem.UnitCost` for items where `MAX(InventoryItem.LastSaleDate)` falls between `TODAY - 90` and the dead-stock threshold (default 180). The window is bounded on both sides: more than 90 days dormant but not yet dead, so the same SKU does not appear on both this card and the dead-stock card. |
| **Threshold band**  | 90 days is the default lower bound. The upper bound is the workspace dead-stock threshold (default 180). Both are configurable per workspace; the band moves together so the two cards stay mutually exclusive.                                                                                                                              |
| **In-transit**      | Excluded. Goods in Transit have no on-hand date and cannot be aged.                                                                                                                                                                                                                                                                          |
| **Currency**        | Multi-Entity Console: each entity's slow-moving value in base currency, summed in reporting currency at the configured FX cadence per entity.                                                                                                                                                                                                |
| **Entity scope**    | Card respects the dashboard entity filter.                                                                                                                                                                                                                                                                                                   |
| **Dimensional cut** | Each slow-moving dollar carries Intacct dimensions through. Pivot by Class to see which brand is decelerating, by Location to see which Warehouse holds the amber cohort, by Vendor to see which supplier's product is losing velocity.                                                                                                      |
| **Time window**     | `RT`                                                                                                                                                                                                                                                                                                                                         |
| **Alert trigger**   | `>10% of inventory value`, sentiment `slow_moving`. Configurable per workspace. The percentage basis matters more than an absolute dollar figure because it scales with the size of the business.                                                                                                                                            |
| **Roles**           | owner, finance, operations                                                                                                                                                                                                                                                                                                                   |

## Calculation

Calculated automatically from your Sage 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 specialty retailer on Sage Intacct (single entity, USD) with an Inventory Control module of roughly 6,500 SKUs, selling through Shopify Plus and a small Adobe Commerce wholesale side. Annual revenue \~$28M. Total inventory value ~$4.1M. Snapshot 14 Apr 26. Dead-stock threshold set to 180 days; this card's window is 90 to 180 days dormant. The card reads \$520,000, which is 12.7% of total inventory value, above the 10% alert line. The merchandiser opens the Class pivot.

| Class (brand)                         | SKU count | Slow-moving value (USD) | Days since last sale (avg) |
| ------------------------------------- | --------- | ----------------------- | -------------------------- |
| Brand Alpha core range                | 88        | \$186,000               | 112                        |
| Brand Bravo seasonal carryover        | 140       | \$148,000               | 134                        |
| Brand Charlie new launch (slow start) | 54        | \$96,000                | 101                        |
| Brand Delta accessories               | 96        | \$58,000                | 121                        |
| Long-tail misc                        | 210       | \$32,000                | 155                        |
| **Slow-Moving Inventory (this card)** | **588**   | **\$520,000**           |                            |

Five things to notice:

1. **This is the cohort you can still save, which is the whole point of the card existing separately from dead stock.** \$520K of inventory is decelerating but has not yet hit the 180-day dead line. Everything on this list still has merchandising options that the dead-stock cohort has largely lost: a promotion, a bundle, a homepage feature, a price test, a reallocation to a better-performing channel. The merchandiser's job is to work this list down before any of it ages into the dead cohort, where the only remaining moves are liquidation and write-down. A business that works this card weekly rarely accumulates a dead-stock problem.
2. **Brand Charlie's new launch on this list is a launch problem, not an aging problem, and it needs the opposite response.** 54 SKUs at 101 days since last sale that are a recent launch means the launch under-performed, not that the stock is old. The fix is marketing and merchandising attention (better imagery, paid traffic, influencer seeding, a relaunch), not discounting. Discounting a fresh launch trains customers to wait for markdowns and damages the brand. Reading the days-since-last-sale alongside the launch date is what separates "needs a push" from "needs a markdown".
3. **Brand Bravo seasonal carryover at 134 days is the closest to tipping into dead and deserves first priority.** With a 180-day dead line, this cohort has roughly 46 days before it ages over. The merchandiser should plan an end-of-season clearance now while there are still channels willing to take it at a reasonable recovery. Waiting until it crosses into dead stock cuts recovery sharply because off-price buyers pay more for current-season carryover than for last-season dead stock. The countdown is the action signal.
4. **The 12.7% reading against total inventory is the number to watch over time, not the absolute dollar.** \$520K means little without context; 12.7% of inventory value sitting in the amber band is a yellow flag for a specialty retailer, where healthy is usually under 8%. Trend matters more than level: if this percentage has climbed from 8% to 12.7% over two quarters, the buying team is over-ordering relative to sell-through and the root cause is upstream in purchasing, not downstream in merchandising. Pair with [Inventory Turnover Ratio](/nerve-centre/kpi-cards/sage/inventory-turnover-ratio) to confirm.
5. **Pair with [Dead Stock with Active Ad Spend](/nerve-centre/kpi-cards/sage/dead-stock-with-active-ad-spend) and check whether any of this amber cohort is being advertised into the ground.** Slow-moving stock that is receiving paid traffic but still not selling is a worse signal than slow-moving stock with no marketing behind it, because it means the product is being shown to customers and they are declining to buy. On this account three Brand Delta accessory SKUs had active Google Ads spend through the wholesale portal and zero sell-through despite the impressions, which told the merchandiser the problem was the product or the price, not the visibility. That is a cross-channel finding neither Intacct nor Google Ads can produce alone.

## Sibling cards merchants should reference together

| Card                                                                                            | Why pair it with Slow-Moving Inventory (>90d)                                                   |
| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| [Dead Stock Value](/nerve-centre/kpi-cards/sage/dead-stock-value)                               | The next stage down. This card is the cohort you can still save before it becomes that one.     |
| [Inventory Aging](/nerve-centre/kpi-cards/sage/inventory-aging)                                 | The full aging-bucket breakdown. This card is the 90-to-180 band of it.                         |
| [Inventory Turnover Ratio](/nerve-centre/kpi-cards/sage/inventory-turnover-ratio)               | Rising slow-moving value usually shows up as falling turnover first.                            |
| [Sage Total Inventory Value](/nerve-centre/kpi-cards/sage/sage-total-inventory-value)           | The denominator. This card is most useful read as a percentage of the total.                    |
| [Sage Inventory Carrying Cost](/nerve-centre/kpi-cards/sage/sage-inventory-carrying-cost)       | The annual expense of holding the amber cohort while you work it down.                          |
| [Dead Stock with Active Ad Spend](/nerve-centre/kpi-cards/sage/dead-stock-with-active-ad-spend) | Slow-moving stock receiving paid traffic and still not selling is a product or price problem.   |
| [Margin by SKU](/nerve-centre/kpi-cards/sage/margin-by-sku)                                     | Tells you how much room you have to discount the slow-movers before margin goes negative.       |
| [Low Stock Alerts](/nerve-centre/kpi-cards/sage/low-stock-alerts)                               | The opposite signal. The healthy half of the catalogue is what you want most SKUs to look like. |

## Reconciling against Sage

**Where to look in Sage Intacct:**

The native Sage Intacct views to run side by side with this card:

> **Reports → Inventory Control → Slow-Moving Items Report** (the closest native equivalent, default 90-day threshold at intacct.com)
> **Reports → Inventory Control → Inventory Aging Report** (the 90-to-180 bucket is this card's population)
> **Reports → Inventory Control → Item Stock Status** (real-time on-hand by Warehouse, with last-movement stamp)
> **Reports → Inventory Control → Item Demand Plan** (forward demand signal that tells you whether the slow-down is temporary or structural)
> **Interactive Custom Report (ICR)** built on the Inventory data source filtered to `QuantityOnHand > 0 AND MAX(LastSaleDate) BETWEEN TODAY-180 AND TODAY-90`, summed on `QuantityOnHand × UnitCost`, pivoted by Class and Vendor dimensions

The key difference between this card and Intacct's native Slow-Moving Items Report is the bounded band. Intacct's report is open-ended below its threshold (everything slower than 90 days, including dead stock). This card cuts a window (90 to 180 days) so it is mutually exclusive with the dead-stock card and represents only the savable amber cohort. Expect Intacct's Slow-Moving report to read higher than this card because it includes the dead cohort that this card deliberately excludes.

Common reconciliation pitfalls:

* **Open-ended vs banded.** Intacct's Slow-Moving report counts everything dormant beyond 90 days, including the 180+ dead cohort. This card stops at the dead threshold. The two cards together (slow-moving plus dead) should approximate the open-ended Intacct figure.
* **Last-sale vs last-receipt date.** Returns-to-stock refresh the receipt date and can move the population by 15-25% if last-receipt is the basis. Most merchants use last-sale for this card precisely so a return does not reset the velocity clock.
* **Class and seasonal carve-outs.** A seasonal Class may sit in the amber band every off-season by design. Tag it with a custom field so it does not trigger the alert during its normal dormant window.

**Why our number may legitimately differ from a Sage Intacct Slow-Moving Items Report:**

| Reason                          | Direction          | Why                                                                                                                                          |
| ------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
| **Banded vs open-ended window** | Card reads lower   | Card cuts 90-to-180; Intacct's report includes the 180+ dead cohort. Add this card to the dead-stock card to approximate the Intacct figure. |
| **Threshold definition**        | Either             | 90 vs 60 vs 120 day lower bound. Card defaults to 90; some categories tighten or relax.                                                      |
| **Last-sale vs last-receipt**   | Either             | Returns-to-stock refresh receipt date. Card defaults to last-sale; field map can switch.                                                     |
| **Sale event definition**       | Either             | Card counts an Order line as activity; some accounts count only Invoiced Orders, which moves Pending Billing items into the dormant band.    |
| **Assembly consumption**        | Card may overstate | A component consumed into an Assembly that sells looks dormant at line level but is moving at parent level. Field map can roll up.           |
| **Seasonal carve-outs**         | Card may overstate | Off-season seasonal stock sits in the band by design. Tag with a custom field to suppress during the normal dormant window.                  |
| **Costing method change**       | Card may shift     | Toggling `COSTMETHOD` (Average to Standard) recomputes the dollar value; the SKU population is unchanged.                                    |
| **FX cadence per entity**       | Small              | Multi-Entity Console: card uses current-day FX, Intacct reports may use period-end. Usually under 2%.                                        |

**Cross-connector reconciliation:**

| Card                                                                                            | Expected relationship       | What the comparison reveals                                                                                                                                               |
| ----------------------------------------------------------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [shopify.inventory\_value](/nerve-centre/shopify/inventory_value)                               | Different definition        | Shopify shows total catalogue inventory; this card shows the dormant subset across all channels. The gap reveals slow-moving stock sitting outside the Shopify catalogue. |
| [bigcommerce.inventory\_value](/nerve-centre/bigcommerce/inventory_value)                       | Different definition        | Same dynamic. BigCommerce sees only its own catalogue.                                                                                                                    |
| [adobe\_commerce.inventory\_value](/nerve-centre/adobe_commerce/inventory_value)                | Different definition        | Adobe Commerce Multi-Source Inventory rarely produces the dormant-cohort cut natively.                                                                                    |
| [Dead Stock with Active Ad Spend](/nerve-centre/kpi-cards/sage/dead-stock-with-active-ad-spend) | Early-warning cross-channel | Slow-moving stock receiving paid traffic and still not selling is a product or price problem, surfaced before it ages into dead.                                          |
| [Inventory Turnover Ratio](/nerve-centre/kpi-cards/sage/inventory-turnover-ratio)               | Leading indicator           | Falling turnover is the early signal; rising slow-moving value is the confirmation.                                                                                       |
| [Sage Inventory Carrying Cost](/nerve-centre/kpi-cards/sage/sage-inventory-carrying-cost)       | Multiplicative              | Slow-moving value times the carrying-cost rate is the silent expense of holding the amber cohort while you work it down.                                                  |

The cross-channel value of this card is timing. Sage Intacct is the only system that knows a SKU has been quiet for 100 days, because the commerce platforms only see what sold, not what has gone quiet. Catching a SKU in the amber band, while it still has current-season recovery value and active merchandising options, is worth far more than catching it once it is dead. A merchant working only the dead-stock card is always acting too late; the slow-moving card is where the cheap wins are. This is frequently where a Vortex IQ Implementation Partner demonstrates first-quarter value: turning the amber cohort over before it becomes a write-down.

## Known limitations / merchant FAQs

**Why does this card not appear in my dashboard?**
The card requires the Sage Intacct Inventory Control module. Sage Accounting and standard Sage 50 / 200 do not maintain a perpetual inventory ledger, so there is no on-hand position to age. The card hides itself for those merchants rather than showing a misleading zero.

**How is this different from Dead Stock Value?**
Dead Stock Value is the hard-cut bad cohort (zero sales beyond the dead threshold, usually 180 days) that needs a finance decision: liquidate, donate, or write down. This card is the amber cohort just before that line (90 days to the dead threshold) that still has merchandising options: promote, bundle, reallocate, re-price. The two cards are mutually exclusive by design so a SKU never appears on both.

**Why is the alert a percentage and not a dollar figure?**
Because slow-moving value scales with the size of the business. A $520K amber cohort is alarming for a $10M business and unremarkable for a \$200M one. Expressing the alert as a percentage of total inventory value makes it comparable across time and across entities, and stops the alert from firing simply because the business grew.

**A new launch is showing on this card, is that a problem?**
It depends on the days-since-last-sale read against the launch date. A recent launch sitting at 100 days quiet means the launch under-performed, which calls for marketing and merchandising attention, not discounting. Discounting a fresh launch trains customers to wait for markdowns. Read the launch date alongside the dormancy before deciding the response.

**Should I discount everything on this list?**
No. The right response varies by why the SKU slowed down. Seasonal carryover wants an end-of-season clearance. An under-performing launch wants better marketing. A core-range SKU that quietly stalled may want a price test or a homepage feature. Blanket discounting destroys margin and trains the customer base to wait. Use the Class and Vendor pivots to segment the response.

**Does a return reset the clock?**
Returned-to-stock SKUs refresh the receipt date. Most accounts use last-sale rather than last-receipt for this card precisely so a return does not mask a SKU that is not actually selling. Check the field map; last-sale is the safer setting for velocity tracking.

**How does seasonal stock interact with this card?**
Seasonal SKUs sit in the amber band every off-season by design and would trigger the alert during their normal dormant window. Tag the seasonal Class with a custom field (`is_seasonal = true`) so the card suppresses it during the expected quiet period and only flags it if it is still dormant once the season returns.

**Multi-currency, how does FX affect it?**
Each entity's slow-moving value is held in base currency and summed at reporting FX. Daily FX moves the headline dollar but does not change the SKU population. Read the per-entity cut alongside the consolidated cut so an FX move on remote-entity stock does not look like a sudden change in the amber cohort.

**What is the relationship to turnover ratio?**
Falling turnover is usually the leading indicator and rising slow-moving value is the confirmation. If turnover has dropped over two quarters and this card has climbed in lockstep, the root cause is upstream in purchasing (over-ordering relative to sell-through) rather than downstream in merchandising. Read the two together to locate the cause.

**Implementation Partner role on this metric?**
The Partner usually owns the Inventory Control configuration, the aging-band policy, and the seasonal carve-out tagging. If this card disagrees with the Partner's slow-moving report, the cause is almost always the banded-vs-open-ended difference (this card stops at the dead line; the native report does not) or a last-sale vs last-receipt policy difference. Align in the field map and bring the Partner in early.

***

### Tracked live in Vortex IQ Nerve Centre

*Slow-Moving Inventory (>90d)* is one of hundreds of KPI pulses Vortex IQ tracks across Sage 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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
