Skip to main content
Card class: Card
Estimated cost of holding aged inventory. Joined with commerce sell-through to flag dead stock with cash impact.

At a glance

Estimated cost of holding inventory across the period. The “real expense” of having stock on the floor: storage + insurance + cost of capital + obsolescence risk + shrinkage.
What it countsTotal Inventory Value × Carrying Cost Rate × (Days ÷ 365). Default carrying-cost rate is 25% per year (industry standard). Configurable per workspace.
Carrying cost rateComposed of: Cost of capital (8-15%), Storage (2-5%), Insurance (1-2%), Obsolescence (3-5%), Shrinkage (1-3%). Total typically 18-32%.
Tax treatmentn/a.
CurrencyReporting currency.
Subsidiary scopeRespects dashboard filter.
Time window30D (period expense view)
Alert triggerNone at headline; informational. Some workspaces set “rising YoY >20%“
Rolesowner, finance

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 apparel distributor on NetSuite OneWorld. Three subsidiaries: a US parent (USD), a UK distribution sub (GBP), and a Canadian sub (CAD). Annual revenue ~$80M. 30-day window 14 Mar 26 to 12 Apr 26. Reporting currency USD.
ComponentRate30-day expense (USD)
Total inventory valuen/a$28,630,000 (avg)
Cost of capital (12%)12%$282,290
Storage / warehouse4%$94,100
Insurance2%$47,050
Obsolescence reserve4%$94,100
Shrinkage2%$47,050
Total Carrying Cost (this card)24%$564,590
Annualised$6,875,000
Five things to notice:
  1. 565KpermonthisthesilentexpensemostCFOsunderestimate,andat24565K per month is the silent expense most CFOs underestimate, and at 24% of 28.6M average inventory it annualises to $6.875M. That is roughly the operating budget of the merchandising team plus the buying team plus the warehouse manager combined. The reason most boards never see this number is that it is not a single GL line; it is a composite of warehouse rent (booked to OpEx), insurance premiums (booked to OpEx), opportunity cost of capital (not booked at all), obsolescence reserves (booked to inventory write-downs), and shrinkage (booked to COGS adjustments). The card consolidates them into the one number a CFO actually wants for the inventory-discipline conversation. Surfacing it weekly turns it from a year-end discovery into a weekly operational lever.
  2. **Reducing inventory by 5Mfrom5M from 28.6M to 23.6Msavesroughly23.6M saves roughly 100K per month, 1.2Mannualised,incarryingcostalone.Thatisthefinancialcaseforinventorydisciplineexpressedasanumberanyonecangrasp.Thecorollary:anydecisionto"buyaheadtolockinpricing"or"stockupforaquarterlysale"shouldbeevaluatedagainstthecarryingcostburdenoftheadditionalstock.A51.2M annualised, in carrying cost alone.** That is the financial case for inventory discipline expressed as a number anyone can grasp. The corollary: any decision to "buy ahead to lock in pricing" or "stock up for a quarterly sale" should be evaluated against the carrying-cost burden of the additional stock. A 5% bulk-buy discount on 5M of additional inventory saves 250Kupfront;thecarryingcostofholdingthatstockforayearis250K up front; the carrying cost of holding that stock for a year is 1.2M. The bulk buy loses by 4-5x. The card surfaces this trade-off; without it, the buying team makes lock-in decisions on margin alone and the carrying cost is invisible.
  3. The 24% rate is conservative; wholesale apparel typically runs 25-32% because of obsolescence (fashion) while industrial distribution might run 18-22% and food and beverage might run 28-35% (perishability). Tune via field map per workspace and per category. The single biggest variable is obsolescence: fashion-driven categories load 5-8% obsolescence reserves into the rate, while commodity-grade industrial parts load 1-2%. The card defaults to 24% because that is the median across mid-market commerce; the right rate for your business is the weighted average across categories you carry.
  4. Pair with Dead Stock Value: 1.6Mdeadstockat241.6M dead stock at 24% equals 384K annual carrying cost on items that are not selling, which is pure waste. The cross-channel finding intensifies this: the dead-stock cohort that still has active ad spend on it costs not just 384Kofcarryingexpensebutanadditional384K of carrying expense but an additional 180K of wasted ad budget per year (on this account). Total annual waste from a single misalignment between inventory and ad-spend systems: $564K. That is one finding, surfaced by joining NetSuite carrying-cost data to the dead-stock cohort to the Google Ads campaign data, which no individual platform can produce alone. The cross-connector graph is the value, not any single card.
  5. Cost of capital is the biggest lever and the most commonly mis-set rate. If your business borrows at 8% on a revolving credit line, drop the rate to 8%; if you have surplus cash earning 5%, the opportunity cost is 5%; if you are venture-funded and the next round priced at 25% effective dilution cost, the rate is closer to 18-22%. The default 12% is a reasonable middle ground for a profitable mid-market business with a working-capital line, but it is wrong for both ends of the spectrum. Cash-rich businesses overstate their carrying cost (and miss the opportunity to over-invest in working capital efficiency); leveraged businesses understate it (and miss the urgency of inventory turnover). On a OneWorld account, the cost-of-capital rate can also differ by subsidiary: a US parent on a 6% credit line and a UK sub on a 9% line should ideally use sub-specific rates rather than a consolidated single rate. The field map supports per-sub overrides for OneWorld accounts.

