Articles in this section

How Storage by Location Fees Are Calculated in 3PL Billing

Storage by Location fees in 3PL Billing charge a flat rate per occupied bin (storage location) for each time unit — day, week, or month — that the bin holds stock. ShipHero uses inventory movement history to determine occupancy, so charges reflect actual usage across the full billing period, not just the current inventory state.

For setup steps and field reference, see How to Set Up Storage Fees by Location in 3PL Billing.

Table of Contents

How Storage by Location Fees Determine Bin Occupancy

When ShipHero generates a bill, it inspects inventory movement history to decide whether each qualifying bin held stock during each time unit of the billing period. A bin is considered occupied for a time unit when any of the following are true:

  • Inventory changes were recorded in that time unit.
  • Inventory changes before the billing period left a non-zero on-hand quantity — the bin was already occupied going into the period.
  • Changes during the time unit brought on-hand quantity to zero — the bin held stock at some point during that period and is still charged.

A bin counts as occupied for a time unit when any product in it had inventory during that period. When one product goes to zero but another remains, ShipHero still charges the bin for that time unit.

How Storage by Location Identifies Billing Candidate Locations

ShipHero identifies candidate locations by looking across the full billing period's date range — not just the current inventory state. A location qualifies as a billing candidate when either of the following are true at the time of billing:

  • The location has a quantity greater than zero at any point up to the period end time.
  • An inventory movement was recorded on or after the billing period start time — the location had activity during the period, even if it is now empty.

A location that was occupied earlier in the billing period but is now empty is still identified as a candidate and evaluated for charges.

Missing Movement History Raises an Error

When a bin has inventory but no movement history entries, ShipHero raises an error during billing. Verify that inventory movements are being recorded correctly for all locations used in 3PL client accounts.

Storage by Location Time Unit Options

Time Unit How It Is Counted
Day Each calendar day the bin is occupied counts as one period. A bin occupied for 6 days generates 6 periods.
Week Each 7-day week the bin is occupied counts as one period.
Month Each calendar month the bin is occupied counts as one period. The charge fires on the bill whose billing window contains the last day of the calendar month.

The billing period's timezone is respected. A bin emptied within a timezone-offset period will not be charged for that period.

Monthly Storage Fees on Weekly or Shorter Billing Cycles

When a Storage by Location fee is set to charge monthly but the client's billing frequency is weekly, the monthly charge fires on the weekly bill whose billing window contains the last day of the calendar month. ShipHero does not limit its occupancy check to the 7-day billing window — it looks back across the entire preceding calendar month.

Storage by Location Pre-Period Lookback Logic

For each time unit being evaluated, the fee engine checks two contexts:

  • Pre-period inventory state: What was in this location before the bill's period began?
  • In-period changes: What inventory activity happened within the current time unit's date range?
Condition ShipHero Result
Inventory changes exist within the date range ShipHero charges the bin.
No changes within the range, but a non-zero on-hand quantity existed before the period began ShipHero charges the bin — it was occupied going into the period and remained occupied throughout.
No changes and no prior inventory ShipHero does not charge the bin.

Practical Scenarios — Monthly Storage Fee on a Weekly Bill

Scenario Is the Location Charged?
Location occupied Jan 1–31 (full month). Weekly bill covers Jan 25–31. Yes — occupied throughout the month.
Location occupied Jan 1–20, empty Jan 21–31. Weekly bill covers Jan 25–31. Yes — pre-period occupancy is detected. The location was occupied during the month even though it is empty at month-end.
Location empty throughout all of January. Weekly bill covers Jan 25–31. No — no prior changes and no in-period changes.
Location received stock Jan 28, still occupied Jan 31. Weekly bill covers Jan 25–31. Yes — in-period change detected within the billing window.

Monthly Storage Charges Look Back Beyond the Weekly Billing Window

A weekly bill that triggers a monthly Storage by Location fee will charge for any location that was occupied at any point during that calendar month — not only locations holding stock within the 7-day billing window. Clients should be aware that a location vacated mid-month will still appear as a charge on the end-of-month weekly bill.

How Storage by Location Charges Are Calculated

The charge for each qualifying bin is:

Charge = Rate × Number of occupied time units

Example: A bin occupied for 6 days at a rate of $2.40/day generates a charge of $2.40 × 6 = $14.40.

The charge description on exported bills reads: "Location [bin name] of type [location type] occupied for [n] [time unit](s)."

Storage by Location Edge Cases and Conflict Rules

Multi-Product Bins Are Charged Once Per Time Unit in Storage by Location

A bin that holds multiple products is charged once per occupied time unit — not once per product. The bin itself is the unit being billed, not the SKUs inside it.

Storage by Location Conflict Detection

Each Storage by Location fee is tied to specific location types. Two fees targeting the same location type on the same billing profile will conflict and be blocked with the error: "Invalid fee, conflicts with existing fee(s) '[fee name].'"

To charge different rates for the same location type across different billing configurations, use separate billing profiles rather than adding multiple fees targeting the same location type to the same profile.

Bins Without a Location Type Are Skipped

When a bin has no location type assigned and the fee is not configured with Applies to locations without a type, ShipHero does not charge the bin and raises no error. Audit warehouse locations regularly to confirm all bins have the correct location type assigned — particularly after adding new locations.

More Resources

  • ShipHero Public API

    Connect your tools and AI agents directly to ShipHero with the Public API. Build powerful integrations, automate workflows, and tap into real-time data using the AI tools you prefer, with the option for secure, read-only access for AI-driven insights without added risk.

  • ShipHero Academy

    Explore ShipHero Academy for certifications, deep-dive training, and expert-led courses on WMS and fulfillment. Build your expertise and help your team operate at a higher level.

  • Change Log

    Stay up to date with the latest improvements across ShipHero. The Change Log gives you a clear view of new features, enhancements, and fixes as they roll out—so you always know what’s new and what’s better.