A practical guide to every billing category, rate card structure, UOM-level pricing, and what to actually look for in a WMS that can automate it — from someone who has built and broken 3PL billing systems for 12 years.
Most 3PL operators understand their billing. They know what they charge for receiving, storage, pick and pack, and outbound handling. What they underestimate is how fast that billing structure becomes unmanageable as the client base diversifies.
You start with two clients. Both are ecommerce. Both ship small parcel. Both store their inventory in standard pallet positions. You build a simple rate card, export it to a spreadsheet at the end of the month, and invoice them. It works fine.
Then you add a B2B client who replenishes retail stores by the case. Then a food company with temperature-controlled storage and specific FEFO requirements. Then a brand that wants kitting done on-site. Then a client who insists on a custom accessorial structure with fuel surcharges baked into their rate card. Then a seasonal client who goes dark for four months and you need a minimum monthly fee to protect yourself.
Now your spreadsheet is 14 tabs and takes a full day to reconcile every month. Your team is manually cross-referencing WMS activity reports against the billing sheet. Errors happen. Clients dispute invoices. You discover that you underbilled a high-volume client for three months because a tier threshold was set wrong. That money is gone.
This is not an unusual story. It is the standard trajectory for a 3PL growing from two clients to ten. And the reason it happens is not that operators are careless. It is that 3PL billing is genuinely complex — more so than most WMS platforms are designed to handle — and most operators do not realize they have outgrown their billing infrastructure until they are already in pain.
This guide covers everything: every billing category, how to structure rate cards that scale, what UOM-level billing means and why it matters, and what to look for in a WMS that can actually automate this end-to-end.
| The spreadsheet that billed two clients will not bill ten. The question is whether you recognize that before or after it costs you. |
The Full Scope of 3PL Billing
Before we talk about automation, it helps to lay out every billing category that a growing 3PL needs to be able to configure and track. Operators who have been in the business for years sometimes undercount these — because they have internalized them — but new clients and new services consistently expose gaps in billing infrastructure.
| Billing Category | Unit of Measure | Example Rate | What to Watch |
| Inbound receiving | Per pallet, per carton, or per line item | $3.00/pallet + $0.50/carton | Some clients send loose cartons, not pallets. Others send pre-palletized freight. Rate must reflect the actual labor, not a flat fee. |
| Storage | Per pallet / per bin / per cubic foot / per location | $18.00/pallet/month | Billing period matters: some 3PLs bill by peak, some by average. Clarity upfront prevents disputes later. |
| Pick & pack — each | Per unit (each) | $0.35/each | Common for ecommerce clients. Volume tiers often apply: first 1,000 eaches at $0.35, above 1,000 at $0.28. |
| Pick & pack — case | Per case | $1.50/case | Common for B2B/retail replenishment. Different labor cost than picking eaches — rate must reflect that. |
| Pick & pack — pallet | Per pallet | $12.00/pallet | Wholesale/distribution clients. Often includes stretch wrap, labeling, and BOL generation. |
| Outbound freight handling | Per shipment or per pallet | $2.50/shipment | Distinct from the carrier charge. This is the 3PL’s labor to stage and hand off the freight. |
| Kitting / assembly | Per kit or per component | $0.75/kit | Highly variable and frequently underpriced. True cost must capture setup/teardown time, packaging steps, shrink-wrapping, assembly, and QC — not just the per-kit touch time. Flat kit fees almost always lose money on complex projects. |
| Value-added services (VAS) | Per occurrence / per unit | Varies | Gift wrapping, inserts, custom labeling, pallet wrapping, quarantine storage. These are frequently promised by sales and never billed because no system trigger exists. Must be tied to a location or activity to capture automatically. |
| Quarantine / hold storage | Per pallet per day (premium) | $3-5/pallet/day | Inventory in quarantine occupies space and creates admin overhead. Charging a premium daily rate — and escalating over time — motivates faster client action and reduces dead stock. |
| Returns processing | Per unit or per order | $2.00/unit | Grading, restocking, and disposition instructions add complexity — rate should reflect the actual steps. |
| Account management / minimum | Monthly minimum | $500/month minimum | Protects the 3PL when a client has a slow month. Non-negotiable for clients with unpredictable volumes. |
| Accessorials | Per occurrence | Varies by type | Fuel surcharges, residential delivery, after-hours handling, re-label requests. Every one needs a defined rate. |
This is not a theoretical list. Every one of these categories shows up in real 3PL operations within the first two to three years of growth. The question is not whether you will need to bill for them — you will. The question is whether your system can handle them when you do.
What UOM-Level Billing Actually Means
UOM stands for unit of measure. UOM-level billing means your system can charge differently depending on which unit of measure is involved in a given transaction — for the same client, for the same SKU, depending on how the order comes in.
Here is why this matters. Take a single client who sells consumer goods. On Monday they receive an ecommerce order for 6 units. On Wednesday they get a retail replenishment order for 12 cases going to a chain store. On Friday they ship 2 full pallets to a wholesale distributor.
These three transactions involve completely different amounts of labor. Picking 6 individual units from a bin takes different time than building 12 cases to a retail store’s specifications and generating compliance labels. Staging 2 pallets for LTL pickup is different again. A billing system that charges a flat pick fee regardless of unit type is not reflecting your actual costs — and over time that means you are subsidizing some orders and overcharging others.
UOM-level billing solves this by letting you configure, per client, the exact rate for each operation at each unit type. Pick charge by each: $0.35. Pick charge by case: $1.50. Pick charge by pallet: $12.00. The system reads the order, applies the right rate at the right unit level, and calculates the charge automatically. No manual lookup. No judgment call by whoever is building the invoice at month end.
| The difference in practice
Without UOM-level billing: your WMS records that 3,200 units shipped this month. You export the number, multiply by your standard pick rate, and invoice. If the mix was 80% cases and 20% eaches, you charged the wrong rate for 80% of the volume. With UOM-level billing: the WMS tracks each transaction at the unit level, applies the right rate automatically, and the invoice reflects actual activity. No export. No calculation. No error. |
The Kitting Trap: Why Project Pricing Breaks Down
Kitting is one of the most commonly underpriced services in a 3PL. On paper, a simple assembly job looks cheap — a few seconds per kit, multiplied by volume. In practice, that calculation misses most of the real cost.
True kitting cost has three layers that need to be captured separately. First is touch time: the actual per-unit labor to assemble, package, and QC the kit. Second is setup and teardown: the time to stage materials, organize the work area, brief the team, and clean up after the project — which can easily add 30-60 minutes that gets absorbed into overhead if you are not tracking it. Third is space cost: a kitting project occupies dedicated floor space for its duration. That space has a cost per square foot per day, and a project that occupies 400 square feet for a week has a real occupancy cost that your flat kit fee may not cover.
The result is that kitting jobs that look profitable on a per-kit rate basis are frequently losing money once all three layers are counted. The fix is not to raise your kit rate arbitrarily — it is to build a cost estimator that captures all three layers before you quote, and to use templates in your WMS for recurring kit types so you are not rebuilding the estimate from scratch each time.
A related issue: wide variability in kitting complexity. A kit that requires inserting a card into a box is fundamentally different from one that requires assembling five components, shrink-wrapping, and applying a compliance label. Both should not be priced the same way. Your rate card for kitting should define project types — simple, standard, complex — with different rates and different minimum time commitments for each.
| The rule on kitting pricing
Never quote a kitting job based on the per-kit touch time alone. Build your estimate from the full cycle: setup + touch time per unit + teardown + space cost + a 10-15% buffer for off-standard work. If the project is not profitable at that number, the conversation about price needs to happen before the job starts — not after you have already absorbed the loss. |
Rate Card Structure: How to Build One That Scales
A rate card is the formal document that defines what you charge a client for each service. Getting this right at the start of a client relationship prevents almost every billing dispute downstream. Getting it wrong — or leaving it vague — is the source of the majority of 3PL client conflicts.
The Five Elements Every Rate Card Needs
- Base service rates with explicit UOM: Do not just write ‘pick charge – $0.35.’ Write ‘pick charge per each unit – $0.35. Pick charge per case – $1.50. Pick charge per pallet – $12.00.’ Ambiguity costs you money.
- Tiered volume pricing: Define the thresholds at which rates change. ‘First 1,000 eaches per month at $0.35. Units 1,001-5,000 at $0.28. Units 5,001+ at $0.22.’ Without explicit tiers, you either manually recalculate every month or you leave revenue on the table when clients grow.
- Storage billing methodology: Specify how you measure storage. Peak pallet positions for the month? Average daily? First-of-month snapshot? Each method gives a different number. Your contract needs to say which one you use — because your client will notice if it does not.
- Minimum monthly billing: Always include a minimum. ‘This agreement carries a minimum monthly invoice of $X regardless of activity.’ Without this, a client who goes quiet for a quarter still occupies your system, your client manager’s time, and your insurance — for no revenue.
- Accessorial definitions and rates: List every accessorial you might ever charge with a defined rate. Fuel surcharge: X% of outbound freight. Residential delivery handling: $Y per shipment. After-hours processing: $Z per hour. Re-labeling: $A per unit. If it is not in the rate card, you cannot bill for it without a dispute.
| Rate card review cadence
Build in a formal rate card review clause: ‘Rates are subject to annual review with 30 days written notice.’ Labor costs change. Carrier surcharges change. Fuel changes. A rate card with no review mechanism means you absorb every cost increase silently — until the relationship becomes unprofitable and you either raise rates abruptly or let the client go. |
What a Real Monthly 3PL Invoice Looks Like
Here is a worked example of a complete monthly invoice for a mid-sized ecommerce and B2B client. This is the level of line-item detail your billing system needs to be able to generate automatically.
| Client: ABC Consumer Goods — Invoice Period: March 2026
Services: Mixed ecommerce (DTC small parcel) + B2B retail replenishment + kitting + returns processing Storage: 60 average pallet positions, temperature standard Carriers: FedEx small parcel (DTC) + LTL for retail replenishment |
| Line Item | Quantity | Rate | Amount |
| Receiving — 40 pallets @ $3.00 | 40 pallets | $3.00/pallet | $120.00 |
| Storage — 60 pallet positions, 30-day avg @ $18.00 | 60 pallets | $18.00/mo | $1,080.00 |
| Pick & pack — 3,200 eaches (first 1,000 @ $0.35, next 2,200 @ $0.28) | 3,200 units | Tiered | $966.00 |
| Pick & pack — 85 cases @ $1.50 | 85 cases | $1.50/case | $127.50 |
| Outbound shipments — 210 parcels @ $2.50 | 210 shipments | $2.50/ea | $525.00 |
| Returns processing — 42 units @ $2.00 | 42 units | $2.00/unit | $84.00 |
| Kitting — 500 kits @ $0.75 | 500 kits | $0.75/kit | $375.00 |
| Account minimum | — | $500 min | $0 (volume exceeded minimum) |
| Monthly Invoice Total | $3,277.50 | ||
Notice what this invoice requires the WMS to track automatically: unit-level transaction data (eaches vs. cases vs. pallets), tiered pricing applied at the correct threshold, kitting activity recorded separately from standard picks, returns processed and counted independently, and a minimum monthly check that correctly determined the minimum was not needed because volume exceeded it.
In a spreadsheet workflow, every one of those line items requires a manual pull from the WMS activity log, a manual calculation, and a manual check. Multiply that by ten clients and you have a billing process that consumes two to three days of staff time every month — and still produces errors.
Where Most WMS Platforms Fall Short on Billing
Here is the honest truth about WMS billing capabilities in the SMB market: most platforms were built to run the warehouse first, and billing was added as an afterthought. The result is billing modules that handle the simple cases well and break down as soon as your client mix gets complex.
The Most Common Billing Gaps
- Flat billing only: The WMS can record that 500 orders shipped, but can only apply one rate regardless of whether those orders were eaches, cases, or pallets. You have to manually segment by unit type and recalculate.
- No tiered pricing automation: Volume tiers exist on paper in the rate card but the system does not enforce them. You manually check whether a client crossed a threshold and adjust the rate. Miss a threshold and you undercharge.
- Billing disconnected from WMS activity: The WMS and the billing module are separate products connected by an export. Every month you run a report, export it to a spreadsheet, and build the invoice manually. This is common in multi-module platforms where the WMS, OMS, and billing layer were assembled through acquisition rather than designed together.
- No minimum monthly enforcement: You know you have a minimum, but the system does not check it. You check manually. Sometimes you forget.
- Accessorials tracked outside the WMS: Every after-hours event, every re-label request, every residential surcharge is logged in a separate spreadsheet because the WMS has no way to record them. At month end you reconcile two systems that were never designed to talk to each other.
- Value-added services promised but never billed: This is one of the most consistent sources of revenue leakage in 3PL operations. A client asks for gift wrapping or custom inserts during onboarding. The ops team does it. Nobody adds it to the rate card. Nobody flags it at billing. Months later you discover you have been doing it for free. Without a system trigger tied to the activity, VAS charges fall through the cracks every time.
- Blind receiving with no billing enforcement: Many 3PLs allow blind receiving — accepting inbound freight without verifying against a PO or ASN. The operational risk is inventory inaccuracy. The billing risk is that discrepancies between what was expected and what arrived are never reconciled, leading to mischarges, under-charges, or client disputes that require manual reconstruction to resolve.
What to Look For in a WMS That Actually Handles Billing
When you are evaluating a WMS for billing capability, these are the questions to ask in the demo. Do not accept ‘yes we can do billing’ as an answer — ask for a live demonstration of each.
- Can you configure different rates for the same operation at different unit types — each, case, and pallet — for the same client?
- If a client’s volume crosses a tier threshold mid-month, does the system automatically apply the new rate to the units above the threshold, or do you do that manually?
- How is storage billed — peak, average, or snapshot — and can I configure this per client?
- Where does the minimum monthly billing enforcement happen? Can you show me what happens in the system when a client’s activity falls below the minimum?
- How do accessorial charges get recorded and attached to the invoice? Can your floor staff log an event in real time, or is it all entered manually at month end?
- Is the billing module part of the same platform as the WMS, or is it a separate product that connects via export or API?
The last question is the most important. A WMS where the billing module runs on the same activity data as the warehouse operations — same database, same real-time events — is fundamentally more accurate than one where you export data, import it somewhere else, and build the invoice from a snapshot. Every handoff between systems is a point where errors enter.
How Major WMS Platforms Compare on 3PL Billing
| Billing Capability | Leanafy | Extensiv | Logiwa | Ramp |
| UOM-level billing (each/case/pallet) | Yes | Partial | No | Partial |
| Tiered / volume pricing | Yes | Partial | No | Partial |
| Recurring billing automation | Yes | No | No | No |
| Minimum monthly billing | Yes | Yes | No | Yes |
| Multiple rate cards per client | Yes | Partial | No | Partial |
| Accessorial charge library | Yes | Yes | No | Yes |
| Auto-apply tier changes | Yes | No | No | No |
| Client invoice portal | Yes | Yes | Partial | Partial |
| Billing tied to WMS activity data | Yes | Yes | Partial | Partial |
Y = Full capability P = Partial N = Not available. Based on publicly available feature information as of February 2026.
The Difference Between Cost and Price — And Why It Changes Everything
Most 3PL operators set prices based on what the market will bear or what competitors charge. Very few base their prices on what the service actually costs them to deliver. The gap between those two approaches is where 3PL margins quietly disappear.
Here is the distinction: your cost is what it takes you, at your current productivity level, to execute a given service. Your price is what you charge the client. The problem is that if you set your price based on your current productivity — which may include idle time, inefficient routing, understaffed peaks, or a new employee at 60% output — you are building your inefficiencies into the client’s rate card. You are charging the client for your problems.
The better approach is to build your prices based on optimized productivity — what the operation should cost when running well — and then use your WMS data to close the gap between current performance and that benchmark. If your system shows that picking a case is costing you $1.80 in real labor but your optimized rate should be $1.20, that is not a reason to raise your price. It is a gap to close operationally. And once you close it, your margin on that activity doubles without touching the rate card.
This only works if your WMS is capturing real cost data: time per task, volume per worker, idle time, error rates, overtime impact. Without that data you are managing by instinct. With it you have a continuous improvement engine that makes your operation measurably more profitable month over month.
| A note on temps and overtime
Two hidden cost drivers that most 3PLs do not account for in their pricing: temporary workers typically operate at around 70% of the productivity of regular staff — which means a pick that costs $0.35 with a trained regular employee costs closer to $0.50 with a temp. Overtime compounds this: you are paying a higher hourly rate for an employee whose output per hour typically drops as fatigue sets in. You are paying more to get less. Until your WMS is tracking labor cost per activity including staff type and hours worked, you cannot see this happening. |
The Right Time to Move Off Spreadsheets
There is no universal rule, but there are reliable signals. If any of these are true for your operation, your billing infrastructure has already fallen behind your business:
- You have more than three clients with meaningfully different rate card structures
- Any client has tiered volume pricing that requires manual threshold checks at month end
- Your month-end billing process takes more than four hours of staff time
- You have discovered at least one billing error — underbilling or overbilling — in the past six months
- A client has disputed an invoice and the dispute required you to manually reconstruct activity from WMS reports to validate the charge
- You have a client with kitting, returns, or accessorial charges that you track in a separate spreadsheet
- You are adding a new client and you find yourself thinking ‘I am not sure how to fit their rate structure into what we currently have’
Any single one of these is a signal. Three or more means your billing process is already a ceiling on your growth. The time you spend reconciling invoices at month end is time not spent onboarding new clients, optimizing operations, or selling.
| Your billing process should take hours, not days. If it takes days, you are not running a billing process — you are running a reconciliation project every month. |
What Good Looks Like
A properly automated 3PL billing system does the following without human intervention: it records every warehouse transaction in real time at the unit level, it applies the correct rate from the client’s rate card based on the unit type and volume tier, it accumulates those charges throughout the month, it checks the minimum at period close and adjusts if needed, it attaches any accessorial charges that were logged during the month, and it generates a line-item invoice that the client can view and download from their portal.
Your team does not build the invoice. They review it, confirm it is accurate, and release it. The difference in staff time is measured in hours per month — sometimes days — redirected from manual reconciliation to work that actually grows the business.
This is not a luxury feature reserved for enterprise 3PLs. It is the operational baseline for any 3PL that wants to scale past ten clients without proportionally scaling the back-office staff that supports them.
| This is exactly what Leanafy was built to handle
Leanafy’s billing module supports UOM-level rates, tiered volume pricing with automatic tier application, recurring billing, minimum monthly enforcement, accessorial charge libraries, and a client invoice portal — all native to the same platform as the WMS. If you want to see how it handles a specific rate structure, bring it to a demo. We will build it live. |
| Going deeper on 3PL operations?
Billing complexity is one of the five operational ceilings that stop 3PLs from growing. Vikrant Neb’s book Execution Under Pressure covers all five — and how to fix them — in detail built from 12 years of hands-on 3PL experience. Get the book at leanafy.com/book |