AWRA OpsHub Search

The Transport Invoice Nobody Can Check

Most Kenyan distributors do not own a fleet — they hire one. Which means transport is not a fuel problem, it is a rate problem: an invoice arrives, somebody checks the arithmetic, and nobody checks the rate it was multiplied by.

Logistics & Field Service Washingtone Aura 15 min read

Almost everything written about controlling transport cost assumes you own the vehicles. Cost per kilometre, fuel reconciled to distance, service schedules, replacement horizons. It is good advice for the minority. The majority of Kenyan distributors, manufacturers and importers move most of their goods on somebody else's lorry, and their transport cost is not a fuel leak — it is a line on a services invoice from a vendor with whom nothing is written down.

That changes the control completely. When you own the truck, the cost is built from inputs you can measure: litres, kilometres, tyres, repairs. When you hire, the cost is a rate multiplied by a quantity, plus a set of extras that appear one at a time and never go away. The arithmetic on the invoice is almost always right. The rate is the part nobody is checking, and the extras are the part nobody agreed to.

Buying haulage is not buying goods

Buying goods — what procurement is built for

  • A specification: an item, a quantity, a unit
  • A quotation you can compare line for line across three suppliers
  • A delivery that either happened or did not, verifiable by counting
  • A three-way match: what was ordered, what arrived, what was invoiced
  • A price per unit that sits on the order and can be checked against the invoice

Buying haulage — what actually happens

  • A rate structure: per tonne, per trip, per kilometre, or a mix depending on the lane
  • A verbal rate agreed once, by phone, adjusted whenever diesel moves
  • A service that was performed, evidenced only by the delivery note it carried
  • No goods receipt, because nothing was received — the middle leg of the match is simply absent
  • Accessorials — waiting time, night-out, offloading, return-empty, fuel surcharge — added per invoice

The second column is where the money is, and the reason it is uncontrolled is structural rather than lazy. A three-way match needs three documents, and a service generates two. There is no count to perform, so the only evidence that the trip happened at the agreed rate is a rate nobody wrote down.

What the system will and will not remember

Two specifics are worth knowing before designing any process around this, because both are load-bearing.

First, there is no supplier price list or contract anywhere in the product. A vendor has a name, contacts, payment details, a preferred flag and a blacklist flag — no agreed rates, no validity dates, no renewal. So there is no stored figure for an invoiced rate to be checked against. The check is a person remembering, or looking at last quarter's invoice.

Second, an expense records a total and never a rate. Its fields are a category, a description, a vendor, a project, an expense account, an amount, tax, a date and a reference. There is no quantity, no unit and no unit price. So an invoice for 28 tonnes at KES 3,000 and an invoice for 28 tonnes at KES 3,400 are, in the data, two amounts differing by 11% with nothing to explain why. Rate drift is not hard to spot here; it is structurally invisible.

You can see what you paid the transporter. Nothing anywhere records what you agreed to pay him.

The gap that makes rate drift free

How a lane rate drifts

One lane, six months, no rate ever renegotiated

Agreed rate, Nairobi–Kisumu, 28-tonne load (verbal, February) KES 2,800 / tonne
Base cost per trip at the agreed rate KES 78,400
Fuel surcharge, appearing from April as a separate line + KES 6,200
Waiting time — 2 days at the depot, from May, at 4,000/day + KES 8,000
Night-out allowance, added June, described as "standard" + KES 2,500
Offloading labour, previously included, now itemised + KES 3,500
Actual cost per trip by July KES 98,600
Effective rate per tonne (98,600 ÷ 28) KES 3,521 / tonne
Trips on this lane per month 11
Annualised cost of the drift on one lane KES 2,666,400

Not one line of this is fraud, and the transporter would defend every item. The rate never changed — 2,800 per tonne is still what everyone would tell you the rate is. What changed is everything around the rate, in increments too small to trigger a conversation, on a lane nobody reviews because the base rate is unchanged. Multiply by six lanes and the number stops being a rounding error.

The waiting-time line deserves separate attention, because it is the one item on that list that is usually your fault and is therefore the one you can remove without negotiating anything. Detention charges are the price of your own depot's loading discipline. A transporter who waits two days is not overcharging; he is billing you for a lorry he could not use.

Freight, [landed cost](/glossary/landed-cost), and an allocation trap

Where the haulage is inbound — port to warehouse, or supplier to store — it is not really a transport expense at all. It is part of what the goods cost, and it belongs in landed cost so that margin per item is honest. Two constraints to plan around:

Freight can be allocated across a shipment by value or by quantity, and nothing else. There is no allocation by weight or by volume, which are the two things freight is actually priced on. On a mixed consignment that matters: allocate by value and a pallet of cheap heavy goods is subsidised by a small carton of expensive ones, so your unit margins are wrong in opposite directions on the same shipment. Where the consignment is genuinely mixed, allocating by quantity is usually the lesser distortion, and where it is not close enough, the honest answer is to split the shipment into separate receipts by weight band.

