Slow-Moving SKUs: Setting Removal Thresholds With a 3PL
I used to treat my 3PL’s storage invoice as a fixed cost. Then I started pulling a monthly velocity report and matching it against aging buckets. That changed how I set removal thresholds.
The report I ask for is simple: SKU, units on hand, units shipped in the last 30, 60, and 90 days, and the date the oldest unit arrived. If the 3PL’s portal has a canned report, I use that. If not, I ask for a CSV export. I check the provider’s current terms for what data they include and how often they refresh it.
My working rule is not about one number. I flag a SKU when it has little or no movement and enough months of cover to matter. For example, if a SKU has sold two units in 90 days and I hold 40, that is roughly five years of cover at the current pace. That gets flagged before the storage bill becomes the main problem.
I set three thresholds:
- Watch: no shipments in 60 days, but cover under six months.
- Remove: no shipments in 90 days and cover over six months.
- Stop reorder: any SKU at remove level, or one with falling velocity two months in a row.
The reorder pause matters as much as removal. If purchasing keeps replenishing a slow SKU, the threshold just creates churn. I put a hold in my own reorder sheet and tell the 3PL not to receive new stock for that SKU without approval.
For disposition, I ask for options before I authorize disposal. Common paths are return to my own space, transfer to a cheaper overflow location, bundle with a faster item, discount, donate, or recycle. I do not assume the 3PL offers every path, and I do not assume it is free. I check each provider’s current removal, return, and disposal terms in writing.
When I needed to compare overflow space against my current setup, I used find warehouse options to shortlist providers, then confirmed aging reports and removal rules directly with each one.
The goal is not to purge everything old. It is to catch slow stock early enough that I can choose what happens next.
— Mike Carter
Write a comment