A 3PL operator does not own the goods. They own the warehouse, the equipment, the people and the contracts. Everything sitting on the racks belongs to twelve different companies that outsource their logistics. Each of those companies wants different things - their own rates, their own SLA, their own portal, their own reports, sometimes their own carriers. A warehouse where all clients are the same does not exist. From a WMS perspective, 3PL and fulfillment is a domain of separate architectural decisions you don't encounter in a captive warehouse. Below I lay out what such a system has to deliver, based on implementations at operators like Hermespol, FlexLS and a few smaller ones.
How 3PL differs from a captive warehouse
A captive warehouse has one goods owner. Decisions like "FEFO or LIFO", "what do we do with an expired batch", "when do we ship to the customer" - are internal. In 3PL these decisions are contractual. Client A wants FEFO, client B wants LIFO because that's how they value their inventory. Client A wants same-day shipping until 2 PM, client B within 48 hours. Client A wants InPost and DHL, client B only UPS. WMS has to handle each of them by their rules - not by warehouse rules.
Two key concepts in 3PL are billing and SLA. Billing is what the operator invoices the client for - everything has to be recorded and measured. SLA is the agreement under which the operator guarantees a defined quality of service - dispatch time, pick accuracy %, return processing time. Without a WMS that remembers every operation to the minute, you measure neither billing nor SLA.
Multitenant - stock separation, shared resources
Multitenant in WMS means one system serves many clients (tenants) with full isolation of their data. The operator sees everything (they own the system), client A sees only their stock, documents and reports. That's the standard - but the devil is in the details.
First level of separation - SKU. Each client has their catalog, their numbering, their EANs. Client A may have SKU "12345" meaning a black t-shirt, client B may have "12345" meaning canned tomatoes. Same number, completely different goods. WMS has to distinguish and never confuse them - the key is composite (client, SKU), not SKU alone.
Second level - locations. Here is the model decision. Variant one - locations dedicated to a client (rows 7-10 are client A, rows 11-14 are client B). Variant two - shared locations, where WMS at a given spot can hold a pallet of any client. The first is simpler but loses space utilization - client A has empty racks, client B is short of space. The second maximizes utilization, but requires the system to reliably remember which client owns each pallet.
In practice most 3PLs I've seen use a hybrid: fast-moving goods on dedicated locations (pickup with the client's zone), slow-moving on shared storage, returns in a neutral return area. Weaver WMS supports both models simultaneously.
Billing models
The most common billing models in 3PL contracts I see:
- Per order - flat fee per order regardless of line count. Simplest to bill, but unfair when orders vary widely (1-line vs 50-line).
- Per line - rate for each line on the order. Fairer, but requires distinguishing line types (line with 1-piece pick vs line with 24-piece pick).
- Per scan - operator gets paid for every terminal scan. Scan a pallet from the warehouse (1 scan), 30 pieces from the pallet (30 scans), put it in the box (1 close-scan). Very precise, but requires WMS to log every scan and tally it up.
- Per pallet or per m³ - storage. Client pays for monthly footprint. Variants: just pallet, pallet plus shelf, m² floor.
- Hybrid - typical contract is: storage per pallet + handling per order + packaging materials per piece + transport pass-through + return cost.
From a WMS perspective all these models require separate operation categorization. Every goods movement, every scan, every customer service must be assigned to a billing type and a client. At the end of the month the system generates a billing report for invoicing - down to the operation.
Dedicated vs shared warehouse
Some clients require a dedicated warehouse - their own part of the building, no one else has access. That's how pharma works, some cosmetic brands (compliance reasons) and larger food brands. The client pays extra for "their" space, but gets exclusivity guarantees.
Shared warehouse is the standard for smaller clients. They all use the same floor, the same equipment, the same gate. WMS isolates them at the data level. From a security perspective this is not worse - if the system is configured correctly, client B has no way to see client A's data. From a physical perspective - sometimes there are constraints (e.g. a pharma client requires a separate zone even without compliance, because they don't want their drugs sitting on the same pallet as another client's cosmetics).
The decision "dedicated or shared" translates directly into contract price. Dedicated is 30-60% more expensive per pallet per month, because the operator can't slot another client into the same locations. The client pays for reservation, not actual usage.
Client portal - what must be there
A client doesn't want to call every morning and ask "where's my parcel". They want to log in and check themselves. A 3PL self-service portal typically has six things:
- Real-time stock - SKU list, quantities, locations (sometimes aggregated), batches and expiry dates if applicable.
- Order status - with history fragments (received, in picking, packed, picked up by carrier, delivered). Ideally with a tracking link to the carrier.
- Inbound notifications - the client enters that a truck will arrive, the system reserves a gate slot and shows it to the operator.
- Outbound orders - the client can enter an order manually or via API.
- Monthly reports - billing, SLA, KPIs, return list, throughput statistics.
- Complaints and tickets - a transparent "something is wrong" mechanism.
The portal is not an add-on - it's often the main reason a client stays or leaves a 3PL operator. Bad billing, poor stock visibility and lack of fast reports are the top 3 reasons for contract termination. Weaver WMS provides the client portal as part of the standard delivery, branding (logo, colors) the client can configure themselves.
Onboarding a new client
Onboarding a new client at a 3PL operator is a 4-12 week project depending on size. Main phases: SKU catalog import, mapping client SKUs to warehouse naming, integration with client systems (their ERP or e-commerce platform), opening balance import (receipt or "open balance"), training operators on client products, trial period of 2-4 weeks.
Most often something doesn't go to plan during integration. The client has their ERP (Comarch, SAP, Subiekt, custom system) that has to be synchronized. Field mapping can be non-trivial - "product code" in the client's ERP may correspond to "external_sku" in WMS, "warehouse" in the ERP doesn't necessarily mean "3PL warehouse" but a "virtual client warehouse", "stock" in the ERP may include reservations the WMS doesn't know about.
In Weaver WMS we have a library of typical integrations: Comarch ERP XL, Comarch Optima, Subiekt GT, SAP Business One, BaseLinker, IdoSell, PrestaShop, Shoper, WooCommerce. Plus REST API for custom integrations. For a typical client with a standard ERP, onboarding wraps up in 4-6 weeks. For a client with a custom ERP system or unusual data structure - 8-12 weeks.
SLA and KPI - measure to control
SLA (Service Level Agreement) in 3PL defines specific, measurable thresholds for service quality. Most common:
- OTIF (On-Time In-Full) - % of orders shipped on time and in full quantity. Industry standard is 98-99%, retail chains require 99.5%.
- Order accuracy - % of orders without a picking error. 99.5% is a good standard, 99.8% is a premium client.
- Inventory accuracy - % stock reliability after physical inventory. 99.5% is the threshold for e-commerce, 99.8% for pharma.
- Receipt processing time - time between delivery and stock posting. Standard 4-8 hours.
- Return processing time - time of return handling from gate to decision. Standard 24 hours for e-commerce, 48 for retail.
Each of these indicators WMS has to calculate automatically and report monthly. In 3PL contracts there are penalty clauses - typically 1-3% of monthly value for SLA miss, escalating to termination after three consecutive miss months. Without automatic measurement, you don't know whether you're meeting it, nor where exactly you're losing.
Complaints and liability
Goods arrived damaged at the end customer. Who's responsible - the 3PL operator, the client (goods owner) or the carrier? The 3PL contract has to settle this precisely. Standardly: damage in transport to the warehouse (from receipt to operator) - claim against shipping party. Damage in the warehouse (pallet crushing, pick errors) - operator. Damage in outbound transport (from operator to end customer) - carrier.
Evidence comes from WMS and photo documentation. At receipt the pallet is photographed, its condition documented. At dispatch the box is photographed before sealing. The carrier's SSCC scan confirms the parcel left the warehouse intact. Without that documentation every complaint ends in a "who lost it" discussion, and in 80% of cases the operator takes the blame because they have no evidence of anything else.
Weaver WMS handles photo documentation natively - the operator takes photos from the terminal or a compact camera, the system links them to a specific receipt/dispatch document. At a complaint, the filter "show all photos of this document" gives you a visual history in 30 seconds.
Scaling and law
Adding the thirteenth client to a 3PL operator should not require a new WMS instance. The system architecture from day one has to be multitenant, otherwise scaling costs a fortune. Weaver WMS hosting runs on one Microsoft SQL instance plus one application - adding a client is configuration, not a new server.
Legal side: a 3PL contract has to cover GDPR (the client is responsible for consumer data, the operator for system security), insurance of goods in the warehouse (typically up to 100% of stock value, premium around 0.3-0.5% of stock value annually), liability for damage and loss, termination clauses (typically 3-6 months notice plus stock removal protocol). Without a lawyer experienced in contract logistics, these contracts cannot be written.
Real example - 3PL with 12 clients
A 3PL operator near Łódź, Poland. 12 clients, warehouse 9000 sqm, 2800 cbm of high racking, 24 operators on three shifts. Clients: 4 e-commerce (cosmetics, apparel, supplements, fitness accessories), 3 B2B (electronic components, automotive parts, tools), 5 dropshipping (very volatile - they come and go in 6 months).
The operator's day looks like this: morning inbound notifications (3-5 daily from 12 clients), until noon receiving at the gate, in parallel e-commerce order picking (2 PM deadline for same-day dispatch), 2-5 PM carrier dispatch, 5-10 PM B2B picking, overnight return processing and morning pre-picking. With 12 clients that averages 1400 orders per day, 4500 lines, 280 receipt deliveries weekly.
Before Weaver WMS they used Subiekt plus their own Excel sheets for billing. The e-commerce client had returns running 4-7 days instead of 24 hours, monthly invoices took two people a week to assemble, billing errors averaged 12-18% of invoice value (clients disputed). After implementation: returns 18-22 hours on average, invoices issued automatically on the 1st of the month, errors below 2%. ROI - 11 months, despite the Weaver WMS license for 24 users plus integration with 12 clients plus the portal costing approx. 125 thousand EUR.
The details that made the biggest difference: client portal (the client enters notifications themselves, checks stock themselves - the operator doesn't field 30 phone calls a day), mobile cycle counting (instead of one annual count, daily 2% of locations are verified - stock accuracy jumped from 92% to 99.4%), automatic SLA reports for every client emailed on the 1st of the month.
Weaver WMS as a 3PL platform
We developed the 3PL functionality in Weaver WMS together with our contract logistics clients - Hermespol, FlexLS and a few smaller operators. Multitenant, billing, client portal, automatic SLA reports, photo documentation, integrations with 8 popular ERPs and e-commerce platforms - these are not add-ons, they're parts of the system core.
Implementation at a new 3PL operator with 5-15 clients typically takes 4-8 months. Migration from an existing system (most often Subiekt + Excel or a dedicated system from a previous software company) requires moving stocks, documents and configuration per client. This is not an "off-the-shelf weekly implementation" - a 3PL operator has separate rules and separate integrations behind every client that have to be reproduced.
But one thing distinguishes 3PL from a captive warehouse: here the IT system is not a tool for more efficient work. It is the core product the operator sells to clients. Without a solid WMS the client leaves to the competition in three months - not even because of price, but because of lack of stock visibility and unclear billing. WMS in 3PL is not a cost center, it's a revenue enabler.