Workflows

How a 3PL inventory management system tracks stock for each client

Published 2026-10-15 Last verified 2026-10-15

Pallet rack bay with three pallet positions of wrapped cartons, each marked with a different coloured blank label card

A 3PL does not own the stock it holds. It holds it for several clients at once, in the same building, sometimes on the same shelf. A 3PL inventory management system has one big job: for every unit, always know whose it is, where it is and whether it can be used.

This page explains how that works inside a 3PL WMS. It follows on from receiving, where stock first appears in the system, and putaway, where it gets a place.

The owner field

The simplest idea is the most important. Every inventory record carries the client's name or ID. Not the order, not the location: the stock itself.

A typical record answers these questions:

  • Which client owns it?
  • Which item?
  • How many?
  • Where is it?
  • What state is it in: available, on hold, damaged, quarantined?
  • Optionally: which lot, which expiry date, which serial numbers?

If the same SKU code belongs to two clients, the system treats them as two different items. A kitchen gadget called "K-210" for one client and "K-210" for another must never be merged. This is the first thing to test in any system: create the same SKU under two clients and see whether anything crosses over in search, picking or reports.

On hand, allocated, available

Three numbers sit behind most stock screens.

  • On hand. What the system believes is physically there for this client and item.
  • Allocated. The part of on hand that has been reserved for orders but not yet shipped. It is still on the shelf.
  • Available. What a new order can use: on hand, minus allocated, minus anything on hold or damaged.

A short example with invented numbers. A client has 100 units on hand. Orders have reserved 30. Ten units are on hold after a damaged carton. Available is 60.

Mixing these up causes real arguments. A client sees "100" in their store, sells 70, and wonders why the warehouse says it cannot ship. The fix is to show clients available, not on hand, wherever their store reads stock from. How allocation reserves stock is described in order allocation and picking.

There is often a fourth number, in transit or expected, which is stock announced by the client but not yet received. It should never count as available until receiving releases it.

States and holds

Stock in the building is not all equal. Common states:

  • Available. Can be picked.
  • Hold. Blocked for a reason, such as a pending client decision or a quality check.
  • Damaged. Received or found damaged, kept apart.
  • Quarantine. Suspected issue, often a recall or a contamination question.

Moving stock between states should be a recorded action with a reason, not a silent edit. If a pallet goes on hold at receiving, the record shows who did it and why, and the client's available number drops straight away.

Lots, expiry and serials

Not every product needs extra tracking. Decide per item.

  • Lot or batch number. Needed when a recall could require you to find every unit from one production run.
  • Expiry date. Needed for food, cosmetics, supplements and similar goods. The system uses it to pick earliest expiry first and to block stock that is too close to its date.
  • Serial number. Needed when each unit is individually identified, such as electronics sold with a warranty. Serial tracking means scanning each unit at receiving and again at picking.

Each added field slows the floor. If the client does not need it, leave it off. If they do, make the scan a required step and not an optional note, because a field that is sometimes filled is not much use in a recall.

Adjustments

Counts will not always match the system. When they do not, someone changes the record. This is an adjustment, and it should be one of the most controlled actions in the WMS.

A useful adjustment record holds the item, client, location, quantity before, quantity after, reason code, user and time. Typical reasons: count variance, damage found, found stock, theft or loss, correction of an earlier error.

Two rules help:

  1. Larger adjustments need a supervisor's approval. Set the threshold with your team, per client if needed.
  2. Adjustments feed a report the client can see. A client who finds out about a loss from a monthly statement, with no earlier record, will lose trust faster than one told on the day.

Scheduled counting is a topic of its own and is not covered on this site. Here it is enough to say that counts find the differences, and adjustments record what you did about them.

Transfers between clients

Sometimes a client sells stock to another client of yours, or returns a pallet to a related company. The wrong way to handle it is to open the record and change the owner. That erases the history.

The right way is a transfer: one record takes stock out of client A, another puts it into client B, linked together, with approval noted. Billing for the transfer, if you charge for it, comes from those records.

Transfers within one client, from one location to another, are simpler. They are a move, which should be scanned at both ends so stock is never "nowhere" in the system. A pallet in transit between locations is still on hand, but not available until the move is confirmed.

What clients should see

A client portal or report does not need every field. Most clients want:

  • Available and on hand by item.
  • Allocated and expected.
  • Stock by state, especially holds and damaged.
  • A history of movements for a chosen item.
  • Adjustments with reasons.

The history is what ends arguments. If every receipt, move, pick and adjustment is a record, the answer to "where did my 12 units go" is a list, not a debate.

Common problems

  • Stock received into a default location and never moved.
  • Adjustments made without reasons, so nobody can learn from them.
  • Clients reading on hand instead of available from the portal or an integration.
  • Lot or serial fields that are optional, so they are blank when needed.
  • Two clients sharing a SKU code with no separation in reports.

A simple starting setup

  • Owner field on every record, tested with duplicate SKUs.
  • Show clients available, on hand and allocated as three separate numbers.
  • Four states: available, hold, damaged, quarantine.
  • Lot, expiry or serial tracking only for items that need it.
  • Reason codes for every adjustment, with an approval limit.

For how inventory fits among the other parts of the system, see 3PL WMS modules explained and how a 3PL WMS works.

Questions people ask

What is the difference between on hand, allocated and available inventory?

On hand is everything physically recorded in the building for a client's item. Allocated is the part already reserved for orders. Available is on hand minus allocated, minus anything on hold, which is the number a new order can use.

How does a 3PL keep one client's stock separate from another's?

Every stock record carries an owner field, the client, and every search, order and report is filtered by it. Locations may also be kept to one client each, but the owner field is what protects the records.

When should a 3PL track lots and serial numbers?

When the client's product needs it, for example expiry dates, recalls or warranty. Tracking it for items that do not need it slows receiving and picking for no gain.

What should an inventory adjustment record?

The item, client, location, quantity before and after, the reason, who made it and when. An adjustment with no reason code is hard to explain to a client later.

Can stock be moved from one client to another?

Only as a recorded transfer, usually with approval from both clients. The system should write a pair of records, out for one and in for the other, instead of editing the owner on the existing record.

Sources

  • No third-party facts, prices or vendor claims are used on this page.