Inventory value bucketed by days-on-hand. Aged stock is cash trapped on the floor.
At a glance
On-hand inventory bucketed by Item Ledger Entry receipt date. Bars: 0-30D, 31-60D, 61-90D, 91-180D, 181-365D, 365D+. Aged stock is cash trapped on the floor.
| What it counts | Aging buckets of on-hand inventory by Posting Date of the originating Item Ledger Entry (the date stock was received). Each bucket carries unit count and dollar value at landed cost. |
| Aging start date | Item Ledger Entry.Posting Date of the Receipt entry. For FIFO Items, the original receipt date of the layer still on hand. For Average-cost Items, weighted average date of contributing receipts. |
| Stock excluded | In-Transit (configurable), Quarantined, Reserved (configurable). |
| Currency | Multi-Company: each Company’s bucket value translated to Reporting Currency at current rate. |
| Aging cohort vs FIFO layer | The card uses FIFO layer date for FIFO-costed Items. Average-cost Items use weighted average across contributing receipts; this is an approximation but close to economic reality. |
| Power BI complementarity | Power BI’s Inventory Performance pack does not include an aging buckets tile by default. This card fills that gap. |
| Time window | RT (real-time snapshot) |
| Alert trigger | >15% in 180+ bucket (signal: ageing inventory crossing the standard write-down threshold) |
| Sentiment key | inv_aging |
| Roles | owner, finance, operations |
Calculation
Calculated automatically from your Microsoft Dynamics 365 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 UK omnichannel apparel brand on Business Central, single Company GBP. Snapshot 14 Apr 26.| Aging bucket | Inventory value (GBP) | % of total | Action |
|---|---|---|---|
| 0-30 days | £842,000 | 32% | Healthy, fresh stock |
| 31-60 days | £620,000 | 24% | Healthy |
| 61-90 days | £470,000 | 18% | Watch, season-end approaching |
| 91-180 days | £390,000 | 15% | Markdown candidate |
| 181-365 days | £220,000 | 8% | Clearance / write-down |
| 365 days+ | £80,000 | 3% | Write-off / dispose |
| Total | £2,622,000 | 100% |
- 23% of inventory is over 90 days old. For apparel (seasonal), 90 days is the markdown threshold. £610K is at risk of margin compression. The merchant should be running clearance promotions on these SKUs now, not next month.
- The 181-365D bucket (£220K, 8%) is the dead-stock candidate. Pair with Dead Stock Value which uses zero-velocity (no sales in 90+ days) as the criterion. Aging and zero-velocity overlap heavily but not perfectly.
- 365D+ bucket (£80K) is auditor-write-down material. UK accounting standards (FRS 102 / IFRS) require provisions on inventory expected to be sold below cost. A 365D+ apparel SKU rarely sells at full price. The Controller should be booking a Provision for Inventory Write-down at fiscal year-end.
- The alert (>15% in 180+ bucket) fires at 11% (8% + 3%). Not yet over the threshold, but trending towards it. The Vortex IQ trendline shows the 180+ bucket has grown from 7% to 11% over 6 months.
- Cross-connector finding (the kill-shot): of the £610K aged > 90D, £128K of those SKUs are still receiving Google + Meta ad spend. See Dead Stock with Active Ad Spend for the pause list.
Sibling cards merchants should reference together
| Card | Why pair it with Inventory Aging |
|---|---|
| Total Inventory Value | The denominator across all buckets. |
| Dead Stock Value | Different lens: zero-velocity vs aging. Most aged stock is dead, but not all. |
| Top SKUs by Inventory Value | Which SKUs concentrate the aged buckets. |
| Margin by SKU | Aged SKUs often have compressed margins from markdowns. |
| Dead Stock with Active Ad Spend | Cross-connector kill-shot: aged stock you are still advertising. |
| Inventory Carrying Cost | The annualised cost of holding the aged buckets. |
| Dead Stock Threshold Breach | Alert fires when 180D+ bucket crosses threshold. |
Reconciling against the vendor’s own dashboard
Where to look in Business Central:Reports > Inventory > Inventory Aging (the closest native equivalent) Reports > Inventory > Item Age Composition (Value or Quantity variant) Item List > drill to Item Ledger Entries with date filter Power BI > Inventory Performance > add aging bucket calculation manuallyThe Item Age Composition report renders the same buckets when run for the same Locations. Date-bucket boundaries differ slightly between BC’s defaults (30 / 60 / 90 / 180 / 365) and the card; ensure the report is run with matching periods. Why our number may legitimately differ from BC’s reports:
| Reason | Direction | Why |
|---|---|---|
| FIFO vs Average aging | Either | The card uses FIFO layer date for FIFO Items; Average uses weighted-average date. BC’s Item Age Composition uses the same logic but the reporting bucket boundaries can differ. |
| In-Transit treatment | Either | Card includes by default; some merchants exclude. |
| Reservation handling | None | Reserved stock still counts as on-hand. |
| OData freshness | Card up to 15 min behind | Item Ledger Entries appear via OData within 15 minutes. |
| Multi-Company aggregation | Card materially higher | Card consolidates; BC’s report runs per-Company. |
| Card | Direction | Notes |
|---|---|---|
| google_ads.adwords_total_spend | Cross-channel kill-shot | Aged SKUs with active ad spend. The most actionable finding any apparel merchant gets. See Dead Stock with Active Ad Spend. |
| shopify.collection_aging | Different lens | Shopify’s collection-level aging is sales-velocity-based, not receipt-date-based. Different metric. |