For a brand that outsources fulfilment, the warehouse is a black box. Stock goes in, orders go out, and once a month an invoice arrives. When the numbers on that invoice don't match what the client thinks happened, the result is an email thread, a credit and a client who starts looking around.
A good monthly report opens the box. It shows the stock, the inbound, the orders and the charges, and it makes every invoice line traceable. This is the checklist we're building Client Inventory Portal and Fulfilment Billing Statements around. It works just as well from your warehouse management system's exports.
The report at a glance
| Section | What it shows | The question it answers |
|---|---|---|
| Stock on hand | On hand, allocated, available and days of cover by SKU | What do I have, and when do I reorder? |
| Inbound | Receipts against ASNs, discrepancies, time to put away | Did everything I sent arrive? |
| Fulfilment | Orders received and shipped, same-day rate, accuracy | Are my customers getting their orders? |
| Returns | Units returned, restocked or written off | What came back, and in what condition? |
| Billing | Every charge, with the count behind it | What am I paying for? |
What goes in each section
1. Stock on hand
For each SKU: units on hand, units allocated to open orders, units available to sell, and days of cover, which is available units divided by average units shipped per day. Flag SKUs below a reorder threshold and slow movers with months of cover. Slow movers matter because the client pays to store them.
2. Inbound
Each receipt compared with its ASN: units expected, units received, and any shortage, overage or damage, with photos where you have them. Add the time from arrival to available stock. Clients planning a launch care about that number.
3. Fulfilment
Orders received and shipped, orders carried into next month, same-day ship rate for orders in before your cut-off, and pick accuracy (errors as a share of orders shipped). Name every error and the reship.
4. Returns
Units returned by SKU and what happened to them: restocked, set aside for inspection or written off. Returns quietly change available stock, and clients often don't know until a SKU oversells.
5. Billing
This is where the report earns its keep. List each charge type (receiving, storage, pick and pack, additional items, packaging, shipping, returns, special projects) with the unit, the quantity billed, and the activity count it comes from. If the client can match every quantity to a number elsewhere in the report, there's very little left to dispute.
A worked example
Here's October for a fictional 3PL client, Saltmarsh Candle Co. Stock on hand at October 31:
| SKU | On hand | Allocated | Available | Avg shipped / day | Days of cover |
|---|---|---|---|---|---|
| Fig & Cedar 8oz | 1,240 | 60 | 1,180 | 42 | 28 |
| Sea Salt 8oz | 860 | 35 | 825 | 55 | 15 |
| Ember 12oz | 410 | 12 | 398 | 31 | 13 |
| Holiday gift set | 2,100 | 0 | 2,100 | 4 | 525 |
Two SKUs need reordering soon, and the gift set has well over a year of stock tying up storage. That's worth a conversation before the holiday season, not after.
Fulfilment for the month: 3,420 orders received and 3,398 shipped, with 22 received after the October 31 cut-off carried into November. Of the 3,275 orders that arrived before the daily cut-off, 3,180 shipped the same day (97.1%). There were 6 pick errors, 0.18% of orders shipped. Inbound: four shipments, 18 pallets, one short by 48 units of Fig & Cedar against its ASN, with photos of the delivered pallets attached.
And the billing lines, each tied to a count:
| Charge | Unit | Billed | Ties to |
|---|---|---|---|
| Receiving | Pallet | 18 | 18 pallets received across 4 inbound shipments |
| Storage | Pallet position | 42 | Positions occupied at the Oct 31 count |
| Pick and pack | Order | 3,398 | Orders shipped |
| Additional items | Unit | 2,615 | Units beyond the first in each order |
| Shipping labels | Label | 3,412 | 3,398 orders + 14 reships (6 pick errors, 8 carrier damage) |
| Returns | Unit | 57 | Units returned: 49 restocked, 8 written off |
The shipping line is the one that would have caused a dispute: 3,412 labels against 3,398 orders. Explained up front, with the 14 reships listed by order number, it's simply accurate. Whether the six reships caused by pick errors are billed at all is a policy question; most clients expect them not to be, so say what you've done.
Cutting invoice disputes
- Bill from the same data the client sees. If the invoice and the report come from different exports, they'll eventually disagree.
- Show the count behind every line. Quantity, unit and what it ties to.
- Explain the gaps before you're asked. Reships, carry-over orders, storage count dates and minimums.
- Keep your contract terms next to the invoice. When storage is counted, what counts as an additional item, and how reships are billed.
- Send the report with the invoice, not after it. A charge with its explanation attached rarely gets questioned.
Common mistakes
- Reporting on hand without allocated. Clients oversell stock that's already promised to open orders.
- Burying inbound discrepancies. A short receipt raised in month three is the client's word against yours.
- Accuracy without the errors. "99.8%" is reassuring; the list of six orders is useful.
- One PDF for everything. Clients check stock daily and billing monthly. A portal they can log in to, with your name on it, serves both.
Frequently asked questions
What reports should a 3PL provide to clients?
At minimum: stock on hand by SKU with allocated and available quantities, inbound receipts compared with the advance shipping notice, orders received and shipped with same-day ship rate and accuracy, returns, and an itemised invoice where each charge ties back to an activity count.
What is days of cover?
Days of cover is how long current available stock will last at the recent rate of sales: available units divided by average units shipped per day. It tells the client when to reorder, and which SKUs are tying up storage.
Why do 3PL billing disputes happen?
Usually because the client can't match a quantity on the invoice to anything they can see: more shipping labels than orders, a storage count they didn't expect, or additional-item charges they can't verify. Most disputes are about counts, not rates.
How can a 3PL reduce invoice disputes?
Bill from the same activity data the client sees, show the count behind every invoice line, and explain differences up front, such as reships, orders carried over from the previous month, and when storage is counted.