Storage by Product fees in 3PL Billing charge per product–location combination. For each combination, ShipHero finds the highest inventory level (peak quantity) recorded during the billing period, multiplies it by the product's volume, and applies your configured rates. This article covers how that charge is calculated, how peak quantity works, how conflict detection prevents duplicate fees, and what to watch for in edge cases.
For setup steps and field reference, see How to Set Up Storage Fees by Product in 3PL Billing.
Table of Contents
- How Storage by Product Charges Are Calculated
- How Peak Quantity Is Determined for Storage by Product Fees
- Storage by Product Conflict Detection
- Important Considerations for Storage by Product Fees
How Storage by Product Charges Are Calculated
For each product–location combination that matches the fee's scoping, ShipHero generates one charge entry per time unit in the billing period. The charge for each time unit is:
Charge = (Volume rate × peak on-hand volume) + (Per-item rate × peak on-hand quantity) + Per-day rate
Where peak on-hand volume = peak on-hand quantity × (length × height × width).
Storage by Product Calculation Example
| Setting | Value |
|---|---|
| Volume rate | $0.001 per cu in |
| Per-item rate | $0.10 per unit |
| Per-day rate | $0.50 |
| Product dimensions | 10 × 5 × 4 in = 200 cu in |
| Peak on-hand quantity | 50 units |
Charge per time unit = ($0.001 × 50 × 200) + ($0.10 × 50) + $0.50 = $10.00 + $5.00 + $0.50 = $15.50
How Peak Quantity Is Determined for Storage by Product Fees
For each time unit in the billing period, ShipHero uses the peak on-hand quantity — the highest inventory level recorded during that period — rather than the average or the end-of-period figure.
When a product was in the warehouse before the billing period started and no location changes occurred during the period, ShipHero looks back through the change log to find the most recent prior snapshot and carries that quantity forward into the current period.
This pre-period lookback works the same way as Storage by Location fees. A product that was in a location before the billing period began — and did not move — will still generate a charge. ShipHero detects the prior occupancy and carries it into the current period.
Monthly Fees on Weekly Billing Cycles
When a monthly storage fee fires on a weekly bill (the bill whose window contains the last day of the month), the peak quantity check covers the entire calendar month — not just the 7-day billing window. A product stored January 1–20 but removed before month-end will still be charged on the end-of-month weekly bill. See How Storage by Location Fees Are Calculated in 3PL Billing for the full pre-period lookback explanation.
Storage by Product Conflict Detection
Each Storage by Product fee is unique per combination of location type + product profile within a billing profile. A product profile is a named group of SKUs you define to control which fee applies to which items. Conflict detection is two-dimensional — two fees conflict only when they share both the same location type and the same product profile.
The following combinations are valid on the same billing profile:
- Two fees targeting the same product profile but different location types.
- Two fees targeting the same location type but different product profiles.
The following combination is blocked with the error "Invalid fee, conflicts with existing fee(s) '[fee name].'":
- Two fees targeting the same location type and the same product profile.
Pro-Tip
Use two-dimensional scoping to build a rate matrix. For example, set one fee for fragile products in cold storage at a premium rate, and a separate fee for standard products in standard shelving at a base rate. As long as each fee targets a unique location type + product profile combination, all fees can coexist on the same billing profile.
Important Considerations for Storage by Product Fees
Products Without Dimensions Are Skipped at Billing Time
When a product has no length, height, or width in its product record, ShipHero skips it at billing time — no charge is generated and no error is raised. This is the most common cause of missing storage charges on client bills. Audit product records regularly to confirm dimensions are populated for all inventory in 3PL client accounts.
Storage by Product Charge Description on Exported Bills
The charge description on exported bills follows this format: "[Product name] stored in [location name] — [n] [time unit](s) at peak quantity [qty]."