3PL Order Fulfillment: How It Works and Where Margin Leaks
A plain-English guide to 3PL order fulfillment operations, common billing gaps, and the reconciliation steps that protect your margin.
3PL order fulfillment is the end-to-end process of receiving inventory from a client, storing it, picking and packing individual orders, and shipping them to the end customer — on the 3PL's dime, labor, and SLA exposure. It sounds straightforward. In practice, it's a sequence of small transactions, each one carrying a billing moment that many operators never capture. That gap is where margin disappears.
This guide is written for 3PL operators: CEOs, COOs, CFOs, and ops managers who run one to a dozen sites and want to understand both the mechanics of the fulfillment cycle and the specific points where revenue quietly walks out the door. If you're a shipper evaluating 3PL partners, much of this will still be useful — but the real audience is the operator who needs to run this profitably.
How 3PL Order Fulfillment Actually Works
The textbook version of the fulfillment cycle has five steps: receive, store, pick, pack, ship. Every 3PL operator knows that's a simplification. The real cycle has a dozen or more billable sub-events — and most WMS platforms only auto-generate charges for the three obvious ones.
Here's the full operational picture, including the steps that routinely fall off the invoice:
- Inbound receiving: Pallets arrive, ASNs are matched, units are counted and scanned into the WMS. If carton counts don't match the ASN, someone does a discrepancy count — almost never billed.
- Putaway: Product moves from the dock to a storage location. If the client's SKU mix requires floor-level pick slots rather than bulk racking, that labor premium rarely shows up as a line item.
- Storage: Monthly or weekly pallet/bin fees. The most commonly billed step — but still subject to rate card drift if the contract hasn't been updated in two years.
- Order download and wave planning: OMS or EDI orders drop into the WMS and get batched into pick waves. Any manual order editing — common with Amazon Vendor Central orders — burns labor that's seldom captured.
- Picking: Operators typically charge a per-pick or per-order fee. Multi-SKU orders often carry a lower effective rate than the contract intended because the "per pick" fee was negotiated assuming a different order profile.
- Packing and materials: Cartonization, void fill, dunnage, custom packaging inserts. Clients frequently supply branded boxes but let the 3PL absorb the labor difference for non-standard pack-outs.
- Labeling and compliance: FBA prep, GS1 labels, floor-loaded LTL compliance labels. Prep fees are one of the most under-billed categories in ecommerce-adjacent 3PL work.
- Carrier pickup and manifesting: Small parcel manifests, LTL BOL generation, carrier scheduling. The BOL step is where accessorial exposure is created — but it's almost never the moment it's billed.
- Returns processing: Inbound return scans, condition grading, restocking or quarantine. Returns are chronically under-priced because they were an afterthought in most original contracts.
Each of these steps generates data in your WMS. The billing failure isn't usually a missing process — it's that the data isn't being reconciled against your rate card systematically.
The Real Cost Structure of 3PL Fulfillment
Before you can identify where margin leaks, you need an honest cost model. Most 3PLs price on four categories: labor, space, materials, and carrier-passthrough. The problem is that cost allocation is usually done at the facility level, not the client level — so a high-touch DTC client who requires custom kitting and branded inserts gets averaged in with a simple B2B replenishment account.
| Cost category | Typical share of fulfillment COGS | Billing capture rate (industry observation) | Common gap |
|---|---|---|---|
| Receiving labor | 8–12% | ~70% | Discrepancy counts, blind counts, repalletizing |
| Storage | 15–25% | ~90% | Rate card drift on long-standing clients |
| Pick & pack labor | 35–50% | ~80% | Order profile creep, non-standard pack-outs |
| Materials | 5–10% | ~65% | Dunnage, void fill absorbed as overhead |
| Accessorials & special handling | 5–15% | ~55% | ~18% of BOLs missing accessorial line items |
| Returns processing | 5–10% | ~60% | Per-unit handling, restock fees, quarantine labor |
The right-hand column is where your money is hiding. Accessorials alone — fuel surcharges, liftgate fees, residential delivery, inside delivery, re-delivery — are missed on roughly 18% of BOLs in typical 3PL operations. That's not a rounding error. On a facility doing $4M in annual freight-related billings, that's $720,000 of unbilled passthrough sitting in your carrier invoices.
Where Margin Leaks in Fulfillment Billing
The leakage isn't usually fraud or negligence. It's structural. Billing teams generate invoices from a billing module that only fires on the events it's configured to capture. If your WMS wasn't configured to track discrepancy counts as a billable event, every discrepancy count since go-live has been free labor for your client.
Order profile creep
A client launches with an average order of 1.2 units per order. Two years later, they're running flash sales with 4.1 units per order and bundle SKUs that require three separate picks. Your per-order fee hasn't changed. Your labor cost per order has gone up 240%. This is order profile creep, and it's one of the most common per-client margin destroyers in DTC fulfillment.
The fix isn't just renegotiating. It's catching the drift before your next QBR by comparing actual WMS pick data against the order profile assumptions in the original contract. Learn more about how warehousing and fulfillment contracts should be structured to account for profile changes.
Rate card drift
Rate cards that weren't updated at annual renewal lock in 2019 pricing on 2024 labor costs. A receiving fee of $0.08 per unit made sense when warehouse labor averaged $14/hour. At $19/hour (the current national median for warehouse workers, per BLS data), the same operation costs 35% more to staff. If your rate card hasn't moved, the client is getting a discount you never agreed to.
Unbilled special projects
Repackaging campaigns, inventory audits requested by the client, physical counts, label changeovers, product recalls — all of these are project labor events that ops teams execute and then forget to bill. They're not in the standard billing run because they're not tied to a standing rate card line. In a 90-day audit of a single mid-size 3PL client, one operator found $142,380 in unbilled special project labor that had been executed and logged in the WMS but never surfaced to the billing team.
Why You Need Client-Level Margin Visibility
Most 3PLs know their facility-level margin. Very few know their per-client margin with enough precision to act on it. The consequence: clients who are quietly running at negative margin stay on the books for years because no one has done the math at the right level of granularity.
A client running at -3% gross margin doesn't look like a disaster on the P&L — their revenue is real, their invoices are paid, and they're "one of your biggest accounts." But they are actively making you less profitable with every order they ship. If that client doubles their volume, they double your loss.
Per-client margin analysis requires reconciling four data sources together: your WMS activity log, your carrier/shipping data, your rate cards, and your issued invoices. When those four sources don't tell the same story, the delta is either unbilled work or mispriced work. Both are fixable — but only after you can see them. This deep dive on 3PL warehousing operations covers how to structure client profitability reporting from your WMS data.
The Fulfillment Tech Stack and Where Billing Breaks Down
The typical 3PL fulfillment tech stack has three to five systems that each hold a piece of the billing truth: a WMS (warehouse management), a TMS or carrier integration layer, an OMS (order management), a billing module, and sometimes a client portal. The gap isn't that the data doesn't exist — it's that no single system reconciles all of it on a regular cadence.
WMS platforms like Deposco, 3PL Central (Extensiv), or Logiwa are excellent at tracking what happened operationally. They are not designed to be billing reconciliation engines. They'll tell you 847 picks happened on Tuesday. They won't automatically check whether all 847 were billed at the correct rate tier, whether any triggered special handling fees, or whether the carrier surcharges on the resulting shipments matched what you passed through to the client.
The four-way reconciliation problem
A clean billing run requires checking WMS activity against rate cards, then checking rate-card-applied charges against issued invoices, then checking carrier invoices against what you billed the client for freight. Most 3PLs do one or two of these checks. Rarely all four. The gaps in between are where $100K+ of annual leakage accumulates.
If you're evaluating WMS or billing software, this guide to order fulfillment software for 3PLs covers what to look for in billing automation and reconciliation capabilities.
Accessorial Charges: The Biggest Unbilled Category
Accessorials deserve their own section because they're both the most frequently missed billing category and the least understood by clients. An accessorial is any carrier charge beyond the base rate: liftgate, residential delivery, inside delivery, re-delivery, fuel surcharge, address correction, Saturday delivery. These charges appear on your carrier invoice after the shipment closes — often days or weeks after the order was billed to the client.
The process breakdown is predictable: the 3PL bills the client at ship time using estimated freight rates, then receives the actual carrier invoice 10–30 days later with accessorial add-ons. If there's no systematic process to match those carrier invoice line items back to client invoices and issue adjustments, the accessorials sit as an unreimbursed cost. At scale, this is material. A 3PL shipping 2,000 parcels per week with an average accessorial rate of $3.50 per affected shipment — at 18% incidence — is absorbing roughly $65,500 per year in unrecovered accessorials from parcel alone, before touching LTL.
The industry context here is worth noting: carrier accessorial revenue has grown significantly as a share of freight revenue over the past decade, a trend FreightWaves has tracked across multiple carrier earnings cycles. The carriers are getting better at billing accessorials. 3PLs need to get equally rigorous about passing them through.
SLA Exposure: The Other Side of the Margin Equation
Billing accuracy is one side of per-client margin. SLA exposure is the other. Most 3PL fulfillment contracts include order accuracy guarantees (99%+ ship-same-day for orders received before cutoff), damage rates, and carrier on-time performance clauses. When those SLAs are missed, the financial liability is real — but it's rarely modeled in the client's margin calculation.
An order accuracy SLA of 99.5% on a client shipping 10,000 orders per month means you're contractually liable for remedies on up to 50 error orders per month. If each remedy costs $25 in labor, reshipping, and credit, that's $1,250/month in SLA-related costs that should be factored into the client's margin — but usually isn't, because it's booked as a general ops expense rather than attributed to the specific client.
- Map every SLA commitment by client and quantify the financial liability at the contractual penalty rate.
- Track actual SLA performance at the client level, not the facility average — one client's error rate can be 4x the facility average while being masked in aggregate numbers.
- Include SLA reserve costs in your per-client margin model as a line item, even if it's an estimate.
- Renegotiate SLA terms for clients whose order profiles have changed significantly since contract signing — a same-day cutoff that made sense for simple orders may be operationally unsustainable for a client who has added kitting and custom packaging.
The combination of billing leakage and unmeasured SLA costs is what turns a client who appears profitable on the revenue line into a client who is actually running at -3% gross margin when all costs are allocated correctly.
How to Run a Fulfillment Billing Audit (Without a Six-Month Project)
A billing audit doesn't require a consultant engagement or a WMS upgrade. It requires a structured comparison of four data sources over a defined period — typically 90 days is enough to surface systemic gaps without being overwhelmed by volume.
Here's the sequence:
- Pull WMS activity by client for 90 days. Every receiving event, putaway, pick, pack, special project, and return should be in here. Export at the transaction level, not the summary level.
- Map each activity type to a rate card line item. Some will map cleanly. Others — discrepancy counts, repalletizing, client-requested inventory audits — won't have a rate card line at all. Flag those immediately.
- Pull issued invoices for the same period. Match invoice line items back to WMS activity. Any WMS activity without a corresponding invoice line is an unbilled event.
- Pull carrier invoices for the same period. Compare accessorial charges on carrier invoices to what was billed to clients. The delta is your accessorial leakage.
- Calculate per-client gross margin. For each client: (invoiced revenue) minus (WMS-attributed labor cost) minus (space cost) minus (materials cost) minus (actual carrier cost including accessorials). This is the number most 3PLs have never seen at the client level.
The math is straightforward. The friction is data access and the time to build the reconciliation. That's solvable — but it has to be on someone's calendar, or it won't happen. Most 3PLs who do this exercise for the first time find at least one client who needs to be repriced immediately and one or two billing configuration gaps that, once fixed, pay for the audit effort many times over. Modern Materials Handling has noted that billing accuracy is consistently cited as a top operational challenge in annual 3PL benchmark surveys.
For a deeper look at what a WMS should be capturing to support this kind of audit, see this operator's guide to ecommerce WMS selection, which covers the data fields and event logging that make billing reconciliation feasible.
Frequently Asked Questions
What is 3PL order fulfillment and how is it different from in-house fulfillment?
3PL order fulfillment means a third-party logistics provider handles receiving, storage, picking, packing, and shipping on behalf of a brand or retailer. Unlike in-house fulfillment, the brand doesn't own the warehouse infrastructure or employ the fulfillment labor — they pay the 3PL per transaction, per pallet, or on a hybrid model. The operational risk and capital investment shift to the 3PL, but so does the margin pressure when billing isn't structured correctly.
How do 3PLs typically price order fulfillment?
Most 3PLs use a combination of per-order fees (covering basic pick and pack), per-unit or per-SKU fees for multi-line orders, monthly storage fees per pallet or bin, receiving fees per unit or per pallet, and pass-through freight charges. Special services — kitting, FBA prep, custom packaging, returns processing — are typically line-itemed separately, though they're often missing from older contracts. Rate cards should be reviewed annually against actual cost inputs, particularly labor and carrier rates.
What are the most commonly missed billing items in 3PL fulfillment?
The top five consistently missed billing items are: accessorial charges on carrier invoices (missed on roughly 18% of BOLs), special project labor (inventory audits, repack campaigns, label changeovers), receiving discrepancy counts, returns processing beyond a basic per-unit fee, and non-standard pack-out labor where clients use custom packaging that takes longer to execute than standard cartons.
How can a 3PL identify clients running at negative margin?
Per-client margin analysis requires allocating all four cost categories — labor, space, materials, and freight — to each client individually based on actual WMS activity, not facility averages. The most reliable method is a 90-day reconciliation that compares WMS event data to issued invoices and actual carrier costs. Clients running at negative margin are almost always identifiable through this exercise; the problem is that most 3PLs have never built the reconciliation because the data sits in separate systems.
How long does a 3PL billing audit typically take?
A focused billing audit covering a 90-day window can be completed in 7–14 days with read-only data access to your WMS, carrier invoices, rate cards, and billing system. The setup time — exporting data and mapping fields — is typically the longest step. The actual reconciliation, once data is structured, runs quickly. The key is having a clear methodology before you start, so you're not improvising the matching logic mid-audit.
Should 3PLs audit all clients or focus on specific ones?
Start with your top five clients by revenue volume and your bottom five by perceived margin. The high-volume clients have the largest absolute dollar exposure from billing gaps. The low-margin clients may be candidates for repricing or off-boarding — but you can't make that decision confidently until you've done the attribution math. Once you've built the reconciliation template for those ten clients, rolling it out across the full book is incremental work.
Accurate billing isn't a finance team problem — it's an operations problem. The events that don't get billed were executed on the warehouse floor. Fixing the capture rate starts with understanding exactly which activities your WMS is logging, which ones your rate card covers, and which ones have fallen through the gap between the two. That gap, across a typical 3PL, is worth 1–3% of revenue. On a $5M operation, that's $50,000–$150,000 per year that belongs on your invoices and isn't there yet.