Inventory

Inventory Carrying Cost: How Shopify Merchants Calculate It and Cut It

Inventory carrying cost is the annual expense of holding unsold stock, shown as a percentage of inventory value. For a Shopify merchant, it is rent, insurance, markdowns, and frozen cash sitting on units that have not sold yet.

APQC reports a median of 10.0% of inventory value across 6,468 companies. Your rate can sit higher if you finance inventory, pay 3PL storage by the bin, or keep long cover on slow SKUs.

Shopify does not publish a carrying-cost figure in its default inventory reports. You build the number from cost per item, month-end inventory value, and the four cost buckets below. Then you rank SKUs and change cover days before the next purchase order.

What inventory carrying cost is

Inventory carrying cost (also called holding cost) is what you spend to keep goods after you have already paid the supplier. The purchase price is inventory acquisition cost, an asset on the books until the unit sells. It becomes cost of goods sold only at sale. Neither the unsold acquisition cost nor COGS is carrying cost, so do not drop inventory cost from the balance sheet or book it as an expense just because you are measuring holding cost. Carrying cost starts the day units become available and continues until they sell, get written down, or get thrown out.

A 400-unit leftover colorway at the 3PL looks harmless on a sales dashboard. It still occupies a bin, raises insured value, and locks cash you could use for ads or the next bestseller reorder. The longer it sits, the more the percentage climbs.

U.S. retailers held 1.25 months of sales in inventory at the end of June 2026, according to the Census Bureau series published by FRED. That is an industry snapshot, not a target for your catalog. A Shopify store with long import lead times will run more cover than a domestic restock brand. Track your own inventory-to-sales ratio so you know whether stock is growing faster than demand.

The inventory carrying cost formula

Use one year of costs and average inventory value at cost, not retail price.

Inventory carrying cost (%) = (Total annual carrying costs / Average inventory value) x 100

Average inventory value is (beginning value + ending value) / 2. If you have monthly snapshots, average those 12 month-end figures instead. In Shopify, the Month-end inventory value report multiplies ending available quantity by cost per item. Available excludes committed units on open orders and incoming units on transfers.

How to assemble the inputs

  1. Enter a cost per item on every tracked variant so inventory value is not blank or priced at retail.
  2. Export Month-end inventory value for the last 12 months and average the totals.
  3. Add one year of capital, storage, service, and risk costs (the four buckets below).
  4. Divide total carrying costs by average inventory value and multiply by 100.
  5. Repeat the same math on the 20 SKUs with the highest inventory value, not only the store total.

A store-wide percentage hides the problem. Two SKUs can share a 14% store rate while one turns in 30 days and the other has nine months of cover. SKU math tells you which PO to cut.

Calculate carrying cost for a Shopify SKU

This example is a mid-price apparel variant sitting at a 3PL. Numbers are illustrative so you can copy the layout with your own invoices.

  • On-hand units: 400
  • Cost per item: $18
  • Inventory value: $7,200
  • Sales velocity: 2 units per day over the last 28 days
  • Days of cover: 200
Cost bucketWhat you includeAnnual amount
Capital$7,200 x 12% opportunity or loan rate$864
StorageAllocated 3PL bin, inbound, and handling$480
ServiceShare of insurance, inventory software, cycle-count labor$216
RiskExpected markdowns, shrink, and unsellable returns$360
Total carrying costSum of the four buckets$1,920
Carrying cost rate$1,920 / $7,20026.7%

At 2 units per day, 400 units is about 200 days of cover. If you cut the next PO so on-hand falls to 90 days (180 units, $3,240 at cost), a simplified variable-cost assumption applies the same 26.7% rate to the smaller base and annual carrying cost on this SKU falls to about $865. That math holds only if all four buckets scale with inventory value. 3PL storage, software, insurance, and handling can include fixed or step costs, so rebuild each bucket on the new unit count instead of scaling the rate. When the variable portion does fall, you free cash without touching the bestseller next to it.

Do not treat 26.7% as a store target. APQC’s cross-industry median sits at 10.0%. A slow fashion SKU will beat that median. A fast consumable with short lead times should sit closer to it.

The four costs to include

APQC defines carrying cost as opportunity cost or cost of capital, storage space, insurance, taxes, handling and administration, shrinkage, and obsolescence. Group those lines into four buckets so the spreadsheet stays usable.

Capital cost

Capital cost is the return you give up, or the interest you pay, because cash is sitting in units. Use the rate on your inventory line of credit if you have one. If you do not, use a rate you would actually earn or save elsewhere, and write that rate on the sheet so next quarter’s math matches this quarter’s.

Capital is usually the largest bucket. A $150,000 average inventory at 12% costs $18,000 a year before anyone pays rent.

Storage cost

Storage is warehouse rent or 3PL bin and pallet fees, utilities, inbound receiving, and pick labor tied to holding stock rather than shipping it. If a 3PL invoices by location, allocate fees to SKUs by cubic volume or by locations occupied. Home-based sellers still have a storage cost: the square footage and time used to stash cartons.

Service cost

Service cost is insurance on stock, inventory-related taxes where they apply, cycle counts, and the inventory tools you pay for. These fees scale with value and unit count. Cutting dead SKUs lowers insured value and the hours you spend counting product nobody wants.

Risk cost

