Unbilled work: extra handling that never reaches an invoice

Work that was done but never billed does not show in your revenue, and nobody on the floor sees it either. This is how you match the work carried out against your invoices and rates every day, and what to do with the gap.

What is unbilled work at a 3PL?

Unbilled work is everything your warehouse did for a client that the contract says gets paid, but that never made it onto an invoice. Your people’s hours were paid and the materials were used. Only the invoice line is missing.

In 3PL billing the fixed items rarely go wrong. Storage and picking usually come straight from the WMS. What leaks is the work around them, the job someone does on request, outside the standard process. Those are the value-added services, and they are the ones least clearly written down. How the whole monthly invoice is built, from storage to transport, is in 3PL billing.

Where does extra work get lost between the floor and the invoice?

It gets lost wherever a request arrives outside the WMS. A planner at the client phones or emails, the team leader sorts it out, and that is that. Nobody on the floor knows there should be an invoice line. It is usually work like this:

  • Extra handling, such as repacking, labelling, building kits or opening a shipment for an inspection.
  • Returns that are unpacked and assessed before they go back to a location, while the contract only mentions receiving them.
  • Rush orders that still have to go after the cut-off, with an extra run or an extra shift.
  • Storage above the agreed volume, because seasonal stock stays longer than planned.
  • Relabelling after a supplier error or a new requirement from a retailer.

There is a second leak. Sometimes the work is in the WMS, as a transaction or a scan, but the job has no activity code of its own. It then counts as an ordinary pick or a stock correction. The office invoices from the rate schedule and a monthly statement, so nobody there ever sees that line.

How do you match work carried out against invoices and rates?

For each client you set what happened on the floor against what the contract lets you charge and what was actually invoiced. If the work was done, there is a rate for it and the invoice line is missing, you have found a gap.

What happened

The basis is the transactions and scans in the WMS: receipts, picks, movements, return bookings and transfers. Then there is work outside the WMS, such as the email with the rush request, the team leader’s note or the hours on an extra shift. That loose part is where AI helps. The system reads the email or the free text, recognises that it is extra handling and links it to the client and the day the work was done.

What was agreed

The contract and the rate schedule become a table, with a unit and a price for each activity: per item, per order, per pallet per week or per hour. If a job is not in there, that is a finding too, because it means the agreement is missing.

What was invoiced

The invoices sent come from the ERP or the accounting package, line by line. For every job carried out, the system looks for the invoice line that belongs to it. Anything without a match goes on the list.

This goes into the systems you already run. The WMS stays the WMS and invoicing stays where it is. What such a layer between the systems looks like is in connecting WMS, TMS and ERP.

Why a daily list rather than a monthly check?

After a month nobody remembers who asked for it or whether it was your own mistake. A day later the team leader can tell you in a minute.

Each line shows the client, the job, the evidence from the WMS or the email and the rate that applies. Someone in the office decides per line: invoice it, let it go on purpose, or pass it to the account manager because there is no agreement for it. The system never sends an invoice itself.

That is deliberate. Sometimes there is a good reason not to charge: the mistake was yours, or you offered it as a favour. That call belongs with someone who knows the client. The system only makes sure somebody makes it, instead of the work quietly disappearing.

Why bill only going forward?

A backdated invoice covering a whole year often costs you more in the relationship than it brings in. A client who suddenly gets a bill for twelve months of repacking mostly hears that you were not keeping track yourself. After that, every conversation is about that one invoice. A new rate for the coming months is something you simply discuss, but a bill for last year’s work lands as an accusation, even when the amount is right.

You also often no longer know what was said verbally. Perhaps someone once said a few returns a week were included in the rate. It is written down nowhere, but your client remembers it exactly. A time limit can play a part too. Under the Logistics Services Conditions (LSV) of FENEX and TLN, claims in connection with the agreement become time-barred after twelve months (article 11). What that means for your contract is for your lawyer to decide.

Looking back is fine, just not to send a bill. A past period shows how big the leak is and which jobs it sits in. That can serve as the baseline before we build anything, as how we work describes. What you charge after that starts from a date you agree with the client.

How do you agree in the contract which extra handling you invoice?

Put every extra job on its own line in the rate schedule, worded so the floor recognises it and the WMS can count it. Nobody can check a vague item afterwards. For each line, pin down:

  • A description people on the floor recognise. Repacking per box, labelling per item, assessing a return per order line. An item like sundries or extra work on request tells nobody anything.
  • A unit the WMS can count. If the system cannot count it, nobody can invoice it later. The Dutch Tax Administration also asks for the extent of the service on every invoice.
  • Who may request the job, and through which channel. A fixed email address or a field in the client portal is enough.
  • What the standard rate includes. A number of returns per month included is fine, as long as that number is on paper.

Then give every job its own activity code in the WMS. The work ends up in the data by itself and nobody has to remember it. That needs no new software, just someone to set up the codes.

Rush work needs an agreement of its own. Write down what counts as rush, for example an order that arrives after the cut-off and has to leave the same day, and put the surcharge on the same line. Without that definition every late order becomes an argument.

Which extra job goes on the list first?

The job your team most often does on request, for one client. Pick the combination where your team most often does something extra, often returns or repacking. Build the list for that, and check for a few weeks whether the lines are right and whether the office actually works with it. Only then does the next client come in.

That is how we build everything: one process first, and the next step only once this one works and has been measured. What that looks like across the rest of the warehouse is in AI in the warehouse. If you want to do the same with the invoices from your staffing agencies, see checking agency invoices. Whether this fits your warehouse is on who we build for.

Which jobs fall off the invoice in your warehouse is something we can look at together in an introductory call.

Does this sound familiar?

In a 45 minute first call we look at your own process and tell you honestly whether AI pays off there.