Fuel theft detection
How to detect fuel theft in a truck fleet
Match every fuel-card transaction to the rise in the truck's tank. The data you need, the patterns to look for, and how to review a case fairly.
Updated · 7 min read
The most reliable way to detect fuel theft in a truck fleet is to match every fuel-card transaction against what actually arrived in the tank. For each fill, take the rise in tank level reported by the truck’s CAN/FMS fuel-level sender, convert it to litres, add the fuel burned while the tank was filling (from the CAN total-fuel-used counter), and compare that with the litres on the transaction. If the truck was at the station when the card was used and the tank rose by roughly what was paid for, the fill is fine. If litres were paid for but never reached the tank, or the tank dropped while the truck was parked, you have a question to put to a person. Location, time and a sensible tolerance turn that comparison from noise into a short list of cases worth reviewing.
Why fuel theft is hard to see in a truck fleet
Diesel disappears in small amounts spread over many cards, drivers, stations and days. A fuel invoice tells you what was paid, not where the fuel went. Consumption figures averaged over a month hide a single 80-litre jerrycan fill. And most fleets look at fuel cards and telematics in separate tools, so nobody holds the two side by side.
Common patterns, in no particular order:
- Card used for another vehicle. The fuel card fills a private car or a second vehicle, often at a station on or near the route.
- Jerrycan or container fills. The transaction is real, but part of it goes into a can instead of the tank.
- Siphoning. Diesel is drawn from a parked truck, often at night or at an unguarded parking.
- Pump diversion at your own depot. The depot pump registers more litres than the truck receives.
- Inflated or manipulated receipts. Quantity, unit price or total do not match a plausible fill.
None of these show up in a monthly cost report. All of them leave a trace when you compare the card with the tank.
The data you need
To check fills properly, you need three sources joined on vehicle and time:
- Fuel transactions. From fuel-card exports or invoices, and from depot-pump logs if you fuel on site. You need time, station or pump, quantity, unit price and total, and the card or vehicle identifier.
- Tank level. The fuel-level percentage from the CAN bus or FMS interface, read by your telematics unit.
- Fuel used and position. The CAN total-fuel-used counter and the GPS position of the truck, so you know how much was burned and where the truck stood.
If your telematics only report position, you can still check where the card was used. You cannot check how much reached the tank.
How to match a fuel-card transaction to the tank
Find the stop, not the terminal time
Card terminals and telematics clocks rarely agree to the minute. Instead of trusting the timestamp on the receipt, find the moment the truck actually stood still near the station: for example within 100 metres, at walking speed or less, for at least a few minutes. That stop is where the fill happened, and it tells you whether the truck was at the station at all.
Turn the level rise into litres
A fuel-level sender reports a percentage, not litres. Learn the litres-per-percent for each vehicle from fills you trust, then calculate:
litres in the tank = level rise × litres per percent + fuel burned while the level was rising
The second term matters on long fills with the engine running, or when the level is read some time after the pump stops.
Allow for the sender’s limits
Fuel-level senders are imprecise. Tank shape, a sloping parking spot and sloshing after braking all move the reading. Some fuel sits above the point where the sender can measure, so a fill-to-full often shows slightly less than was pumped. Practical rules:
- Read levels only when the truck is parked and on level ground.
- Use a tolerance: a sensible default is the larger of 5 litres and 2% of the tank, tuned per vehicle.
- Accept a small shortfall on a fill-to-full when it fits the “hidden fuel above the sender” allowance.
Give every fill one verdict
Each fill should end up in exactly one bucket. This keeps the review short and fair:
| Verdict | What it means |
|---|---|
| Matches the tank | The tank rose by what was paid for. |
| Within margin | A small difference, inside the tolerance. |
| Question | Outside the tolerance: these are the unexplained litres. |
| No card | The tank rose but no transaction arrived within the waiting period. |
| No rise | A transaction with no matching rise in the tank. |
| Unpaired | A data problem, not missing diesel. |
Give fuel-card data time to arrive before calling a fill “no card”; some exports and invoices come in days later. Also book duplicates once: the same transaction can appear in a daily export and again on the invoice.
Other signals worth checking
Matching fills to the tank catches most theft. A few cheap rules catch the rest:
- Card used away from the truck. The station is several kilometres from where the truck stood around the time of the transaction.
- Card in two places at once. Two transactions whose distance and time imply an impossible speed.
- Fill bigger than the tank. More litres than the tank can hold.
- Implausible transaction. An impossible price per litre, quantity or total.
- Wrong fuel for the engine. Petrol booked on a diesel truck, for example: a strong hint that the card filled another vehicle.
- Buying more than the distance explains. Over a few weeks, purchased litres clearly exceed what the CAN counter says was burned.
- Level drop while parked. The classic siphoning signature.
- Paid more than the tank took at the depot. Pump diversion on your own site.
Set a minimum size, so a 6-litre rounding difference never becomes a case, and allow rules to be switched off for vehicles where the data is known to be unreliable.
Reviewing a case fairly
A gap between card and tank is a question, not an accusation. Sensors drift, data arrives late, a reefer unit may run on the same tank, a vehicle may have swapped cards. Show the facts first: the fill, the stop on the map, the level before and after, and the litres that are unexplained. Then ask the driver or the depot. Keep the language factual: a verdict, one sentence, a few numbers. Cases that turn out to be data problems should lead to a fix in the data, not a note in a driver’s file.
Checklist
- Collect fuel transactions from every card provider and depot pump in one place.
- Make sure your telematics report CAN fuel level, CAN total fuel used and GPS position.
- Match each transaction to the truck’s actual stop, not to the receipt time.
- Learn litres per percent per vehicle; read levels when parked and level.
- Use a tolerance (start with the larger of 5 L and 2% of the tank).
- Give every fill one verdict and review only the questions.
- Add rules for location, impossible speed, oversize fills, price and fuel type.
- Watch for level drops while parked.
- Book duplicate transactions once.
- Review cases with the facts on screen before talking to anyone.
How Konvoi does it
Konvoi’s fuel theft detection works the way this guide describes. It reads fuel transactions line by line from AS24 (XLSX exports, Dutch and French versions), IDS, Romac (including LNG and bio-LNG volumes) and ProFleet depot pumps (CSV), and reads DKV, TotalEnergies, Q8 and other card invoices with AI. Duplicates, such as the same transaction in an AS24 daily export and on the invoice, are booked once. Tank level, fuel used and position come from telematics such as Transics and Ruptela; the full list is on the integrations page.
Each fill is located at the stop where the truck actually stood still (within 100 m, at 5 km/h or less, for at least 3 minutes) and gets one verdict: matches the tank, within margin, question, no card (waiting up to 7 days for a transaction), no rise or unpaired. The default tolerance is the larger of 5 L and 2% of the tank, adjustable per vehicle.
Fuel Watch adds detectors on top. By default these are: card used more than 5 km from the truck’s GPS position within ±30 minutes; implausible transaction; fill bigger than the tank; card in two places at once (implied speed above 120 km/h); wrong fuel for the engine; buying more than the distance explains (30-day window, at least 60 L and 10% over, using the CAN fuel-used counter); fills seen at the tank without a transaction; siphoning while parked; and paid more than the tank took at the pump (at least 30 L and 10% short). No case opens below 15 L. Each detector opens a reviewable fuel case, can be switched off per workspace and muted per vehicle, and its thresholds can be changed.
The principle is “show first, accuse later”: a case is a question for a person to review. Konvoi also reports consumption in L/100 km per vehicle and per driver. The modules are listed on the pricing page.
Questions
What is the most reliable way to detect fuel theft in a truck fleet?
Compare every fuel-card transaction with the rise in the truck's tank level, read from the CAN/FMS fuel-level sender, and with the CAN total-fuel-used counter. Litres that were paid for but never reached the tank are the ones to question.
Can a fuel-level sensor prove that diesel was stolen?
No. A tank-level sender is imprecise because of tank shape, slope and sloshing, so a gap between card and tank is a question for a person to review, not proof. Use a tolerance and read levels when the truck is parked and level.
How do I spot siphoning from a parked truck?
Look for a drop in tank level while the vehicle is parked with the ignition off and no fuel being burned. Compare the level just before and just after the stop, both read while the truck stands still.
What tolerance should I allow between the fuel card and the tank?
A practical starting point is the larger of 5 litres and 2% of the tank capacity, adjusted per vehicle once you know how its sender behaves. On a fill-to-full, a small shortfall can be fuel sitting above the sender's reach.
What data do I need to detect fuel theft?
Fuel-card transactions with time, station, quantity and price, plus telematics that report GPS position, the CAN fuel level and ideally the CAN total-fuel-used counter. Depot-pump records are needed if you fuel at your own site.