Fuel theft detection
How to spot duplicate and wrong-fuel fuel-card transactions
Fuel-card rows booked twice, wrong fuel for the engine and rows that cannot be a real fill: how to find them, tell them apart and clean them up safely.
Updated · 3 min read
Duplicate and wrong-fuel transactions are found by checking each fuel-card row against two things: whether the same transaction is already booked, and whether the vehicle’s engine can burn what was bought. A duplicate quietly doubles litres and spend in every report. A wrong-fuel row, such as petrol on a diesel truck, is a sign that the card filled something else or that the row is linked to the wrong vehicle. Both are worth catching before anyone draws conclusions about consumption or theft.
Where duplicates come from
Most duplicates are not mistakes at the pump. They come from how fuel data is delivered:
- A provider sends a daily export and later an invoice file covering the same period, so the overlap arrives twice.
- The same PDF invoice is forwarded or uploaded a second time.
- A file is re-imported after someone corrected it, for example a mistyped plate, so the corrected copy no longer looks identical.
Telling a duplicate from a second real fill
Compare the facts of the transaction: plate or card, the exact time, the litres and the amount. If all of them match, it is very likely the same transaction. The provider’s transaction reference is the tie-breaker. Two rows with identical facts but different references are two real swipes, for example a card used twice at the same pump. A matching reference with the same second and litres is the same fill, even when the plate text differs.
When you clean up, keep one copy, remove the others, and look at the list before anything is deleted.
Wrong fuel for the engine
Know the fuel type of each vehicle and compare it with every purchase. Petrol on a diesel truck or diesel on a petrol van deserves a look. Be careful with legitimate combinations: every diesel takes AdBlue, LPG and CNG vehicles usually also carry petrol, and hybrids charge electricity. A mismatch is a question, not proof: it may be another vehicle on the card, a wrong vehicle link or a temporary replacement truck.
Some rows cannot describe a real fill at all: an impossible price per litre, zero litres, more litres than any tank could take, or a total that does not equal litres times price. These are usually import errors. Archive them with a reason rather than deleting them, so the decision can be checked later.
How Konvoi handles it
Konvoi recognises a re-delivered transaction at import, both for structured exports and for invoices read with AI, and shows the skipped rows in the review as “Duplicate”. For copies already booked, workspace admins can run “Remove duplicate transactions” in the advanced settings: it scans, shows every group, keeps the oldest copy and deletes nothing until you approve.
Fuel Watch also has a “Wrong fuel for this engine” detector, which falls back on the vehicle’s own fuel history when no fuel type is set, and a “Not a real transaction” check for rows whose own figures contradict each other. Each opens a case for a person to review. Archiving a transaction keeps the row, removes it from totals and withdraws its open cases. For card-versus-tank checks, see how to detect fuel theft in a truck fleet.
Questions
Why do fuel-card transactions show up twice?
Usually because the same transaction arrives in two files: a daily export and the periodic invoice that restates the whole billing period, or an invoice that was sent or uploaded twice. Each file is imported on its own, so the overlap is booked twice.
Is a petrol transaction on a diesel truck always fraud?
No. It is a question for a person. The card may have filled another vehicle, the transaction may be linked to the wrong vehicle, or a replacement vehicle may have used the card for a few days. AdBlue on a diesel truck is normal and should never be flagged.
Should I delete a fuel transaction that is clearly wrong?
Prefer archiving it with a reason. The row leaves your totals and reports, but it stays on file, so anyone can see later who removed it and why, and restore it if it was a mistake.