The second is sharper and worth knowing before you rely on it: where a single order is received in two deliveries, the cost allocation attaches to the latest receipt rather than being spread across both. So a container split over two collections can land its entire freight cost on the second half. If you receive in parts, check the result rather than assuming it.

The five things to fix, in order of return

  1. Write the rate card down, per lane, with the accessorials named

    One page per transporter: lane, basis (per tonne, per trip, per kilometre), the rate, and an explicit list of what is included — offloading, night-out, first day of waiting. What is not on the page is chargeable and what is on the page is not. Nothing in the system will hold this, so it is a document in the vault attached to the vendor's file, and it is still the single highest-return thirty minutes in this whole article.

  2. Put the rate and the quantity in the expense description, every time

    An expense stores a total with no rate and no quantity, so the description is the only field that can carry "28t @ 2,800 + 6,200 fuel". It converts an unauditable amount into an auditable one at the cost of one sentence, and it makes an export reviewable six months later.

  3. Give every lane its own expense category

    A single "Transport" category cannot answer which lane, which is the same problem departments have with spend generally: a category that spans everything can never say who. Categories per lane — or a standing project per lane, which reaches further because expenses, purchase orders and stock issues all carry a project — turn a transport total into a per-lane cost you can defend or challenge.

  4. Measure your own detention before negotiating anybody's rate

    Waiting time is billed to you and caused by you. Count the hours between arrival and release at your own depot for one month. Most operations find a cheaper saving there than in any rate negotiation, and it is the one item a transporter cannot argue with you about.

  5. Re-tender the lane annually, even if you keep the incumbent

    Competitive tension is the only real control over a rate nobody can systematically check. Be aware of what the module can and cannot do: a request for quotation requires inventory items with integer quantities, so haulage cannot be tendered through it as a service — you are comparing quotations by hand, on paper or in a spreadsheet, and recording the outcome as a rate card.

What to ask before you accept a transport invoice

Five questions that make a haulage invoice checkable

What is the basis and the rate?

What should be on the invoice

Per tonne, per trip or per kilometre, stated, with the rate shown and multiplied out.

What its absence lets through

A lump sum per trip that can move quietly, since there is nothing to compare it against.

What weight or distance is being charged?

What should be on the invoice

The billed quantity, matching your own dispatch record.

What its absence lets through

Charging on nominal capacity instead of the load actually carried.

Which delivery does this refer to?

What should be on the invoice

Your transfer or delivery number on the transporter's invoice.

What its absence lets through

Invoices that cannot be tied to a movement, and trips billed twice across a month-end.

What is this accessorial, and when was it agreed?

What should be on the invoice

A named charge that appears on the rate card, with the trigger stated.

What its absence lets through

Permanent additions introduced as one-offs — the drift in the worked example above.

Whose delay caused the waiting time?

What should be on the invoice

Arrival and release times, from a gate record you also hold.

What its absence lets through

Detention billed for delays at the other end of the trip, unverifiable either way.

Hire, contract, or own

Volumes are lumpy, lanes change, or you are still learning the routes

Spot hire

Keep hiring per trip and accept the rate premium as the price of flexibility. The control that matters is a written rate card per transporter and per lane, reviewed quarterly. Do not build anything.

A lane runs predictably, most weeks, all year

Contract the lane

A dedicated arrangement at a committed rate, with the accessorials closed off in writing and a review date. Be aware there is no contract entity and no renewal reminder anywhere in the product, so the review date has to be a recurring task or it will not happen.

The lane is dense, short, and your own depot controls both ends

Consider owning

Own vehicles beat hire on short, high-frequency, own-to-own runs, where utilisation is high and you control loading at both ends. Go in knowing there is no fleet, vehicle, trip or fuel entity here — that gap is stated plainly — so cost per vehicle would be approximated by a standing project per vehicle.

You cannot answer what the lane currently costs per tonne

Decide nothing yet

Every option above is a comparison against a number you do not have. Spend one month getting cost per tonne per lane out of your own records first. Choosing between hire and ownership without it is guessing with capital.

There is no transport module — read this before evaluating

What AWRA OpsHub does today

  • Haulage as an expense, coded to a category, a vendor, an expense account and a project — which is what makes cost per lane possible, since a project is the one dimension that both money-in and money-out documents carry.
  • Documents attach to the expense itself — the invoice and the signed delivery note, checksummed, classified and access-logged on the record they evidence rather than in a folder.
  • Landed cost on inbound freight, allocated across a receipt and rolled into weighted average cost, so inbound transport reaches item margin rather than sitting in overheads.
  • Procurement with enforced thresholds and requisition approval before commitment, for the transport spend that goes through purchase orders.
  • Custom fields on expenses that can be made mandatory — the working home for a lane code, a billed tonnage or a delivery reference.
  • Recurring tasks that reliably spawn, which is the mechanism for an annual re-tender or a quarterly rate review.