Sibling cards merchants should reference together

CardWhy pair it with Inventory Carrying Cost
Total Inventory ValueThe base.
Dead Stock ValueThe bad-stock subset; carrying cost on this is pure waste.
Inventory AgingAging buckets show where carrying cost concentrates.
Inventory TurnoverTurn rate is inverse of carrying-cost share.
Gross Margin %Carrying cost not in COGS but pressures net margin.

Reconciling against the vendor’s own dashboard

Where to look in NetSuite: NetSuite does not expose a Carrying Cost report. The card derives from Inventory Valuation multiplied by the workspace-configured rate. Most accounts compute this manually for board presentations once a year and never again, which is why most boards see it as a static number rather than a weekly operational lever. The closest native views to triangulate against:
Reports → Inventory → Inventory Valuation Summary (the inventory base, the largest input) Reports → Financial → Income Statement (warehouse rent, insurance premiums, write-down lines all live here, scattered across OpEx and COGS adjustments) Reports → Inventory → Inventory Valuation by Subsidiary (for OneWorld; per-sub base values, important when capital costs differ by sub) Saved search: Item-level Item.AverageCost × Item.QuantityOnHand aggregated, intersected with the workspace carrying-cost rate (this is essentially what the card does) SuiteAnalytics workbook: a small subset of accounts maintain a “Carrying Cost Estimate” workbook that is the manual equivalent of this card; it is rare because the rate inputs are not natively in NetSuite and have to be entered by the user
The headline difference between this card and what a CFO would compute on a spreadsheet is that this card does it weekly with current data; the CFO’s spreadsheet usually does it quarterly with last-quarter’s snapshot. Common reconciliation pitfalls when comparing against a manual CFO calculation:
  • The CFO’s spreadsheet typically uses the period-end Balance Sheet inventory value; this card uses the period-average across the window. For a stable inventory base the difference is trivial; for a business adding or drawing inventory mid-period it can shift the headline by 5-10%.
  • CFO calculations sometimes book real expenses (warehouse rent, insurance, interest paid) directly to carrying cost rather than applying a rate to inventory base. That approach computes the actual booked expense; this card estimates the full economic cost including opportunity cost of capital, which is not a booked expense. Expect the card to read 25-50% higher than a “actual booked expenses” calculation, with the gap being opportunity cost.
  • Multi-warehouse and multi-location: if your business has 3 warehouses with different rent rates, a single workspace-level storage rate is an average. The field map supports per-location rate overrides if precision matters, but most workspaces accept the average.