Risk cost is value you lose while goods sit: theft, damage, expiry, style obsolescence, and forced markdowns. The National Retail Federation’s 2023 National Retail Security Survey put U.S. retail shrink at $112.1 billion in 2022, with an average shrink rate of 1.6% of sales. That figure is a sales-based industry rate, not your carrying-cost rate. Use it as a reminder that shrink is real, then estimate risk on your own catalog from write-offs, refunds marked damaged, and markdown dollars.

Seasonal apparel, supplements with expiry dates, and last-generation electronics carry more risk per dollar than a staple that sells the same way every month. Raise the risk rate on those SKUs instead of using one blended guess.

How to find the products creating the highest carrying costs

High carrying cost concentrates in SKUs with high inventory value and low sell-through. Shopify’s inventory reports give you both, if cost per item is filled in.

  1. Open Analytics > Reports and filter the category to Inventory.
  2. Run Month-end inventory value and sort by total inventory value. Those SKUs hold the most cash.
  3. Run Inventory remaining per product. Shopify estimates days of inventory remaining as ending quantity divided by average units sold per day over the last 28 days. Flag anything at 90+ days, and treat 0 days on a top seller as a stockout risk, not a carrying-cost win.
  4. Run Products by sell-through rate. Shopify calculates sell-through as units sold divided by (units sold + units still in inventory). Low sell-through plus high value is the carrying-cost hotspot.
  5. Open ABC product analysis if your plan includes it. Shopify grades variants on the last 28 days of revenue: A-grade products are the group that accounts for about 80% of revenue, B-grade about 15%, and C-grade about 5%. Stores on Basic or Lite need a reporting app for this view.

Cross the lists. A C-grade variant with high ending value and 90-plus days remaining is usually your most expensive shelf space. An A-grade variant with low days remaining is the opposite problem: stockout risk, not carrying cost. Shopify’s own ABC guidance says to keep backup stock on A-grade items and to order C-grade less often or stop ordering it. Pair that with an ABC analysis workflow so grades turn into PO decisions.

If you want those SKUs ranked by revenue impact instead of exported one report at a time, stock intelligence watches cover, stockout risk, and reorder timing on the live catalog. Use it after you trust the cost fields. Garbage cost per item still produces a clean-looking rank.

Five ways to reduce carrying cost without causing stockouts

1. Cut cover on slow SKUs first

Do not slash every on-hand quantity by the same percent. Start with C-grade and no-sale variants that already have months of cover. Leave A-grade safety stock alone until you have a reorder date that respects lead time.

2. Reset reorder points from velocity and lead time

A carrying-cost problem is often a reorder-point problem. If you reorder when the bin “looks light,” you refill slow SKUs too early and bestsellers too late. Set reorder point as (daily sales x lead time in days) + safety stock. Work the Shopify reorder formula on the SKUs that failed the 90-day test. Pair it with inventory alerts so the signal arrives before the PO window closes.

3. Clear aged stock on a calendar, not a feeling

Pick a rule, for example 120 days with no meaningful sell-through, and run one action that week: site markdown, bundle with an A-grade hero, wholesale lot, or donation write-off. Waiting for a “better” discount later usually raises storage and risk more than it raises recovery.

4. Buy smaller, more often, when the math wins

A lower unit cost on a large MOQ is a false save if the extra units sit for half a year. Compare the supplier’s price break to carrying cost on the extra units. If extra units cost $400 in holding and save $180 on product cost, skip the break. Ask for a smaller MOQ or a split ship before you accept the larger carton count.

5. Forecast the next cycle instead of copying the last PO

Last month’s order is a weak forecast after a promo, a stockout, or a season change. Build the next buy from recent velocity, upcoming campaigns, and remaining cover. A practical ecommerce demand forecasting pass takes less time than explaining leftover units to your bookkeeper.

When lower inventory is the wrong move

Cutting stock blindly creates stockouts on the SKUs that fund the store. Keep or even raise cover when the unit economics say so.

  • A-grade products that already sit under 30 days of cover, especially if a stockout would pause paid traffic.
  • Import SKUs whose supplier lead time is 60 to 120 days. Thin cover here is a missed season, not a savings.
  • Documented seasonal peaks. Build inventory ahead of the peak, then deplete it on a written exit date.
  • Price breaks or inbound freight savings that exceed the carrying cost of the extra units (run the SKU math before you congratulate purchasing).

Treat safety stock as a paid insurance policy. Pay it on heroes. Cancel it on leftovers.

A weekly inventory review for Shopify merchants

Recalculate the store-wide carrying-cost percentage once a month. Use this shorter pass every week so POs and markdowns move.

  1. Confirm cost per item is filled on any new variant received this week.
  2. Open Inventory remaining per product. List SKUs at 0 to 14 days (protect) and SKUs at 90+ days (cut or markdown).
  3. Check ABC grade against inventory value. Circle C-grade SKUs that still hold real cash.
  4. Review incoming purchase orders and transfers. Cancel or delay any replenishment that would push a slow SKU past your cover cap.
  5. Assign one clearance action to the worst aged SKU (discount, bundle, wholesale, or write-off).
  6. Set or confirm the reorder date for every A-grade SKU inside its lead time.
  7. Once a month, refresh average inventory value and the four cost buckets, then write the new carrying-cost percentage next to last month’s number.

Finish the review with one PO change and one clearance action. A percentage in a spreadsheet does not free cash. A smaller reorder and a listed leftover SKU do.