Retail audit guide
Check sales, cash, stock, transfers, supplier receiving, and variances.
Before you begin
Most audit work uses two places in Klu: Reports for downloadable Excel files, and live Dashboard pages for checking a specific sale, shift, stock item, or transfer.
Open Reports when you need an Excel file. Open Sales, Inventory, Cash Drawers, or Suppliers when you need to inspect the original record.
Audit map
| What you are checking | Start here | Download Excel when |
|---|---|---|
| Daily sales total and payment methods | Sales Report | Always for a daily sales audit. |
| One suspicious bill | Sales -> Bills | You need to keep evidence or inspect line items/status. |
| Cash drawer and shift closing | Cash Drawers -> Shifts | Cash does not match or you need Cash Movement evidence. |
| Products or categories sold | Sales -> Products / Categories | Grouped totals are not enough, or you need each sold line. |
| Current stock quantity | Inventory Report | Always for a stock count audit. |
| Why stock changed | Stock Flow Report | Stock quantity does not make sense. |
| Supplier receiving | Suppliers -> Purchase Requests | You need to prove stock-in from a supplier purchase. |
| Branch transfer | Transfer Orders / Purchase Orders | You need to prove stock moved between branches. |
Before every audit
Before checking numbers, confirm:
- The correct branch is selected.
- The date range matches the business day, especially if the shop closes after midnight.
- The report status/filter is correct, for example Paid sales first, then Cancelled, Reverted, and Pending only when investigating.
- Use the same branch and date range across Sales, Cash Drawer, Inventory, and Stock Flow.
Daily sales audit
Purpose: confirm that sales recorded in the system match the money received.
Open Reports and create a Sales Report for the branch and date. Use sale status Paid first. If you are investigating mistakes, also check Cancelled, Reverted, and Pending. To inspect one invoice, open Sales -> Bills.
Check these columns:
| Column | What to check |
|---|---|
| Invoice No. | Use it to identify the transaction. Check sequence gaps only if the business expects strict invoice numbering. |
| Date | The sale is inside the audit period. |
| Branch | The sale belongs to the branch being audited. |
| Total | Add totals and compare with payment records. |
| Payment Method | Compare cash, card, bank transfer, PromptPay, Alipay, WeChat Pay, or crypto against external evidence. |
| Cashier | Look for repeated mistakes by the same person. |
| Rounding, Discounts, Loyalty | Check large or unusual reductions. |
Sale status is a filter when generating the Sales Report, not an output column. Use Sales -> Bills when you need to review Paid, Pending, Cancelled, or Reverted status on individual invoices.
If the total does not match:
- Separate the sales by payment method.
- Check cash sales against the shift/cash drawer.
- Check transfer/PromptPay/card sales against bank or terminal evidence.
- Open suspicious invoices from Sales and check line items.
- Write down the invoice number, cashier, amount, and reason.
Daily cash and shift audit
Purpose: confirm that the cash drawer was opened, used, and closed correctly.
Open Cash Drawers -> Shifts for the branch and date. Use the table for the shift list, then open the shift row for the detailed breakdown.
Check:
| Field | What to check |
|---|---|
| Status | The shift should be CLOSED after the day is finished. |
| Opened / closed time | The shift belongs to the audit period. |
| Cashier and device | Confirm the correct person and iPad/device. |
| Opening amount | Starting cash recorded when the shift opened. |
| Closing amount | Cash left in the drawer after End Shift. If cash was removed at close, also check the Close Shift operation amount in the shift details. |
| Total sales and sale count | Compare with Sales Report totals for the same period. |
| Shift detail modal | Review cash flow, payment method breakdown, transactions, and post-close reverted sales if shown. |
Cash formula:
Expected before close = Opening cash + Cash sales + Cash In - Cash Out
If money was removed during End Shift, compare expected before close with Closing amount + Close Shift operation amount. Also check whether the shift details show sales reverted after the shift was closed.
Generate a Cash Movement Report only if cash does not match, or if you need evidence for drawer movements. The report exports Date, Store, Event Type, Cash Amount, Employee, Reason, and Device. For investigation, manually select Cash In, Cash Out, Reset Cash, Open Shift, and Close Shift.
Reset Cash sets the drawer balance to zero. In the Cash Movement Report, review the event date, employee, device, and reason; do not treat Cash Amount as the reset amount.
If cash does not match:
- Compare cash sales from the Sales Report with the shift cash summary.
- Check all Cash In and Cash Out rows have a reason.
- Check Reset Cash events by date, employee, device, and reason.
- Check whether a pending bill was later paid or cancelled.
- Write down the shift ID, cashier, amount difference, and explanation.
Daily exception audit
Purpose: use this when there is no time to check every transaction. These items are the most likely to explain missing money, wrong stock, or staff mistakes.
Open Reports, Sales -> Bills, and Inventory for the same branch/date. Look for:
| Exception | Where to check | Why it matters |
|---|---|---|
| Cancelled sales | Sales Report or Sales page | May be normal, but repeated cancellations need review. |
| Reverted sales | Sales Report or Sales page | Stock and money may need to be reversed correctly. |
| Pending sales | Sales Report or iPad pending bills | Pending bills should not remain open after close. |
| Large discounts | Sales Report or Sales by Items | Can hide mistakes or unauthorized discounts. |
| Cash resets | Cash Movement Report | Reset Cash sets the drawer balance to zero and must have a reason. |
| Stock count adjustments | Stock Flow Report | Adjustments change inventory and can hide shrinkage. |
| Waste | Stock Flow Report or Inventory logs | Repeated waste may mean damage, mistakes, or theft. |
If anything looks unusual, keep the invoice number, shift ID, SKU, PO/TO number, or screenshot so the manager can trace it.
Product sales audit
Purpose: confirm which products were sold and whether product totals make sense.
Open Reports and use Sales Report (by Items) when you need every sold line. This report includes paid sales only.
Open Sales -> Products, Sales -> Categories, Best Sellers Report, or Product Category Report when you only need grouped totals. This avoids reading thousands of line items by hand.
Check:
| Question | Best place |
|---|---|
| Which exact products were on each invoice? | Sales Report (by Items) |
| How many units of a product sold this week? | Sales -> Products or Sales Report (by Items) with Excel pivot |
| Which category sold the most? | Sales -> Categories or Product Category Report |
| Which products need closer stock review? | Best Sellers Report and Stock Flow Report |
If product totals look wrong:
- Search by product name in Sales -> Products, or filter the Sales Report (by Items) Excel file by SKU.
- Compare quantity sold with stock out in the Stock Flow Report.
- Check discounts and zero-price/free items.
- Open the invoice if a single sale looks suspicious.
Stock count audit
Purpose: confirm physical stock matches system stock.
Open Reports and generate an Inventory Report for the branch. If the branch uses rooms, filter by room or count one room at a time. You can also check live stock from Inventory -> Stock.
Check these columns:
| Column | What to check |
|---|---|
| Product | Product being counted. |
| Category | Helps group the count. |
| Branch | Needed when auditing multiple branches. |
| Quantity | System stock to compare with physical count. |
| SKU | Use this to match labels and avoid product name confusion. |
| Room | Physical location of the stock. |
| Avg. Cost / Last Cost / Total Cost | Avg. Cost is shown separately. Total Cost uses Last Cost x Quantity. |
Counting rule:
- Count the real product.
- Compare real count with Quantity in the Inventory Report.
- If the number matches, mark it as checked.
- If the number does not match, write the physical count, system count, difference, SKU, room, and staff note.
- Investigate the difference using the Stock Flow Report before approving any adjustment.
Stock movement audit
Purpose: explain why stock changed.
Open Reports and generate a Stock Flow Report for the branch and period. Use all movement types first. If the file is too large, filter by product category or movement type.
Read stock movement by reason:
| Reason | Meaning |
|---|---|
| Sales | Stock went out because it was sold. |
| Sale reverted | Stock came back after a sale was reverted. |
| Supplier receiving / restock | Stock came in from supplier receiving or manual restock. |
| Transfer out | Stock left this branch or room. |
| Transfer in | Stock arrived at this branch or room. |
| Stock count / adjustment | Stock changed after a count, reconciliation, or correction. |
| Waste | Stock was removed because it was wasted or damaged. |
Use this simple formula:
Opening stock + Qty in - Qty out = Closing stock
If you do not have a saved opening stock report, use the Stock Flow Report to trace movement during the period and compare with the current Inventory Report.
If stock does not make sense:
- After downloading the Stock Flow Report, search or filter the Excel file by Product SKU.
- Check every Qty In and Qty Out row.
- Match sales rows to invoice IDs.
- Match branch transfer rows to Transaction ID, which shows the TO number and sometimes a linked PO number.
- Match supplier receiving by the Purchase Requests page details, date, SKU, quantity, and store. Stock Flow does not export the supplier PR number as Transaction ID.
- Write down any row without a clear reason.
Supplier receiving audit
Purpose: confirm supplier purchases were approved, received, and added to stock correctly.
Open Suppliers -> Purchase Requests for supplier purchases. Check for three problems first:
- Approved but not received.
- Received quantity does not match the supplier document.
- Received stock does not appear in Inventory or Stock Flow.
Then open the purchase request and check supplier, SKU/product, quantity, cost, received date, branch, and room. For received requests, check the Stock Flow Report for matching stock-in rows and the Inventory Report for the current stock.
If receiving does not match:
- Check whether the purchase request was approved before receiving.
- Check whether the wrong room was selected.
- Check whether quantity or cost was entered incorrectly.
- Write down purchase request number, product, expected quantity, received quantity, and difference.
Branch PO and transfer audit
Purpose: confirm stock sent by one branch was received by the correct branch.
Open Inventory -> Purchase Orders for the request/approval document. Open Inventory -> Transfer Orders for the actual stock movement. PO approval alone does not deduct stock; stock leaves the source branch when the linked Transfer Order is shipped and moves to IN_TRANSIT.
Check:
| Item | What to check |
|---|---|
| PO and linked TO | Approved PO should have a linked Transfer Order. |
| Source branch | Stock leaves this branch when the Transfer Order is shipped. |
| Destination branch | Stock should arrive here when received. |
| Product/SKU | Same product on both sides. |
| Sent quantity | Quantity leaving source branch. |
| Received quantity | Quantity entering destination branch. |
| Status | Anything IN_TRANSIT, RECEIVED but not COMPLETED, or REVERTED needs follow-up. |
| Stock Flow transaction ID | Should connect the document to stock movement. |
If a transfer is incomplete:
- Check whether the PO is approved but has no linked Transfer Order.
- Check whether the Transfer Order is still PENDING, IN_TRANSIT, RECEIVED, COMPLETED, or REVERTED.
- Check source branch Stock Flow for stock out.
- Check destination branch Stock Flow for stock in.
- Confirm whether received quantity differs from shipped quantity.
- Write down the PO/TO number, source, destination, product, quantity, and status.
Sales vs stock audit
Purpose: confirm that sold products actually reduced stock.
Open Reports and generate Sales Report (by Items) plus Stock Flow Report for the same branch/date range. Do this for suspicious products, high-value products, products with stock variance, or products where sales look wrong. For a full check, group or pivot Sales Report (by Items) by SKU first, then compare the totals against Stock Flow.
For a product or SKU:
- Add the sold quantity in Sales Report (by Items).
- Find the same SKU in Stock Flow Report.
- Confirm sales appear as Qty Out.
- Check returns/reverts appear as Qty In.
- Compare with Inventory Report if the current stock looks wrong.
If Sales Report (by Items) shows sold quantity but Stock Flow does not show Qty Out:
- Check whether the product was configured without stock tracking or wrong SKU.
- Check whether the sale was pending, cancelled, or reverted.
- Check whether the item was free or zero-value but still removed stock.
- Open the invoice and product history for details.