A quick lube void and discount audit is a daily check of every ticket that was cancelled, discounted by hand or charged to a fleet account, matched against what the cars in the bay and the bank deposit say happened. Do it every morning for yesterday, one store at a time, and most of the money that leaks out through the POS shows up within a day instead of at month end.
Below is the checklist we use as a starting point, the reason codes that make it work, and an example of what one morning's review looks like.
Quick answer
- What to pull: yesterday's voided tickets, cancelled tickets, manual discounts, $0 tickets and fleet charges, per store.
- What to check: each one has a reason code, an approver, and a car or payment that backs it up.
- What to flag: voids after payment, discounts that match no coupon on the menu, and fleet tickets with no matching invoice.
- Who reviews: someone outside the store, in about 15 minutes a store once the codes are in place.
Why do voids and discounts need their own audit?
Most of the money a quick lube loses at the counter never looks like theft. It looks like a normal ticket that got cancelled, a coupon applied twice, or a fleet oil change nobody invoiced. Each one is small. Across stores and months, it adds up.
The Association of Certified Fraud Examiners estimates that organizations lose about 5% of revenue to fraud each year, and that 43% of the frauds detected in its 2024 study were found through tips, not controls. A daily audit is how you stop relying on someone speaking up.
POS systems already record voids. Pos-i-Lube, for example, documents a daily void procedure, and restaurant systems like NCR Aloha ship a void audit report. The report isn't the problem. Nobody reads it every day, and it doesn't tell you whether the car was actually serviced.
What should a quick lube void and discount audit cover?
Five kinds of tickets. Each one leaks money in a different way.
| Ticket type | How money leaks | What backs it up |
|---|---|---|
| Voided after payment | Customer pays, ticket is voided, cash stays in someone's pocket | Card or cash record that matches, and the car leaving the bay |
| Cancelled before payment | Car is serviced, ticket is cancelled instead of closed | Camera visit with the hood up, or no visit at all |
| Manual discount | A hand-typed amount instead of a menu coupon | A coupon, promo or manager approval on the menu |
| $0 ticket | A paid service rung up as a comeback or courtesy | An earlier paid ticket on the same plate |
| Fleet or house charge | Service charged to an account that never gets invoiced or paid | An invoice line, and later a payment |
If your POS can export these five lists by store each morning, you have everything you need to start.
How do you run the audit each morning?
1. Pull yesterday's exceptions
Export voids, cancels, manual discounts, $0 tickets and fleet charges for each store. Include who rang it, who approved it, the time, the plate or VIN and the amount. Pull the full day, even if it's a long list at first.
2. Check every exception has a reason code
No code, no pass. A void with no reason goes straight to the flagged list. This one rule does more than anything else on this page, because it forces the conversation to happen at the counter, not three weeks later.
3. Match discounts to the menu
Compare every discount amount to the coupons and promos that were live that day. A discount that matches no promo is a hand-typed discount, and it needs an approver.
Here's a pattern we've seen in a real audit (store and amounts kept generic): a $12 discount typed by hand on a day when the only live coupons were $7 and $5. That's two coupons' worth in one manual line. Maybe the customer had both, maybe not. The POS showed one tidy discount and no coupon codes, so nobody could tell without asking.
4. Match voids and cancels to the bay
For each voided or cancelled ticket, check whether a car was serviced. If your bay cameras log visits, look for a hood-up visit in the same bay and time window. A cancelled ticket with a full service in the bay is the case you care about most. Our off-book oil changes guide covers how that matching works.
No cameras? Use the card processor. A void after a card payment should have a refund to match.
5. Match fleet charges to invoices
Every fleet or house-account ticket should land on an invoice in your accounting system, and then get paid. Check yesterday's fleet tickets against the invoice list, and check last month's invoices against payments received.
6. Send what's left to an outside reviewer
The store manager can explain an exception, but shouldn't be the one who closes it. Send the flagged list to your controller, an ops manager from another store, or your bookkeeper.
Worksheet: one store, one morning
Copy this into a spreadsheet. One row per exception.
| Ticket | Type | Amount | Reason code | Approver | Backed up by | Result |
|---|---|---|---|---|---|---|
| Void / Cancel / Discount / $0 / Fleet | Payment, visit, coupon, invoice | Pass / Flag |
The "Backed up by" column is the whole audit. If you can't fill it in, it's a flag.
Which reason codes should you use?
Keep the list short so people actually use it. Ten codes is plenty.
| Code | Use for | Needs manager approval? |
|---|---|---|
| Wrong item rung | Service entered wrong, re-rung right away | No, if re-rung within 10 minutes |
| Customer left | Customer drove off before service started | No |
| Duplicate ticket | Same car rung twice | No |
| Comeback / warranty | Re-check of earlier work | No, but must reference the original ticket |
| Courtesy | Free top-off, bulb, tire pressure | No, $0 ticket only |
| Coupon | Menu coupon or promo | No, coupon code required |
| Price match / goodwill | Discount not on the menu | Yes |
| Employee vehicle | Staff car, per your policy | Yes |
| Fleet charge | Account customer | No, account number required |
| Refund after payment | Money returned to the customer | Yes |
Worked example (made-up numbers, not real store data)
One store, one Tuesday. Every number is an example to show the math.
| Line | Example value |
|---|---|
| Tickets closed | 70 |
| Exceptions pulled (voids, cancels, discounts, $0, fleet) | 11 |
| Passed with code, approver and backup | 8 |
| Flagged: cancel with a hood-up visit in the bay | 1 ($89.99 service) |
| Flagged: $12 manual discount, no matching coupon | 1 |
| Flagged: fleet ticket with no invoice line | 1 ($74.99) |
| Dollars under review | $176.98 |
If an example store had $177 under review a day and half of it turned out to be real, that's about $88 a day, or about $32,000 over 365 days. Run your own numbers. The point is that small daily amounts don't look small over a year, and that you won't know your number until you check every day for a month.
What should you look for over a month?
Single tickets catch single problems. Patterns catch habits. Once a week, sort the month by:
- Voids and cancels per 100 tickets, by store and by employee. One person far above the rest is worth a conversation.
- Manual discount dollars per store. Compare to coupon redemptions. If manual discounts rise while coupon use falls, people are typing discounts instead of scanning them.
- Exceptions by hour. Clusters right before close or right after open often mean one person working alone.
- Fleet days outstanding. How long fleet charges sit before they're invoiced, then paid.
These belong on the same scorecard as car count and ticket average. Our quick lube KPIs guide covers the rest of that scorecard, and the bulk oil variance guide covers the product side of the same leak.
Where does automation help?
Doing this by hand works for one store. Past three or four, the export, matching and follow-up eat a morning.
This is what we build at Trilix. Our audits pull every ticket from the POS each night, follow it to the card processor and the bank deposit, match voids and cancels to bay camera visits, check discounts against the live menu and fleet charges against invoices, and send only the exceptions to the reviewer. The flagged list and the monthly patterns roll into an owner dashboard with every store on one screen. The same pipeline can post the day's sales to QuickBooks as part of back-office automation.
Want to see what yesterday's voids and discounts looked like across your stores?
We'll walk through a POS export with you and show what a daily audit would flag.
