Operations & Loss Prevention, 8 min read

Off-book oil changes: matching bay cameras to POS tickets

You catch off-book oil changes by turning bay camera footage into a list of visits (car in, hood up, hood down, car out) and matching each visit to a POS ticket by time window and plate or VIN. Any worked visit with no ticket goes on an unmatched list. Clear the legit no-charge visits first, save a snapshot of what's left, and let someone outside the store make the final call.

The rest of this post is how to run it without accusing a good tech over a warranty re-check.

Quick answer

  • What to compare: every bay visit the cameras saw against every ticket the POS closed, by bay and time.
  • How to match: time window first, then plate or VIN where you capture it.
  • What to expect: most unmatched visits are top-offs, comebacks, courtesy checks and employee cars. Sort those first.
  • Who decides: a reviewer outside the store, looking at a snapshot or short clip. Never the store manager alone.

Why the POS alone can't catch this

Your POS only knows about the cars someone rang up. If a car comes in after close, gets an oil change, and cash changes hands, the POS has no record of it. Every report looks clean.

Bulk oil variance will eventually show the missing quarts (our bulk oil variance guide covers the math). But variance tells you how much oil went missing, not which car took it.

The cameras over your bays already see every car. They just aren't counting.

Some camera vendors publish about "shadow work" in quick lubes, and the idea holds up. What's usually missing is the dull middle part: how you match, what you throw out, and who signs off.

Where the camera layer fits

In our conversations with quick lube operators, one question comes up early: "Do I have to change my POS?"

No. The camera layer sits on top of the POS and audits what the POS can't see. It doesn't take payments, write tickets or schedule appointments, and it shouldn't try to.

The POS stays your record of what was sold. The cameras become your record of what happened in the bay. The audit is the gap between the two.

Step by step: matching bay visits to POS tickets

1. Build a visit timeline for every bay

Log four events per car:

EventWhat it tells you
Car inVisit starts. Timestamp, and the plate if the camera can read it
Hood upWork has started
Hood downWork is done
Car outVisit ends

A car in and out with no hood up is usually a reposition. Tag it and move on.

2. Pull the day's tickets

Export closed tickets with open time, close time, bay (if your POS records it), plate or VIN, services and total. Include $0 tickets and voids.

3. Match on a time window

For each visit, look for a ticket on the same bay that opened near car in and closed near car out. If advisors open tickets in the lane before the car pulls in, widen the front of the window. After a week you'll know what normal looks like and can tighten it.

4. Confirm with plate or VIN where you have it

Time alone can mismatch when two bays run side by side. If a camera reads plates or your POS captures VIN, use it as the tiebreaker. Where you have neither, bay plus time still works. Just treat those matches as weaker.

5. Build the unmatched lists

You end up with two lists:

  • Visits with no ticket. A car was worked on and nothing was rung up.
  • Tickets with no visit. Something was rung up and no car was seen. That can be a camera gap, a ticket on the wrong bay, or a ticket for work that never happened.

Run each item through the table below, then the false positive sort.

Decision table: what a camera vs ticket gap means

GapWhat it likely meansWhat to checkWho signs off
Hood up, no ticketUnbilled service, or no-charge work with no $0 ticketPlate history for a recent paid visit; comeback and warranty logOutside reviewer
Visit before open or after closeEmployee car, a favour, or an off-book jobStaff schedule, employee plate list, who had keysOutside reviewer, then owner
Ticket with no visitCamera blind spot, wrong bay, or a ticket for work not doneCamera coverage for that bay and time; ticket's bay fieldOps manager
$0 ticket with a long visitComeback or warranty re-check, or a discount hiding a saleThe original paid ticket it refers toOutside reviewer
Visits match, quarts per car climbingOver-pouring or wrong product mapping, not off-book workBulk oil variance by oil typeStore manager, with ops
Ticket voided, car still worked onSale rung up, then voided after paymentVoid reason, who voided, clip of the car leavingOutside reviewer

Sort the false positives first

If you send every unmatched visit to a store manager as a "problem," you'll lose the team's trust within a week. Most gaps have a plain reason.