What it does not do

  • No supplier price list, rate card or contract. A vendor holds no agreed rates and no validity dates, so an invoiced rate is never checked against an agreed rate by anything. This is the central gap in the article and it is not scheduled.
  • An expense has no quantity, unit or unit price — only a total. Rate and tonnage can be captured in the description or a custom field, and nothing computes or compares them.
  • No vehicle, trip, route, consignment or transporter entity. "Which transporter is late or short most often" cannot be answered from records; it needs custom fields and an export.
  • A request for quotation requires inventory items with integer quantities, so a service cannot be tendered through the procurement module. Competitive haulage tendering happens outside the system.
  • Freight allocates by value or quantity only — no weight and no volume basis, which are what freight is actually priced on. On mixed consignments this mis-spreads cost in both directions at once.
  • Split receipts mis-allocate landed cost. Where an order is received in two deliveries the cost attaches to the latest receipt rather than spreading across both — verify the result if you receive in parts.
  • No detention, waiting-time or turnaround measurement. Nothing timestamps a vehicle's arrival and release, so the accessorial that is genuinely your own fault is also the one you cannot evidence.
  • No freight cost per delivery or per customer. Cost-to-serve by customer is not a report; it is an export joined by hand.

The straight answer: if hired haulage is your largest controllable cost and you want a system to police rates, we are not that system and a transport management package will serve you better. What genuinely works here is the money layer — spend attributed to a lane through a project, invoices attached to the expense they evidence, and inbound freight reaching item cost. The rate discipline itself is a one-page rate card per transporter and a habit of writing the rate into the description. That is unglamorous, it is where the entire saving in the worked example above comes from, and we would rather say so than let you discover it in month eight.

The verdict

Hired transport is not a fleet problem wearing a different hat — it is a procurement problem in a category procurement cannot process, because a service has no goods receipt and a rate has nowhere to live. Write the rate card down, put the rate and the tonnage in every expense description, give each lane its own category or standing project, measure your own detention before you argue about anybody's rate, and re-tender annually. The base rate is almost never where the money went. It went into six small additions nobody refused.

Frequently asked questions

Per tonne, per trip, or per kilometre — which basis is best?

Per trip is simplest to administer and rewards you for filling the vehicle, since an under-loaded trip costs the same as a full one. Per tonne aligns cost with what you actually moved and is fairer on variable loads. Per kilometre suits multi-drop routes where distance rather than weight drives the cost. What matters more than the choice is that the basis is written down along with everything it includes, because most disputes are not about the number — they are about whether offloading was in it.

How do I stop accessorial charges creeping in?

By making the rate card exhaustive rather than indicative: list what is included — offloading, the first day of waiting, night-out, return-empty — and state that anything not listed requires agreement before it is incurred. Creep happens because each addition arrives as a one-off on a single invoice and is never revisited. One page, reviewed quarterly, removes most of it, and nothing in the system will do this for you because no rate card exists as a record.

Should inbound freight be an expense or part of landed cost?

Part of landed cost, wherever the goods are for resale. Transport that gets goods to your warehouse is part of what they cost, and treating it as overhead overstates gross margin while understating the true cost of importing. Landed cost here reaches the batch and rolls into weighted average cost, which is the correct behaviour — just be aware the allocation basis is value or quantity only, so on a mixed consignment neither perfectly reflects weight.

Can I record a rate per tonne on the system?

Not as a rate. An expense stores a total amount with no quantity or unit price, and vendors hold no price list. The practical convention is to write the arithmetic into the description — "28t @ 2,800 + 6,200 fuel surcharge" — or to capture tonnage and rate as required custom fields, which makes them filterable and exportable. Nothing will compare them for you, but an export where every row shows its rate is auditable, and one where every row shows only a total is not.

How do I work out cost per delivery or per customer?

By coding transport spend to a lane and dividing by the deliveries on that lane, because there is no freight-per-delivery or cost-to-serve report. A standing project per lane collects everything — expenses, purchase orders and any stock issued — and gives you a lane total you can divide. It is arithmetic on an export rather than a report you open, and for most distributors the lane-level number is enough to find the route that has been losing money for two years.

Is it cheaper to own the lorries?

Sometimes, and the answer depends almost entirely on utilisation and on who controls loading at both ends. Short, dense, high-frequency own-depot-to-own-depot runs generally favour ownership; long-haul, seasonal or one-directional lanes usually favour hire, because the return leg is somebody else's problem. The prerequisite is knowing your current cost per tonne per lane — without that figure the comparison is guesswork, and it is guesswork with capital at stake.

What is the single best control if I only do one thing?

Write the rate card down and require the delivery reference on every transporter invoice. The first makes the rate checkable and the second makes the trip checkable, and together they close both routes by which hired transport quietly overcharges — a rate that drifted and a trip billed twice. Neither needs software, and neither will happen by itself.

Help Center

Need a quick answer while you read?

Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.

Search all approved AWRA public help articles.

Open Help Center