3PL Billing fee types — including Receiving by Item, Picking Fees, Storage by Product, and Return by Item — can be scoped to specific product types using product profiles. A product profile is a label you assign to a SKU so ShipHero knows which fee rule to apply when that item is billed. Understanding how profile matching and the default fee work prevents SKUs from being silently skipped at bill time.
To set up product profiles and assign them to products, see How to Use Product Profiles in 3PL Billing.
Table of Contents
- How Fee Matching Works in 3PL Billing
- How the Default Fee Behaves in 3PL Billing
- Practical Scenarios
- Recommended Setup for Product Profile Fees
How Fee Matching Works in 3PL Billing
When a fee runs, ShipHero evaluates each line item on the purchase order (PO) in this order:
- When the item's SKU belongs to one of the fee's configured product profiles, ShipHero charges the item.
- When the fee is marked as default with no product profiles configured, ShipHero charges the item.
- When the item has no product profile assigned:
- ShipHero charges it if Applies to products without a profile is enabled on the fee, or if the fee has no product profiles configured.
- Otherwise, ShipHero skips the item silently — no charge is generated and no error is raised.
Silently Skipped Items
When a line item does not match any configured fee, ShipHero does not flag it — the item goes uncharged. If you use profile-scoped fees, account for items without a profile explicitly, or you may have billing gaps you are unaware of.
How the Default Fee Behaves in 3PL Billing
The default fee ("if no other fee applies") is a per-PO fallback — not a per-line-item fallback. This is the most important distinction to understand.
ShipHero runs all non-default fees first. When any non-default fee generates at least one charge on a PO, ShipHero suppresses the default fee entirely for that PO — including for line items the non-default fee did not match.
| Scenario | Does the Default Fee Fire? |
|---|---|
| No profile-scoped fee matches any item on the PO | Yes — the default fee fires for the whole PO. |
| Profile-scoped fee matches some items, but not others | No — ShipHero suppresses the default fee entirely. Unmatched items are skipped. |
| Profile-scoped fee matches all items on the PO | No — ShipHero suppresses the default fee entirely. |
This matching logic applies to all 3PL Billing fee types that support product profile scoping, including Receiving by Item, Picking Fees, Storage by Product, and Return by Item.
Do Not Use the Default Fee to Catch Items Without a Profile
When a profile-scoped fee charges even one line item on a PO, ShipHero will not fire the default fee for that PO — even for items that had no profile and were skipped. The default fee is not a per-line-item fallback. Use Applies to products without a profile instead.
Practical Scenarios
| What You Want | Recommended Approach |
|---|---|
| Charge items without a product profile at a different rate than profiled items | Create a second fee with Applies to products without a profile enabled at the desired rate. |
| Charge items without a product profile at the same rate as profiled items | Enable Applies to products without a profile on your existing scoped fee. |
| Charge all items the same rate regardless of profile | Use a single fee with Applies to any product profile enabled. |
| Apply a catch-all only when no profile fee matches the PO at all | Use the Default fee — but understand ShipHero suppresses it if the profile-scoped fee matches even one item on the PO. |
Recommended Setup for Product Profile Fees
When you use profile-scoped fees, pair them with a dedicated second fee that has Applies to products without a profile enabled. This two-fee pattern ensures every received item is captured — profiled items are charged by the scoped fee, and unclassified items are charged by the catch-all fee.
Pro-Tip
Treat Applies to products without a profile as a required safety net any time you use profile-scoped fees. Without it, any SKU that has not been assigned a product profile will be silently skipped — and you will not know until you audit a bill.