Clear these before anyone calls a visit off-book:

  • Warranty re-checks. A customer comes back to check a drain plug or filter from last week. Look for a paid ticket on the same plate.
  • Top-offs. Plenty of shops top off fluids free between services. Short visit, hood up, no oil change.
  • Comebacks. A leak, or a light came on. It should tie to an earlier ticket on the same plate.
  • Courtesy checks. Tire pressure, a bulb, a quick look under the hood for a regular.
  • Employee vehicles. Keep a list of staff plates. Your policy decides whether they need a ticket.

Most of these go away with one rule: every no-charge visit gets a $0 ticket with a reason code. Once that sticks, the unmatched list shrinks to the few visits that need a real look.

Keep evidence, then hand it off

For anything left, save a snapshot or a short clip: the car in the bay with the hood up, and the car leaving. Note the bay, the times and the plate. Nobody needs an hour of footage.

Then send it to a reviewer outside the store. That can be an independent auditor, your controller, or an ops person from another location. The store manager should get the chance to explain, but shouldn't close the case. They may have approved the favour.

My rule: nobody gets pulled aside over an unmatched visit until the outside reviewer has seen the clip and the explanation. It protects good techs, and the findings hold up if you ever have to act.

Metrics to watch alongside the match

The match finds single cars. These three numbers show patterns by store and shift. (More on store scorecards in our quick lube KPIs guide.)

  • Time to first hood. Minutes from car in to hood up. Long times point to a lane or staffing problem, and long gaps can hide a job being set up off the ticket.
  • Bay hours variance. First car in versus posted open, last car out versus posted close. A bay opening late or closing early loses sales. A bay busy outside posted hours needs a reason.
  • Revenue per bay-minute. Ticket revenue divided by minutes with a car in the bay. If bay-minutes go up and revenue doesn't, something isn't getting billed.

Worked example (made-up numbers, not real store data)

One store, one Saturday, two bays. Every number is an example to show the math.

LineExample value
Bay visits with hood up (cameras)64
Closed tickets, including $0 (POS)60
Visits with no matching ticket4
Cleared in the sort (2 top-offs, 1 comeback tied to last week's ticket)3
Left for outside review1 (car in at 7:38 p.m., posted close 7:00 p.m.)
Bay-minutes with a car in1,280
Ticket revenue$5,120
Revenue per bay-minute ($5,120 ÷ 1,280)$4.00

The after-close visit goes to the outside reviewer with two snapshots. The three cleared visits become a coaching note: write the $0 ticket. If this store's revenue per bay-minute sits well under your other stores on similar car counts, that's the next thing to dig into.

Where to start

Pick one store and give it two weeks. First check the cameras: can you see the hood in every bay? If not, fix the angle before anything else.

Run the match daily and review the unmatched list weekly with your outside reviewer. Week one will be long, mostly missing $0 tickets. It gets shorter once the store knows the rule.

This is what we build at Trilix. Our camera analytics run on the cameras most stores already have, log visits per bay and match them to your POS tickets. Flagged visits and the three metrics above roll into an executive dashboard, so you see every store on one screen and only open a clip when something needs a decision. More on how this fits a lube operation on our quick lube page.

Want to see which bay visits never made it to a ticket?

We'll look at your camera coverage and POS export and show you what a daily match would flag.

FAQ

Something else on your mind? Ask us directly or call 416-262-2723.

What is an off-book oil change?

A service done in your bay that never gets rung up in the POS, usually paid in cash or done as a favour. With no ticket, sales reports can't see it. Only the bay cameras or the missing oil can.

Can bay cameras replace my POS?

No. The camera layer sits on top of the POS and audits what it can't see. Payments, tickets and scheduling stay where they are.

How do I match visits to tickets without plate recognition?

Match on bay and time window: a ticket on the same bay that opened near car in and closed near car out. Matches are weaker when two bays run side by side, so add plate or VIN when you can.

What are the most common false positives?

Warranty re-checks, free top-offs, comebacks, courtesy checks and employee cars. Most disappear once every no-charge visit gets a $0 ticket with a reason code.

Who should review flagged visits?

Someone outside the store, like an independent auditor, your controller or an ops person from another location. Give them a snapshot or clip plus the store's explanation. The store manager can explain a visit but shouldn't close it.