A staff petrol claim in Malaysia works best when the company can check it without trusting anyone's memory. Our repair team uses full tank to full tank: a gauge photo at clock-in, another at clock-out, plus the receipt. The AI compares them, clean claims are approved automatically, and anything odd goes to a person.
This article is how that works across a repair team serving 100+ Johor Bahru homestay units, what it costs the company in effort, and where it is still weak. For the rest of a technician's day, read how our repair team runs a full day on WhatsApp.
Why do petrol claims cause so much trouble in small teams?
Most small Malaysian companies run petrol claims the same way. A technician drives to jobs in their own car, fills up when the tank is low, takes a photo of the receipt, and sends it to a WhatsApp group or hands it in at month end. The boss approves it because there is nothing to check it against.
Three problems come from that:
- The receipt says what was bought, not what was used for work. A RM80 fill-up on Saturday may cover three work days and a family trip.
- Receipts get reused. The same photo can be sent twice, or a family member's receipt can be sent in.
- Nobody knows what "normal" is. Without a daily record, the boss cannot tell whether RM600 a month is reasonable for that technician's jobs.
There is also no official per-kilometre rate you can lean on. Expense software provider Rydoo notes that Malaysia does not set a statutory mileage rate, so the rate is company policy. That pushes every company to invent its own rule.
What does "full tank to full tank" mean?
If the tank is full when the working day starts and full again when it ends, the fuel bought at the end of the day is the fuel used during the day. You do not need to know kilometres, routes or the car's consumption. You need two honest gauge readings and one receipt.
That is the whole idea. The rest of the system exists to make those three things hard to fake.
How does a technician clock in and clock out?
Every active staff member on our repair team clocks in and out on the attendance page, and every one of them drives. The steps:
| Moment | What the technician does | What the system records |
|---|---|---|
| Clock in | Types or picks the car plate, takes a live photo of the fuel gauge | Time stamped by the server, GPS location (required), the gauge photo |
| During the day | Normal jobs | Job photos and notes on each job, not on the shift |
| Clock out | Takes a photo of the gauge, then either taps "no refuel today" or takes a photo of the receipt and types the amount | Time, GPS, the second gauge photo, the receipt and amount |
A few rules sit underneath:
- One shift per day. The shift also writes the normal attendance row, so salary hours come from the same record.
- Photos come from the camera inside the page, not the gallery. The server stamps the time itself.
- The same photo cannot be used twice. The system compares the exact file with every photo uploaded before and refuses a repeat.
- Old photos are refused. A photo uploaded more than 20 minutes before the clock-in or clock-out is submitted is rejected, so a picture from yesterday cannot be used today.
- No selfie. We decided the gauge photo and GPS were enough.
If the tank is not full at clock-in, the technician still works. They simply cannot claim fuel for that shift, because the starting point is unknown.
What does the AI check before a claim is approved?
The system reads the photos with the company's own AI account (OpenAI or Gemini, connected by the company). It answers three questions: is the gauge full, not full, or unclear; is this really a petrol receipt; and what total and date are printed on it.
Then it runs a list of checks. A claim with no warnings is approved automatically when auto-approve is on. Any warning sends it to a person:
| Warning | When it appears |
|---|---|
| Start fuel gauge unclear | The AI could not tell whether the tank was full at clock-in |
| End fuel not full, or unclear | The tank was not full at clock-out, so the receipt may not cover the day |
| Not a fuel receipt | The receipt photo is something else |
| Receipt amount unreadable | The AI could not read the total |
| Amount does not match | The typed amount differs from the receipt by more than the tolerance (default RM0.50) |
| Receipt date is not the shift date | The receipt is from another day |
| Above the per-shift limit | The amount is over the limit (default RM150 a shift, the company can change it) |
| Photos not checked by AI | The company has not connected an AI account, or the account failed |
The last line matters. If the AI key is missing, out of credit or the provider is down, nothing is approved automatically. Every claim waits for a person. The system never "assumes green".
How does the money move after approval?
This depends on how the technician pays for fuel. The company sets it per staff member.
Technician pays and claims back. An approved claim becomes a pending expense with the technician as the supplier and the receipt attached, under the fuel account the company picked (default "Transport & Petrol"). The company pays it like any other expense, and the expense goes into the accounting system (Bukku) when it is marked paid. A rejected claim pays nothing and deducts nothing.
Company fuel card. An approved claim is only recorded. The fuel card company's monthly statement is already the expense, so posting one per claim would count the fuel twice. A rejected claim is deducted from the technician's next unpaid salary month. If no salary month is open yet, the deduction waits and is tried again later.
| Who paid at the pump | Claim approved | Claim rejected |
|---|---|---|
| Technician's own money | Expense to pay the technician | Nothing paid, nothing deducted |
| Company fuel card | Recorded only | Deducted from next unpaid salary |
Two points before you copy this. A salary deduction for card misuse must be written into employment terms first, and staff should know about it before day one. And the company should not tell staff to use their own BUDI95 subsidy for company vehicles: in October 2025 Communications Minister Fahmi Fadzil said that was wrong and staff could report it to KPDN (Malay Mail, 8 October 2025).
What happens if someone forgets to clock out?
A shift still open from an earlier day is closed automatically after 05:00 the next morning, at the end of the day it started. It is marked as auto-closed and loses its fuel claim, because there is no end gauge photo. The attendance row counts 0 hours until the boss corrects it on the attendance page.
That sounds harsh. In practice it is the only rule that keeps the method honest: without a clock-out photo, there is nothing to compare.
Where is this method still weak?
We use it every day and it still has gaps. You should know them before you build or buy anything like it.
- Full is not exact. A gauge photo shows "full", not litres. A tank topped up to the click and one filled to the brim both look full. Over a month this evens out, but one day can be off.
- It does not prove where the car went. GPS is recorded at clock-in and clock-out only. There is no route tracking, so a detour during the shift is invisible.
- The technician has to refuel at the end of every day they claim. That is an extra petrol station stop. Some staff prefer to skip the claim on light days.
- The AI can misread. A dim gauge or a crumpled receipt goes to manual review. That is safer than a wrong approval, but it is work for the office.
- The AI costs the company. It runs on the company's own AI account, not ours. No account means every claim is reviewed by hand.
- There is no per-kilometre option. If your policy pays a rate per km instead of actual fuel, this flow does not calculate it.
Is a petrol claim taxable for the technician?
Usually not, within limits. RinggitPlus (18 March 2026) lists petrol, travel and toll allowances for official duties as exempt up to RM6,000 a year, recorded in Part F of the EA form, and notes it does not apply to directors of controlled companies, sole proprietors and partners. Reimbursing actual work receipts is generally treated differently from a fixed allowance. Check your own case with LHDN or a tax adviser. This is not tax advice.
Do you need a system like this?
| Your team | What is enough |
|---|---|
| 1–2 technicians, owner drives with them | A simple receipt log and a monthly look |
| 3–10 technicians, own cars | Full tank to full tank with photos, like this |
| Company cars on fuel cards | Card statement plus a daily gauge check, to catch personal use |
A one-person shop does not need any of this. Once you have staff you rarely see, the daily record pays for itself in arguments avoided. If you are also deciding how repairs get approved and billed, read fix first or quote first and how we dispatch repairs across 100+ units.
Where to see the system
The clock-in, fuel claim, job sheet and salary pieces above all live in Handyman, the repair system our own team runs on. See what it covers and ask about it at /handyman.