Why our number may legitimately differ from a CFO’s manual calculation:
ReasonDirectionWhy
Carrying-cost rateEitherDefault 24%; CFOs use 20-32% depending on industry, capital structure, and reporting policy. The card lets each workspace override; mismatch usually means workspace rate has not been tuned.
Storage rateEitherIf you own warehouses, storage cost is fixed (rent, depreciation, utilities, payroll); if you use a 3PL, it is variable per pallet or per cube. The default 4% is industry-average; owners with low-cost owned facilities can be at 2-3%, 3PL-heavy businesses can be at 5-7%.
Cost of capitalEitherShould reflect actual cost of debt (revolver rate, term loan rate, asset-based lending rate) or opportunity cost of cash (treasury yield, money-market rate, investment alternative). The default 12% is a reasonable middle for a mid-market profitable business; tune for your capital stack.
InsuranceSmallThe default 2% is industry-average. Cargo and warehouse insurance premiums are typically 0.5-1.5% of inventory value annually but the card includes liability and casualty allocations, pushing to 2%. Tune from your actual policies.
Obsolescence reserve rateEitherThe default 4% is fashion-apparel-typical. Commodity goods can be 1-2%, fashion or technology can be 6-10%. The right rate is the historical write-down rate over a multi-year window; one-off events (pandemic-era write-downs) should not anchor the rate.
ShrinkageEitherThe default 2% is retail-warehouse-typical. Higher for high-theft categories (electronics, cosmetics), lower for low-theft (industrial bulk). Audit-grade shrinkage data lives in NetSuite Inventory Adjustments; this card uses the workspace rate, not the actual booked figure.
Inventory base period choiceEitherCard uses period-average; CFO calculations may use period-end. Differences depend on inventory volatility within the period.
Inter-co inventoryCard may overstateOn OneWorld, inter-co inventory in transit (one sub shipped, other sub not yet received) can be on both subsidiary Balance Sheets briefly. The consolidated card uses post-elimination values; per-sub views may double-count for 1-3 days.
FX cadenceSmallPer-subsidiary inventory translated at current FX. Quarter-over-quarter comparisons need a consistent FX cadence to avoid spurious moves.
Cross-connector reconciliation, the killer cross-channel finding: This is where Inventory Carrying Cost transforms from a static budgeting metric into an operational kill-shot. No single platform can produce the carrying-cost-of-dead-stock-with-active-ad-spend finding alone; it requires four connectors joined.
CardExpected relationshipWhat the comparison reveals
Dead Stock ValueMultiplicativeDead stock value times the carrying-cost rate equals the silent annual expense of zero-velocity inventory. On a 1.6Mdeadstockcohortat241.6M dead-stock cohort at 24% rate, that is 384K of pure annual waste.
Inventory AgingMultiplicative per bucketEach aging bucket carries its own implicit carrying cost. The 91-180 bucket on this account is 3.92Mtimes243.92M times 24% equals 940K annualised, which is the working-capital case for either accelerating sell-through or carving back orders.
google_ads.cost per-SKUCompoundingCarrying cost on a SKU plus active ad spend on the same SKU is double-waste. The Dead Stock with Active Ad Spend cross-channel card joins NetSuite inventory data to Google Ads campaign data; multiplying the dead-cohort by the carrying-cost rate gives the carrying side of the waste, the ad spend gives the marketing side, and the sum is the total annual leakage.
facebook_ads.spend per-productCompoundingSame dynamic for Meta. DTC brands typically have wider Facebook spend on dead inventory than wholesale brands, because Facebook ad sets pull in long-tail SKUs that the merchandising team has forgotten exist.
shopify.inventory_valueSubsetShopify-synced subset of the NetSuite total. Carrying cost on Shopify-only stock is a slice of the total; the difference (NetSuite total minus Shopify-synced) is the wholesale and marketplace stock carrying cost, which the merchandising team rarely considers.
bigcommerce.inventory_valueSubsetSame.
adobe_commerce.inventory_valueSubsetSame. Adobe Commerce Multi-Source Inventory may show a wider slice than Shopify or BC.
Cash CollectedWorking capital frameInventory tied up = cash not collected. The DSO conversation pairs with the carrying-cost conversation: how much cash is locked in stock versus locked in receivables.
DSOWorking capital frameCompanion working-capital metric. Together with carrying cost they decompose the working-capital cycle into “cash stuck in inventory” and “cash stuck in receivables”, which are the two levers a Controller actually has.
The killer cross-channel finding for the AI OS positioning is that on most mid-market commerce accounts, somewhere between 6% and 12% of total carrying cost is sitting on dead inventory that is also receiving paid traffic. That is the intersection that no single connector can produce. NetSuite alone cannot see ad spend; ad platforms alone cannot see inventory aging or carrying cost. Vortex IQ joins the four connectors and surfaces the intersection as a single dollar number per quarter. On a typical 80Mappareldistributorthatnumberis80M apparel distributor that number is 400-600K of avoidable annual waste, which is the size of an inventory analyst hire times three. The card pays for the entire connector subscription stack many times over on a single recurring finding.

