3PL Checker

Long-term storage fees: what counts as aged inventory at a 3PL

What 3PL long-term storage fees are, what counts as long-term storage, how inventory age is counted, and the aging errors to look for on your invoice.

Updated October 29, 2026 6 min read

A long-term storage fee is a surcharge a 3PL adds for inventory that has sat in the warehouse longer than a set number of days. There is no industry-wide cutoff: each 3PL sets its own in the contract. Red Stag Fulfillment notes that many treat stock held more than 180 or 365 days as slow moving, and Speed Commerce's 2026 pricing guide reports surcharges of 1.5 to 3 times the standard rate after 30 to 90 idle days.

The fee is becoming more common. Fulfill.com reports that the share of warehouses charging it rose from 23.3% to 48.6% in one year, citing The Fulfillment Advisor's 2025 survey. If your contract has one, how the warehouse counts the age of your stock matters as much as the rate.

What is considered long-term storage

In a 3PL contract, "long-term" means whatever the contract says. You will see terms such as "aged inventory", "slow-moving inventory" or "long-term storage", with one or more age bands, for example a surcharge after 180 days and a higher one after 365 days.

Marketplaces use the term too. Amazon's own guide to FBA fees lists costs for aged inventory, and says that if inventory remains unsold for too long, sellers may face long-term storage or removal costs. Amazon publishes its thresholds and rates in Seller Central, and they apply only to stock in Amazon's fulfillment network. They tell you nothing about what your 3PL may charge.

How 3PLs bill long-term storage

StructureHow it worksWhat to check
Multiplier on the base rateAged pallets or bins cost, say, 1.5 times the normal rateWhether it replaces or adds to the base charge
Flat surchargeAn extra amount per pallet, cubic foot or unit per monthThe unit and the age band
Age bandsDifferent rates after 90, 180 or 365 daysWhich band each lot falls in
Per unitAn extra amount for each aged unitUnits counted after sales

How aging is counted

This is where most disputes start. Contracts count age in different ways:

  • From the receipt date of each lot, first in, first out (FIFO). The oldest units are assumed to ship first, so only units still on hand from an old receipt are aged.
  • From the oldest receipt date for the SKU. Every unit of a SKU is aged as if it arrived with the first shipment. This can make new stock look old.
  • From the last movement. Age counts from the last time the SKU or location shipped anything.
  • By pallet or location date. Age follows the pallet, which matters when pallets are merged or moved.

Ask which method your 3PL uses before you sign, and get it in writing.

How the amount is calculated

Worked example (made up). Juniper & Pine, a made-up brand, ships through Ridgeline Fulfillment, a made-up warehouse. For this example, suppose its contract adds an aged inventory surcharge of $0.15 per unit per month for units received more than 180 days before the billing date, counted FIFO by receipt date.

One SKU, a linen throw, had two receipts: 1,000 units on April 10 and 600 units on September 2. Shopify shows 1,150 units of the throw shipped from Ridgeline since April 10. The billing date is November 30.

  1. Age of the April receipt on November 30: 20 days left in April + 31 + 30 + 31 + 31 + 30 + 31 + 30 = 234 days (aged)
  2. Age of the September receipt: 28 days left in September + 31 + 30 = 89 days (not aged)
  3. On hand: 1,000 + 600 − 1,150 = 450 units
  4. FIFO: the 1,150 units shipped used all 1,000 April units and 150 September units, so all 450 units on hand are from September
  5. Correct surcharge: 0 aged units × $0.15 = $0.00

If the warehouse ages the SKU by its oldest receipt date instead, it counts all 450 units as 234 days old and bills 450 × $0.15 = $67.50. That is $67.50 the contract does not allow, and it repeats every month until the SKU sells through.

Billing errors on the long-term storage line

  • Units already shipped still aged. As in the example, the system ages stock by the SKU's first receipt instead of by lot, so new units carry an old date.
  • Aging handled wrongly after a transfer. When stock moves between the 3PL's buildings or between pallets, the age clock may restart when the contract says it should not, or carry over when the contract says it should restart. A common case is a new partial pallet merged onto an old one that then takes the old pallet's date.
  • Wrong start date. Age counted from the ASN date or the date you created the purchase order instead of the date the warehouse received the goods.
  • Surcharge plus base rate when it should replace it. The aged stock is charged at the standard rate and again at the full surcharge.
  • Wrong band or rate. Units at 200 days billed at the 365-day rate.
  • Returns and held stock. Returned units re-entered under their original receipt date, or stock on a quality hold at the warehouse's request, counted as aged.

How to check long-term storage charges

You need the aged inventory report that backs the line (SKU, lot or receipt ID, receipt date, units, location), the receiving records, any transfer or consolidation log, and your Shopify order export for the same SKUs.

  1. Confirm the threshold, rate, unit and age method in the contract.
  2. List every receipt for each aged SKU with its date and quantity.
  3. Total the units shipped since the oldest receipt from Shopify (Lineitem quantity on fulfilled orders, excluding cancelled ones).
  4. Apply FIFO, or whatever method the contract states, to find which units are really past the threshold.
  5. Multiply by the rate and compare with the invoice.
  6. Check any SKU that was transferred or consolidated, and ask for the original receipt date.

Base storage should be checked at the same time; see 3PL storage fees and the storage fee checker. If you find an error, our guide to disputing a 3PL invoice covers what to send.

Questions to settle in the contract

  • After how many days does the surcharge start, and are there several bands?
  • Is age counted by lot with FIFO, by SKU, by last movement or by pallet?
  • Does age start on the receipt date at this building or on first receipt into the 3PL's network?
  • Does a transfer, consolidation or return reset the clock?
  • Does the surcharge replace or add to the base storage rate?
  • Will the 3PL warn you before stock enters a surcharge band, and what do removal or disposal cost?
  • Are seasonal SKUs or stock on hold at the warehouse's request exempt?

Our 3PL contract checklist lists these alongside the other storage terms. Have a lawyer review the agreement before you sign it.

Get your aged inventory charges checked

3PL Checker rebuilds the age of your inventory from receipt dates and your Shopify sales, using the method your contract states, and flags units that were billed as aged when they were not. The first audit is free, and a person reviews every finding.

Questions

What are long term storage fees?

They are surcharges a warehouse adds for inventory that has been stored longer than a set number of days. A 3PL defines the cutoff and the rate in its contract, and the fee is meant to push slow-moving stock out.

What is considered long term storage?

There is no single industry rule; each 3PL sets its own cutoff. Red Stag Fulfillment notes that many 3PLs treat inventory held more than 180 or 365 days as slow moving, while Speed Commerce reports surcharges that start after 30 to 90 idle days.

How much are long term storage costs?

It depends on the contract. Speed Commerce's 2026 pricing guide puts the surcharge at 1.5 to 3 times the standard storage rate, and Fulfill.com notes that the size of the premium varies by provider.

Are 3PL long-term storage fees the same as Amazon FBA long-term storage fees?

No. Amazon sets its own aged inventory rules for FBA in Seller Central, while a 3PL's surcharge is whatever your contract with that warehouse says. Check each separately.

Sources