ASG warehouse photograph; the cost example in this article is hypothetical. By Janson Wang, Founder of ASG Dropshipping · October 1, 2026 · 17 min read
Quick answer: how do I know my 3PL has turned into an inventory cost trap, beyond just looking at per-order shipping fees?
It isn’t the month your total bill goes up. Total goes up whenever volume goes up, and that’s normal.
Two months of your invoice, compared line by line, narrow down where to look: it’s worth investigating when the lines billed by cubic feet and by how long a unit has sat there — storage and aged-inventory surcharges — keep climbing while your per-order lines don’t.
That comparison doesn’t close the case by itself — flat storage with zero sales, or storage rising because you legitimately restocked for a season, both need the same per-SKU math below, not a two-line glance.
Walmart’s own Fulfillment Services pricing page shows one version of this in dollars: the same unit’s monthly storage fee goes from $0.75 to $2.25 per cubic foot once it passes 366 days in the warehouse, and to $7.50 once it passes 450 — a tenfold jump for sitting still.
Amazon’s FBA page confirms a similar aged-inventory mechanic, starting after 181 days, but the current dollar figures sit behind a Seller Central login, not on the public page, and Amazon’s own page lists aged inventory as a separate cost category from standard storage — not confirmed to work the same way as Walmart’s single replacement-rate tiers.
The one independent 3PL pricing page checked for this article doesn’t publish rate figures either — it’s a sample of one, not proof that no independent 3PL anywhere publishes rates.
So this diagnosis can’t be run from any public rate card alone. It has to come from your own invoice, your own contract, and your own inventory report, batched by receiving date.
This article gives you the worksheet to do that, SKU by SKU, and ends in one of four calls: keep, reduce, relocate or liquidate.
Key takeaways
This article sorts a 3PL, FBA or WFS invoice into four working line families, grouped by what drives them: tied to orders, tied to cubic feet times time in storage, tied to a one-off event like a return or removal, or set by your contract. That’s this article’s own practical grouping for reading a bill — not an official taxonomy published by any platform — and the trap most often lives in the second group, though it isn’t the only possible driver of a rising bill.
Aging thresholds differ by provider and aren’t a universal number: Walmart’s public tier starts at 366 days, Amazon’s starts at 181 days, and an independent 3PL’s threshold is whatever your own contract says.
The number that tells you whether a SKU is a trap isn’t your total bill. It’s that SKU’s storage-and-aging cost divided by how many units of it you actually sold that month.
Whether liquidating a slow SKU beats continuing to hold it is a comparison you can do in dollars per unit: your net recovery minus the exit fee, against the holding cost you’d otherwise keep paying.
Table of Contents Your 3PL Invoice Has Only Four Kinds of Lines, and the Trap Lives in One of Them The Four Line Families on a 3PL Warehouse Invoice, and How to Tell Them Apart in Two Billing Months Platform Rate Cards Versus 3PL Fulfillment Services Quotes: Why You Can’t Borrow a Number Across Providers Pull the Inputs: Which Numbers Come From the Invoice, Which From the Contract, Which From Your Inventory Report The Inventory Cost Worksheet: Carrying Cost Per Unit Sold, Months of Cover, and Days to the Next Age Tier Aging Stock, Returns and Unsellable Units: The Lines That Keep Growing When Orders Don’t Contract Terms That Turn Storage Into a Trap: The Clauses to Read Before You Decide Anything Keep, Reduce, Relocate or Liquidate: Deciding SKU by SKU Where Warehouse Fulfillment Still Pays Where ASG Sits in This Audit, and What It Does Not Do Frequently Asked Questions Your 3PL Invoice Has Only Four Kinds of Lines, and the Trap Lives in One of Them
If you’ve already moved part or all of your inventory into an independent 3PL, FBA or WFS, and the bill keeps climbing, you’ve probably asked yourself whether that’s just the normal cost of growth or something has gone wrong with how your stock is sitting.
Looking at the total doesn’t answer that.
Looking at your per-order shipping rate doesn’t either — a seller named Andrechrome, posting in 2024 to a public Shopify Community thread running since 2020 , described losing confidence in a provider after a year and a half: “We are so in trouble now with all our inventory with them.
We need to find a new 3PL urgently.” The post doesn’t say how old that stock was, what it was being billed, or whether storage and aging charges were the specific driver — read it as one seller’s account of inventory getting stuck with a provider, not as a confirmed case of the mechanism this article describes.
Every line on that kind of invoice can be sorted, as a working approximation, into one of four ways: tied to your order count (though not purely — weight, dimensions, destination and service level can also move this line), tied to how much space your inventory occupies and how long it’s sat there (the one that can grow even when orders don’t), tied to a specific event like a return or removal, or set by your contract regardless of what happens in the warehouse.
The next section names and sources each, and treats this as this article’s own practical grouping for reading a bill, not a classification any platform itself publishes.
This one draws the boundary: this article audits a bill you already have, not whether to move there in the first place — that earlier decision, including picking a China-based 3PL before stock leaves the country, is covered in ASG’s separate guide, When to Use a 3PL for a Mature SKU .
It also isn’t a tax, legal or accounting guide.
What follows is built from Walmart’s and Amazon’s own current fulfillment pages, one independent 3PL’s pricing page, and real seller accounts from a public forum thread, re-checked the same day this was written.
Where a number only exists behind a login or inside a specific contract, this article says so.
A real ASG packing area and storage racks; it does not depict the example seller’s inventory.
The Four Line Families on a 3PL Warehouse Invoice, and How to Tell Them Apart in Two Billing Months
Pull two consecutive months of the same invoice and sort every line by what actually drives its amount. Four patterns show up.
Order-driven lines. Driven mainly by how many orders you shipped that month.
Pick, pack and per-order carrier charges fall here — ShipBob’s own pricing page lists “picking, packing, and shipping each order” as one of its four standard fee categories, though that same page also notes shipping cost depends on weight, dimensions, destination and service level, not order count alone.
If your order count drops, this line usually drops with it, but not always by the same proportion.
Volume-time lines. Driven by how much space your inventory occupies and how long it sits — measured in cubic feet (or pallet positions, or SKU slots, depending on what unit your specific warehouse bills in; the behavior is the same regardless of the unit).
Standard storage and aged-inventory surcharges live here. This line doesn’t care how many orders you shipped.
It cares how much is sitting there and for how long, and it steps up once your stock crosses a tier your provider set.
This is where the trap usually lives — though a rising number here isn’t automatic proof of a trap by itself: storage can also rise because you deliberately restocked ahead of a season, and it can stay flat on a SKU with zero sales that still needs attention for a different reason.
Whether the aged tier replaces the standard rate or gets added on top of it also isn’t the same for every provider — see the worksheet section below.
Event lines. Driven by a specific action, not by the calendar.
Inbound receiving, returns processing, and removal, disposal or liquidation orders only show up on the invoice for the month that action happened.
Amazon’s FBA page lists “Returns processing” and “Removal, disposal, and liquidation orders” as separate cost categories from storage itself.
Contract-set lines. Driven by the agreement you signed, not by anything that happened in the warehouse this month.
ShipBob’s pricing page lists implementation as one of its standard fees — but implementation is typically a one-time setup charge paid when you onboard, not something billed every month.
If your contract also carries a recurring minimum or a committed-volume makeup fee, that would belong here too, but none of the pages checked for this article confirm that pattern exists, so treat it as a question for your own contract, not an assumption.
Table 1 — The four invoice-line families
The Four Line Families on a 3PL Warehouse Invoice, and How to Tell Them Apart in Two Billing Months
Family
Driven by
Typical line names
When orders drop
Order-driven
Orders shipped that month
Pick, pack, per-order carrier charge
Drops with orders
Volume-time
Cubic feet (or pallets/slots) × time in storage
Standard storage, aged-inventory surcharge
Unchanged, or rises if a tier is crossed
Event
A specific action that month
Receiving, returns processing, removal/disposal/liquidation
Appears only in the month the action happens
Contract-set
The contract itself
One-time implementation/setup; any recurring minimum your contract specifies
Unchanged either way
Sources: Walmart Fulfillment Services pricing page; ShipBob pricing page; Amazon FBA fulfillment page — all re-verified October 1, 2026.
A quick way to sort a line you’re not sure about: would it change if your order count doubled but nothing else did? If yes, it’s order-driven.
Would it change if you shipped zero orders but kept the same inventory sitting there for six more months? If yes, it’s volume-time.
One thing to watch for: a returned unit can hit two families in the same billing cycle. Amazon’s returns-processing fee is an event line — it appears once, in the month the return happens.
But if that returned unit goes back on the shelf and stays there, the warehouse keeps billing the volume-time storage line on it for as long as it sits. That’s not double billing.
It’s two different charges for two different things the warehouse is doing: handling the return once, and holding the space every month after.
Real seller accounts on that same Shopify Community thread show how hard order-driven pricing alone is to compare across providers, even before volume-time charges enter the picture.
Seller nmalinow, in a 2020 reply, reported fulfillment costs “start at $7+ for First Class 1oz… international rates for 4-10 day are easily $30+ while 7-30 day is still $10+.” Seller jack9898, the same week, on a different provider, reported “the fulfillment I’m using right now is $10 for a 0.5kg item, include warehousing/shipping/delivery.” Seller MarkG143 said their provider offered “flat rates and no pick pack fees.” These are self-reported figures from a public forum, not audited contracts or invoices — there’s no way to check them for completeness or accuracy, only to read them as what each person said.
Even taken that way, three different self-described setups is exactly why order-driven lines, confusing as they are, don’t trap you the way volume-time lines do: they move with what you’re actually shipping.
This article’s own sorting framework for reading a 3PL invoice, not a provider rate card.
Three providers, three different levels of transparency — and knowing which kind you’re dealing with tells you where to actually go looking for your own numbers.
Walmart Fulfillment Services publishes a complete aging-tier rate table on its own pricing page, and each row is the full monthly rate for that tier, not an add-on to a base rate: $0.75 per cubic foot per month in the standard window, $2.25 once a unit passes 366 days, and $7.50 past 450 days.
The one documented exception is peak season — the page states an additional $1.50 per cubic foot per month, on top of the $0.75 base, “for items stored for more than 30 days” during October–December.
The page doesn’t say whether that 30-day count resets each peak season or carries over from a unit’s original receiving date — this article can’t resolve that ambiguity from the public page and isn’t going to guess.
The same page separately states that items stored more than 12 months may incur the $2.25 fee — a slightly different way of describing roughly the same point in time, and both versions appear on the page without being reconciled into one sentence.
Amazon FBA confirms a similar mechanic — an aged-inventory surcharge starting at 181 days, billed monthly — but structures it differently on the page itself: “Storage costs” (based on your daily average occupied volume) and “Aged inventory” are listed as two separate cost categories, alongside “Returns processing” and “Removal, disposal, and liquidation orders” as further categories of their own.
That structure suggests the aged charge may be additional to standard storage rather than replacing it, the way Walmart’s tiers do — but the public page doesn’t spell out the exact stacking arithmetic, so this article isn’t going to assert one.
The current dollar-per-cubic-foot numbers for standard storage and each aging tier aren’t on that public page either; the reference page that would carry them requires a Seller Central login, with no fee table visible to an anonymous visitor, only a sign-in prompt.
That’s not Amazon hiding something — it’s a normal account-gated feature.
It does mean this article can’t hand you Amazon’s current numbers or confirm exactly how its storage and aging lines combine, and you shouldn’t trust a third-party blog’s version either; pull both from your own Seller Central account.
An independent 3PL — ShipBob’s public pricing page is the one this article checked — doesn’t publish a rate card at all.
It names four standard fee categories (implementation, receiving, warehousing, picking/packing/shipping) and states plainly that “all quotes are customized for each customer.” That’s one data point about this one company’s one page — it supports checking your own contract rather than a public page, not a claim that no independent 3PL anywhere publishes rates.
Table 2 — Where each provider’s rate actually lives
Platform Rate Cards Versus 3PL Fulfillment Services Quotes: Why You Can’t Borrow a Number Across Providers
Provider
Visible to an anonymous visitor
Requires login or a contract
Aging tier
Where you get your own number
Walmart Fulfillment Services
Full published tier table
No
366 days (also described as “more than 12 months” on the same page)
The public pricing page itself
Amazon FBA
Mechanic and trigger day only, as a separate category from standard storage
Yes, for exact dollar figures and exact stacking
181 days
Your own Seller Central account
Independent 3PL (one sample checked — ShipBob)
Four fee category names only
Yes — a sales-negotiated contract
Your contract
Your contract
This is one sample of one independent 3PL’s public page, not a survey of the industry — it’s used here to establish one structural pattern worth checking for (contract-negotiated, not published), not to claim every independent 3PL prices the same way.
The takeaway holds either way: a platform’s published rate, where one exists, is that platform’s rate.
It isn’t a stand-in for what your independent 3PL charges you, and it isn’t a benchmark to hold your own contract against.
The worksheet below only works with numbers you pull from your own paperwork.
Real warehouse operations photograph; it is not a provider price quote.
Three documents, three different kinds of numbers: the invoice shows what’s already been charged, the contract shows the rates and aging tier that produced those charges, and the inventory report shows how many units, how much space, and how long each batch has sat — grouped by the date it arrived, not by any later date.
Skip one and the worksheet below runs on a guess instead of your own numbers.
One distinction matters here that’s easy to blur: the units sitting in your warehouse aren’t all the same kind of “in stock.” Some are sellable right now.
Others might be reserved for a specific order, held for quality review, or waiting on a disposition decision — physically occupying space, but not available to ship to a customer today.
Most of the time a platform or 3PL’s storage fee bills on occupied space regardless of which kind a unit is, but that’s not a universal guarantee — a removal request or a specific account/contract status can change what’s actually billed, so check your own invoice line items rather than assuming every on-hand unit is billed identically.
If you’re trying to answer “how long will my sellable stock actually last,” using the full on-hand count instead of the sellable count will overstate your runway. Both numbers are useful.
They just answer different questions, and the worksheet in the next section keeps them as two separate inputs rather than folding one into the other.
One more definition to fix before it can drift: this article uses “units sold this month” to mean units actually shipped that month, net of same-month cancellations — not units ordered, not a forecast, and not mixed with a different month’s returns.
Keep that one definition consistent everywhere the worksheet asks for a sales figure; swapping between “sold,” “ordered” and “shipped” across different inputs is how the formulas below quietly stop matching each other.
Table 3 — Input field map
Pull the Inputs: Which Numbers Come From the Invoice, Which From the Contract, Which From Your Inventory Report
Variable
Unit
Comes from
Where to find it on a platform warehouse
Common mistake
On-hand units (total)
units
Inventory report
FBA/WFS inventory dashboard
Using it interchangeably with sellable units
Sellable units
units
Inventory report
Same dashboard, “sellable” or “available” column
Treating reserved/held units as sellable
Billable volume per unit
ft³/unit
Contract or warehouse’s own measurement
WFS pricing page explains the basis; FBA’s is behind Seller Central
Using the product’s spec-sheet dimensions instead of the warehouse’s billed dimensions
Standard storage rate
$/ft³/month
Contract or rate card
WFS public page; FBA needs Seller Central login
Applying one provider’s published rate to a different provider’s bill; also confirm whether your bill measures volume as a single day’s on-hand count or a daily-average over the billing period — FBA’s public page states standard storage is based on daily average occupied volume, not one snapshot
Aged-tier rate
$/ft³/month
Contract or rate card
Same as above
Assuming the aged rate always replaces the standard rate — confirmed true for WFS’s published tiers, but Amazon’s public page lists aged inventory as a separate cost category from storage, which reads as additive; check your own invoice before assuming either pattern
Units sold this month
units/month
Sales report
Order history
Using a sales forecast, or an order count, instead of units actually shipped that month net of same-month cancellations
Days in the warehouse
days
Inventory report, by receiving-date batch
Receiving log
Using the return-request date instead of the original receiving date
A real ASG workbench illustrates the records behind warehouse operations.
Real ASG warehouse workstation; it does not show the hypothetical worksheet SKU.
The Inventory Cost Worksheet: Carrying Cost Per Unit Sold, Months of Cover, and Days to the Next Age Tier
Three formulas, each checkable against its own units:
Monthly volume-time cost ($/month) = units below the aging tier × billable ft³/unit × standard rate, plus units at or above the tier × billable ft³/unit × aged rate.
Carrying cost per unit sold ($/unit) = (monthly volume-time cost + any contract-set monthly allocation) ÷ units sold that month.
Months of cover (months) = sellable units ÷ units sold that month.
Days to the next age tier = your provider’s tier day-count minus days that batch has already been in the warehouse, counted from its receiving date.
This formula treats the aged rate as replacing the standard rate for aged units — confirmed from Walmart’s own published tiers, where each day-range shows one total fee, not an addition.
That’s not confirmed as universal: Amazon’s public page lists “Storage costs” and “Aged inventory” as separate cost categories, which reads as the aged charge being added on top of standard storage rather than replacing it, though Amazon’s page doesn’t spell out the exact stacking math.
If your provider adds instead of replaces, add the aged-rate term to the standard-rate term for those same units rather than substituting one for the other.
Two formulas above divide by units sold that month, which breaks down for exactly the SKUs this worksheet is built for — a slow or stalled one can sell zero units in a given month.
If units sold that month is zero, don’t compute a ratio: both “carrying cost per unit sold” and “months of cover” return no valid number for that month, and that itself is the signal — flag the SKU for a direct look rather than reporting a $0 or infinite result.
Here’s a worked example with every input labeled hypothetical — none of these numbers describe a real ASG customer, a real supplier, or a real SKU.
Only the storage rates are real: they’re Walmart’s own public figures, current as of the page checked for this article on October 1, 2026.
Table 4 — Worked example (all inputs hypothetical except the storage rates)
The Inventory Cost Worksheet: Carrying Cost Per Unit Sold, Months of Cover, and Days to the Next Age Tier
Input
Hypothetical value
On-hand units (total)
1,200
Sellable units
1,050 (150 units reserved for a wholesale order and not currently sellable)
Units past 366 days (aged tier)
400
Billable volume
0.05 ft³/unit
Standard rate
$0.75/ft³/month (Walmart’s public rate)
Aged rate
$2.25/ft³/month at 366–450 days, $7.50/ft³/month past 450 days (Walmart’s public rates)
Units sold this month
100
Contract-set monthly allocation
$20/month (fill with your own contract’s recurring terms, or $0 if yours was a one-time setup fee only)
Per-unit exit fee if liquidated
$0.50
Per-unit net recovery if liquidated
$3.00
Gross margin per unit sold
$6.00
Two of these inputs need a definition before they feed the comparison later in this section.
Gross margin per unit sold here means selling price minus variable cost per unit — including what you already paid to acquire or make it, since that cost is identical whether you keep or liquidate and doesn’t change which option wins — minus any remaining per-unit selling or fulfillment cost.
Net recovery per unit is what a liquidator would pay you before the exit fee below it; the exit fee is subtracted once, in the comparison further down, not twice.
Run the first formula: the 800 units still under the tier cost 800 × 0.05 × $0.75 = $30 that month. The 400 aged units cost 400 × 0.05 × $2.25 = $45.
Together, $75 in volume-time cost for that SKU that month.
Carrying cost per unit sold: ($75 + $20) ÷ 100 units sold = $0.95 per unit.
Now suppose those same 400 units cross into the next tier, past 450 days. The aged portion becomes 400 × 0.05 × $7.50 = $150, and total volume-time cost becomes $180.
Carrying cost per unit sold becomes ($180 + $20) ÷ 100 = $2.00 per unit — more than double, with the unit count and sales rate unchanged.
That $20 contract-set allocation sits in this ratio’s numerator, but don’t assume liquidating this one SKU makes it go away — check whether your contract actually ties that charge to this SKU’s volume, or whether it’s a flat minimum you’d keep paying regardless.
Months of cover, using sellable units: 1,050 ÷ 100 = 10.5 months. The full on-hand count (1,200 ÷ 100 = 12) would overstate how long your sellable stock lasts by about six weeks — the warehouse bills storage on all 1,200 regardless of sellability, but your reorder timing only cares about the 1,050 you can actually sell.
One more number before deciding anything: a same-tier holding-cost estimate per unit — a scenario figure, not a prediction or a ceiling — assuming a unit sits for the sellable-stock months-of-cover window established above (10.5 months, not the overstated 12-month on-hand figure) entirely at its current tier’s rate (billable volume × monthly rate × months of cover).
At the 366–450-day tier: 0.05 × $2.25 × 10.5 = $1.18 per unit. Past 450 days: 0.05 × $7.50 × 10.5 = $3.94 per unit.
These are same-tier scenarios, not worst cases, and the 366–450-day one needs a caution: that tier is only about 85 days wide (366 to 450), so a batch that’s just entered it and is still sitting 10.5 months (roughly 319 days) later will almost certainly have already crossed into the $7.50 tier well before the window closes.
Check this batch’s own days-to-next-tier number (from the formula above) against its months-of-cover number — if days-to-next-tier is the smaller of the two, the $1.18 figure understates what this batch will actually cost to keep holding, it doesn’t cap it.
The past-450-day figure doesn’t have this problem: Walmart’s published table has no tier above $7.50.
That comparison, in dollars per unit, using the same 10.5-month window throughout: keeping the SKU nets gross margin minus the same-tier holding-cost estimate — $6.00 − $1.18 = $4.82 at the 366–450-day tier, or $6.00 − $3.94 = $2.06 past 450 days.
Liquidating nets net recovery minus the exit fee — $3.00 − $0.50 = $2.50 , regardless of tier. Keeping nets $2.32 more per unit at the lower tier.
Past 450 days, liquidating comes out $0.44 per unit ahead of keeping under this estimate — and that gap would widen further for a batch likely to keep sitting, given the tier-crossing caution above.
A smaller margin, a lower recovery value, or a batch close to its next tier can all move either result.
That’s the point of running the numbers instead of guessing — the same SKU can land on either side depending on its rate tier and how close it is to the next one, which is why no single threshold works across every SKU or provider.
Illustrative worksheet output, not an ASG client result; use actual provider terms and inventory data.
A worksheet you can copy. Everything needed to rebuild this as your own spreadsheet is already above: the four line families, the input list in Table 3, and the three formulas.
There’s no separate file to download — copy those into a sheet with your own SKU’s invoice, contract and inventory numbers in place of the hypothetical ones in Table 4.
Use your worksheet to plan the next replenishment move
Copy the formulas and inputs above into your own sheet. If the China-side supply or fulfillment part of that plan needs a review, bring your numbers to ASG.
Discuss the China-side plan with ASG
Aging Stock, Returns and Unsellable Units: The Lines That Keep Growing When Orders Don’t
Three situations drive volume-time cost up even while your order count stays flat.
Crossing an age tier. Walmart’s jump from $2.25 to $7.50 per cubic foot happens because the same unit sat 85 days longer — the difference between the 366–450-day tier and past 450 days.
Amazon’s aged-inventory surcharge starts accruing monthly once a unit passes 181 days, as a cost category its own page lists separately from standard storage.
Neither day-count is a universal number; it’s the tier your own provider wrote down.
For the one independent 3PL sampled in this article, that tier lived in the contract, not on any public page — check whether that’s also true for yours.
Units that came back. As covered above, a return’s event-line charge and the volume-time charge on a not-yet-resellable returned unit are two separate things — and the second one keeps running for as long as inspection, repackaging or a disposition decision takes.
Units that aren’t sellable right now. Reserved stock, units in quality hold, units awaiting a disposition decision — pull these out of your own inventory report and look at them on their own.
They occupy cubic feet without producing a sale, which is exactly the combination (the numerator of the per-unit cost keeps running, the denominator doesn’t) that drives carrying cost per unit sold upward the fastest.
This article doesn’t define these categories for you; your own warehouse’s inventory report already has them, usually under its own status labels.
The seller account from earlier is consistent with this pattern, though it doesn’t prove it — it’s a single, non-representative case, and the post itself gives no stock age, fee trend or sales figures to check against.
What they described as “all our inventory” being stuck reads as accumulated stock sitting with a provider they’d lost confidence in, which fits the shape of a volume-time-cost problem rather than an order-driven one — but read it as a seller’s own account of that experience, not as confirmation that this article’s specific aging mechanism was what drove it.
ASG workbench photograph; this is not a documented return or disposition decision.
Contract Terms That Turn Storage Into a Trap: The Clauses to Read Before You Decide Anything
Everything the worksheet needs from your contract comes down to four questions.
Three have a documented answer pattern; the fourth you’ll need to check yourself, because none of the sources for this article confirm what’s typical.
Where are your rates and your aging tier? For the one independent 3PL checked for this article, they weren’t on any public page — ShipBob’s own pricing page states that “all quotes are customized for each customer,” which means its rate card exists in a sales quote or a signed agreement, nowhere else.
That’s a reason to check your own sales quote or agreement first, not proof that every independent 3PL works the same way.
For a platform warehouse, they’re either public (Walmart) or behind your own account login (Amazon).
What’s your exit fee? Amazon’s FBA page lists removal, disposal and liquidation as a distinct cost category from storage.
Find the equivalent line in your own contract — without it, you can’t run the “liquidate” comparison from the worksheet above at all.
What fixed, contract-set items do you actually have? ShipBob’s page confirms implementation exists as a standard fee — typically a one-time charge at onboarding, not a recurring one.
Beyond that, check your own contract for a monthly minimum or a committed-volume makeup clause.
None of the pages checked for this article describe that kind of clause as standard, so this article isn’t going to tell you it’s common. Check your own paperwork.
What triggers a rate change? Peak-season surcharges, tier thresholds, and contract renewal terms can all move your numbers without you doing anything differently.
Walmart’s own page shows an additional $1.50 per cubic foot during its October–December peak season for items stored more than 30 days — the page doesn’t say whether that 30-day count resets each peak season or carries over from a unit’s original receiving date, so confirm which applies before you rely on it, and check whether your own provider has an equivalent clause at all.
This section won’t guess at what’s “typical” beyond what’s sourced above — the one public pricing page checked here doesn’t publish clause-level detail, and your contract is the only place it exists.
Real warehouse inventory baskets; no seller-specific stock or disposition is depicted.
Keep, Reduce, Relocate or Liquidate: Deciding SKU by SKU Where Warehouse Fulfillment Still Pays
Run the decision in this order, one SKU at a time. Don’t multiply the inputs together into a single score — compare them the way they’re actually asked above.
First, check whether you’re about to cross a tier. If a batch is close to its provider’s next aging threshold, know that before anything else — Walmart’s own numbers show a jump from $2.25 to $7.50 per cubic foot is possible on the other side of one.
Second, compare carrying cost per unit sold against that SKU’s own margin. If the per-unit holding cost is eating most or all of the margin, that’s your clearest signal, not a generic volume rule.
Third, if you’re considering liquidation, compare it in dollars per unit against the same-tier holding-cost estimate — net recovery minus exit fee, against the holding cost you’d otherwise keep paying, exactly as worked through above, and only for the units actually available to liquidate.
Four outcomes follow from where a SKU lands:
Keep. You continue paying the volume-time line as-is.
This fits a SKU with a short months-of-cover number and real distance from its next aging tier — nothing about its current numbers is pushing it toward a different call.
Reduce. Stop replenishing, or lower how much you keep on hand at the destination warehouse, and shift slow-moving SKUs’ replenishment source back to China-side pre-stocking instead — sending only your faster-moving SKUs forward to the destination warehouse.
This changes what you order next, not what’s already sitting there: the SKU’s existing on-hand units keep accruing the same volume-time charges until they sell, get relocated or are liquidated, so Reduce by itself won’t lower this month’s invoice.
ASG offers one version of that China-side option (detailed in the ASG section below); it isn’t free of trade-off, since replenishment then runs on a cross-border line’s own reference delivery window instead of a pre-stocked destination warehouse’s shorter one, and it isn’t a claim that this costs less than what you’re paying now — that depends on the same per-unit math as every other SKU in this worksheet.
Relocate. Move the SKU to a warehouse with a different contract structure.
This adds a one-time receiving fee at the new location on top of whatever exit fee the old one charges, plus whatever it actually costs to move and prepare the stock in between — none of which this article prices for you.
Once paid, those fees aren’t recoverable, but that doesn’t mean the SKU itself can never move again; a later relocation is still possible if the numbers change.
Liquidate. Trade the ongoing volume-time cost for the event-line exit fee, using exactly the dollars-per-unit comparison worked through in the previous section — for whichever units are actually available to dispose of.
In Table 4’s worked example, that’s the 1,050 sellable units, not the full 1,200: the 150 reserved for a wholesale order aren’t eligible for this comparison unless that reservation is also cancelled.
Table 5 — Keep, reduce, relocate, liquidate
Keep, Reduce, Relocate or Liquidate: Deciding SKU by SKU Where Warehouse Fulfillment Still Pays
Action
Changes
Adds
Reversible?
Check before deciding
Keep
Nothing
Nothing
Yes
Months of cover, distance to next age tier
Reduce
Lowers future volume-time cost at this warehouse, starting with the next replenishment cycle
Possible longer lead time if replenishment moves to a China-side line
Mostly — replenishment flow can shift back
Current on-hand stock still bills as usual; weigh your margin per unit against the lead-time trade-off
Relocate
New contract’s volume-time and order-driven rates
New warehouse’s receiving fee, old warehouse’s exit fee, plus any transfer/transition cost
Fees already paid aren’t recoverable, but the SKU can still be moved again later
Both contracts’ aging tiers, actual transfer cost, and your own landed-cost math
Liquidate
Removes the SKU’s volume-time cost entirely, for the units actually liquidated
One-time exit fee
No, for the units liquidated
Net recovery minus exit fee, against the same-tier holding-cost estimate; confirm which units are actually available to liquidate
Decision order from this article; actual action depends on the seller’s records and contract.
No single outcome is the “right” answer across your catalog.
Two SKUs with identical unit economics can land on opposite sides of this table if one is 40 days from its next aging tier and the other is 400.
Where ASG Sits in This Audit, and What It Does Not Do
ASG’s role in this specific audit is narrow: one option inside the “reduce” and “relocate” calls above, for where slow-moving replenishment stock can sit instead.
China-side pre-stocking. ASG operates a four-warehouse network across Shenzhen and Dongguan, offering free storage space — the space itself, not a blanket waiver on every associated fee — to mid- and large-size clients with a pre-stocking need.
This is a China-side warehouse — it is not a destination-country third-party warehouse, and it is not the kind of facility this article has been auditing.
What it changes is where replenishment for slower-moving SKUs sits before it ships, not what’s already sitting in your existing 3PL, FBA or WFS account.
Route options. ASG’s logistics lineup includes dedicated line-haul, an overseas-warehouse option, international express and small-parcel lines, with reference delivery windows by market — for example, a US line typically running 5 to 8 days.
These are reference ranges affected by product, destination, customs and season, not a fixed promise for every shipment.
Demand-based pre-stocking, for larger accounts. ASG names an internal program for clients running 500 or more orders a day that includes pre-stocking based on historical sales velocity and a real-time low-stock alert.
This is scoped to that volume tier — it isn’t a standalone product available below that threshold, this article isn’t naming it as an industry-standard offering, and availability is worth confirming directly with ASG rather than assumed from this description.
Order and tracking sync. ASG’s Shopify app and Google Sheets integration handle order sync, shipment-status updates and tracking-number upload.
That’s order-level visibility, not a dashboard that pulls FBA, WFS and third-party 3PL inventory data into one cross-warehouse view.
What ASG does not do in this audit: process removal, disposal or liquidation orders on your behalf — that goes to the warehouse or platform currently holding the stock; carry the risk of a SKU losing value or going unsold — that stays with you; read your existing 3PL contract for you — those terms are between you and that provider; or promise a fixed delivery time — the figures above are reference ranges, not guarantees.
Three related questions, three separate guides: deciding whether to move a SKU into a destination warehouse at all — When to Use a 3PL for a Mature SKU ; vetting a China-based 3PL specifically — China 3PL Warehouse Checklist: 15 Questions to Ask First ; and whether returns, not storage, are where your cost problem actually starts — Where Ecommerce Returns Actually Start: A Location Model .
If the harder problem is simply seeing your inventory data across systems, see Google Sheets vs. ERP for Shopify Order Management: The Five-Question Test That Actually Decides It .
A real ASG packing work area illustrating ASG’s operational role.
Ask ASG where your slow-moving replenishment stock should sit
Bring your own SKU turnover and route numbers. The answer depends on your worksheet results, not on a general recommendation.
Talk to ASG
Frequently Asked Questions
What’s the difference between a storage fee and an aged-inventory surcharge?
Both are billed by cubic feet per month, but they don’t necessarily combine the same way everywhere.
A standard storage fee applies from the day a unit arrives.
An aged-inventory surcharge is a charge that only kicks in once a unit crosses a day-count threshold your provider sets — Walmart’s starts at 366 days, Amazon’s at 181 — and whether it replaces the standard rate or adds to it isn’t universal: Walmart’s published tiers each show one total rate, while Amazon’s public page lists aged inventory as a separate cost category from standard storage.
Check your own invoice to see which pattern applies to you.
Is a rising 3PL invoice always a sign of an inventory cost trap?
No, and a two-line comparison alone doesn’t close the case either way.
If your order-driven lines are rising along with your order count, that’s the normal cost of growth.
Climbing volume-time lines — storage and aging — while order-driven lines stay flat is where this article’s worksheet is worth running, but it’s a reason to look closer, not a standalone proof: storage can also rise because you deliberately restocked for a season, and a SKU can need attention even with flat storage if it has zero sales.
Compare two months line by line to narrow down where to look, then run the per-SKU worksheet.
Can I use Amazon’s or Walmart’s aged-inventory rates to judge my independent 3PL?
No.
Those are each platform’s own published or account-specific rates, and even between those two platforms the aged charge doesn’t necessarily work the same way.
An independent 3PL’s rates are set in your contract — the one sampled for this article wasn’t published anywhere, but that’s one company’s page, not proof that none publish rates.
Fill the worksheet’s rate fields with your own contract numbers, not a platform’s.
How do I tell whether liquidating a slow SKU costs less than keeping it?
Compare both sides in dollars per unit, for the units actually available to liquidate (reserved or committed units don’t qualify unless that commitment is also cancelled).
Keeping it nets you gross margin — already net of what you paid to acquire the unit and any remaining selling cost — minus a same-tier holding-cost estimate for however long it’s likely to sit at its current tier; that estimate can understate the real cost if the batch is close to crossing into a higher tier, so check the days-to-next-tier number too.
Liquidating nets you your net recovery value minus the exit fee, with the exit fee subtracted once.
Whichever number is higher is the better estimate for that SKU right now, and either side can shift if your margin, recovery value, or distance to the next tier changes.
Does pulling slow stock back to China-side storage always lower inventory cost?
Not automatically, and it’s worth separating two different moves.
Simply slowing or stopping future replenishment into the destination warehouse changes what ships there next — it doesn’t by itself remove the volume-time charge already accruing on units already sitting there.
Actually moving existing on-hand stock back to China-side storage is a separate action: it removes the destination warehouse’s volume-time charge on those units, but shifts their future replenishment onto a cross-border shipping line with its own reference delivery window, and may carry its own exit or transition cost.
Whether either move is worth it depends on running that SKU through the same worksheet, not on a general rule.
Sources