Known limitations / merchant FAQs

Why is carrying cost not in COGS? GAAP and IFRS treat carrying cost as period expense, not product cost (with narrow exceptions for capitalised storage in specific cases like wine ageing or long-cycle manufacturing WIP). It hits OpEx (warehousing, insurance) and finance lines (interest expense, depreciation of warehouse assets), not COGS. The card respects this convention so the headline matches the audited Income Statement structure. For “true product margin including carrying cost”, build a separate contribution-margin view that loads carrying cost back per-SKU; the Cross-Channel Contribution Margin card does this explicitly. Should I tune the rate? Yes, and the conversation should happen quarterly. Default 24% is industry-average for mid-market commerce. Your actual rate depends on: (1) cost of capital (revolver rate, term-loan rate, opportunity cost of cash), (2) lease cost or owned-warehouse depreciation, (3) insurance premiums (cargo, casualty, liability), (4) obsolescence policy (the historical write-down rate over multiple years), (5) shrinkage history (theft, damage, miscount). The rate inputs should come from the CFO and the warehouse manager; the field map captures them. The single biggest rate-tuning mistake is using a generic textbook rate (often 25%) when your actual capital structure suggests 18% or 32%. How does this differ from carrying cost on the Income Statement? NetSuite’s Income Statement shows actual booked expenses (warehouse rent paid, insurance premiums paid, interest on inventory-backed loans, depreciation of warehouse assets). The card estimates the full economic carrying cost including opportunity cost of capital (which is not a booked expense, because GAAP does not recognise opportunity cost). Expect the card to read 25-50% higher than the Income Statement’s actual booked total, with the gap being the opportunity-cost component. For boardroom discussions of capital efficiency, the full economic number is the right framing; for tax filings and audited statements, the Income Statement number is the right framing. They answer different questions. Multi-currency, FX impact? Inventory base translated to reporting currency at the cadence of the dashboard filter (current FX or period-average), then multiplied by the rate. FX shifts the value of remote-sub inventory but does not change the rate, so consolidated carrying cost moves proportionally with FX. For a OneWorld account with significant remote-sub inventory, this means a weakening base currency makes the consolidated carrying cost number rise even if no operational change occurred. The fix is to overlay a per-sub view alongside the consolidated number. Does it inform write-down decisions? Yes, and this is one of the cleanest decision frames the card produces. If a SKU’s annual carrying cost exceeds its expected liquidation recovery, you are better off writing it down today and disposing rather than holding. Worked example: a SKU with 80Kofdeadinventoryat2480K of dead inventory at 24% carrying cost burns 19K per year of carrying expense. If liquidation channels recover 30 cents on the dollar ($24K), the formal answer is liquidate now, because in 13 months of carrying you have spent more than the entire recovery value. The card surfaces the math; the auditor signs the write-down. Single-subsidiary vs OneWorld behaviour? Identical formula. OneWorld scopes across subsidiaries; per-sub views are essential because cost-of-capital often differs by sub (a US parent on a 6% revolver and a UK sub on a 9% local credit line should not share a single rate). The field map supports per-sub rate overrides for OneWorld accounts. The most useful operational pattern is a consolidated rate for board reporting plus per-sub rates for operational decisions. Subscription and SaaS-adjacent businesses, do they have this? Less applicable. Carrying cost is a physical-inventory metric. Software and SaaS businesses have no inventory in the GAAP sense; their working capital lives in deferred revenue, AR, and prepaid expenses, not on a warehouse floor. Hybrid businesses (a SaaS-adjacent commerce platform that ships physical kits as part of subscriptions, e.g. a meal-kit subscription, a coffee club, a beauty box) carry physical inventory and the card applies. The subscription dynamics affect demand forecasting (which feeds inventory levels) but not the carrying-cost calculation itself. B2B vs DTC, do I read this card differently? Yes. B2B distribution typically carries higher absolute inventory levels (longer cycles, customer-allocated stock, safety stock for slow-replen accounts) but at lower turn rates, so carrying cost as a percentage of revenue is higher. DTC carries lower absolute inventory but at higher turn rates, so carrying cost as a percentage of revenue is lower but the dollar burden per slow-moving SKU is high because DTC margins are tighter. A B2B distributor at 5% carrying-cost-of-revenue is normal; a DTC retailer at 3% is normal; both are uncomfortable above 7%. Pair with Inventory Turnover to see if carrying cost is rising because inventory is rising or because turns are slowing. OneWorld multi-subsidiary, intercompany transfers and carrying cost? Inter-co transfers shift inventory between subs but do not change consolidated carrying cost (the inventory still belongs to the group, the rate still applies). At per-sub level, the carrying cost shifts: the sub that received the transfer now carries it, and the sub that sent it stops carrying it. If transfer pricing inflates the inter-co transfer value above true cost, per-sub carrying cost on the receiving sub overstates economic reality. The consolidated card eliminates this; per-sub views can mislead. Confirm with the tax team how transfer pricing is set before reading per-sub carrying cost as an operational signal. ASC 606 deferred revenue, does it touch this card? No. Carrying cost is a function of inventory base (Balance Sheet) and the workspace rate, not of revenue recognition. ASC 606 governs revenue timing and does not change inventory measurement or holding cost. The card is independent of recognition policy. FX revaluation timing, does it move this card? Yes. NetSuite’s monthly FX revaluation revalues remote-subsidiary inventory at the period-end exchange rate, which moves the consolidated dollar inventory base and therefore the carrying-cost dollar headline. The rate stays constant; the base moves. For comparing two periods, lock the FX cadence (period-average or period-end, consistently) to avoid spurious moves. Most boards prefer period-average for inventory-related metrics because it smooths intra-period FX volatility. NetSuite vs Oracle ERP Cloud / SAP S/4HANA on this metric? NetSuite does not natively expose carrying cost; this is one of the gaps Vortex IQ fills. Oracle ERP Cloud has a Carrying Cost Analysis under Inventory Management that approximates the calculation but does not load opportunity cost of capital by default; the user must configure a separate rate. SAP S/4HANA exposes carrying cost through Material Ledger and the Inventory Cost Estimate functions, which are powerful but require Material Ledger licensing and a controlling-module setup. For mid-market commerce (30150Mrevenue)theNetSuiteplusVortexIQstackismateriallyfastertomaintainthanconfiguringSAPMaterialLedger;for30-150M revenue) the NetSuite plus Vortex IQ stack is materially faster to maintain than configuring SAP Material Ledger; for 250M+ businesses with manufacturing-heavy operations and Material Ledger already running, Vortex IQ adds the cross-channel ad-spend join that even a fully configured Material Ledger cannot deliver natively. Magento / Adobe Commerce specifics, can I run this off Adobe data? No. Adobe Commerce / Magento does not track inventory cost basis with the rigour required for carrying-cost calculation; cost is a single static attribute, not a moving average or FIFO cohort. NetSuite (or Oracle / SAP) is the correct source. Adobe Commerce contributes the storefront-side data for the cross-channel join (visible inventory, advertised SKUs, on-sale flags) but the carrying-cost calculation itself runs off NetSuite. Vendor-managed inventory (VMI), does it carry? Depends on title. If the supplier holds title until consumption (true VMI), the stock is not on the merchant’s Balance Sheet and the merchant does not bear carrying cost. If the merchant holds title from receipt (consigned-in or VMI-with-title-passing), the merchant bears carrying cost. Confirm with your auditor and contract terms; the field map respects whichever convention is set up. Misclassifying VMI as owned inventory is one of the most common reasons a CFO’s manual carrying-cost calculation overstates by 10-20% on accounts with significant VMI relationships. Does the card work on a fiscal-year boundary? Yes. The default time window is 30D and the card aggregates within that window. For year-end board prep, run the card with a 365D window to get the annualised number directly; the 30D-times-12 extrapolation is close but not exact when inventory base swings seasonally. Most apparel businesses have inventory peaks twice a year (spring buy, fall buy), so the annualised number computed from a 30D snapshot can over- or under-state by 8-15% depending on the snapshot date.

Tracked live in Vortex IQ Nerve Centre

Inventory Carrying Cost 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.