Void & Comp Log
The Void & Comp Log records every item removed after being rung up (a "void") and every item given away free (a "comp"), so shop owners have a clear, timestamped accountability trail for shrinkage and giveaways.
Overview
A VOID is an item removed after it was rung up or sent to the kitchen — a wrong order, a quality issue, a billing error, and so on. A COMP is an item given to a customer free of charge — a birthday treat, an apology for a delay, a VIP gesture, a staff meal, and more.
Any single void or comp whose total value reaches the configured threshold (₹200 by default) requires a manager's name to be recorded as approval before it is considered resolved — entries below the threshold are logged without approval.
Records are grouped by day with daily void/comp subtotals, and the whole log can be filtered by date range, entry type, or free-text search, then exported to CSV for accounting or loss-prevention review.
Before You Start
- Requires the
billingfeature at theAdvancedplan tier or above. - Know your business's policy for what counts as manager-approvable — the ₹200 default threshold is configurable on the backend and shown live in the banner at the top of the page.
Step-by-Step Guide
1 Log a void
- Click Log Entry.
- Leave the type toggle on Void (it is selected by default).
- Enter the Item Name, Qty, and Unit Price — the total value calculates automatically as you type.
- Optionally enter an Order / Bill Ref to tie the void to a specific invoice or table.
- Choose a Reason: Wrong item, Customer changed mind, Quality issue, Item unavailable, Duplicate entry, Billing error, or Other.
- If the total reaches the approval threshold, enter the approving Manager Name before saving — the form will not submit without it.
- Click Log Void to save the record.
2 Log a complimentary item
- Click Log Entry and switch the type toggle to Complimentary.
- Fill in the item, quantity and unit price as with a void.
- Choose a Comp-specific reason: Birthday / Anniversary, VIP / Loyalty customer, Apology for delay, Apology for error, Manager discretion, Promotional offer, Staff meal, Tasting / Trial, or Other.
- Provide manager approval if the value crosses the threshold, then click Log Complimentary.
3 Approve a pending entry
- Entries needing approval show an amber Approve button in the log list, and a banner at the top counts how many are pending.
- Click Approve on the entry, enter the Manager Name, and confirm — the entry then shows a green checkmark with that manager's name instead of the Approve button.
4 Filter, search and export
- Use the From/To date pickers to change the reporting window (defaults to the last 7 days).
- Use the All / Voids / Comps pills to narrow the list to one type.
- Type in the search box to filter by item name, reason, or order reference.
- Click Export to download the currently filtered list as a CSV file with columns for date, time, type, item, quantities, prices, totals, reference, reason, notes and approver.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
Voids KPI card | Count and total value of VOID entries in the current date range. |
Comps KPI card | Count and total value of COMP entries in the current date range. |
Pending Approval KPI card | Count of entries that are at or above the threshold and still missing a manager's approval; turns green with "All clear" when zero. |
Total Loss KPI card | Combined value of all voids and comps in the current range, with the total entry count underneath. |
Item Name / Qty / Unit Price | Core details of the record; total value is computed live as qty × unit price. |
Order / Bill Ref | Optional free-text reference tying the entry back to a specific bill, order, or table. |
Reason | A required dropdown, with a different option set for Void vs Complimentary entries. |
Notes | Optional free-text detail about the entry. |
Manager Name (approval) | Required only when the entry's total value is at or above the approval threshold; recorded on the entry once submitted. |
Approve button | Opens a small dialog to capture the manager's name and mark a pending entry as approved. |
Delete (trash icon) | Removes an entry from the log after a confirmation prompt. |
Export | Downloads the currently filtered records as a CSV file named void_comp_<date>.csv. |
Tips & Best Practices
- Set a realistic approval threshold for your shop size — too low and every entry needs a manager, too high and genuine shrinkage risk goes unchecked.
- Always fill in the Order/Bill Ref for voids tied to a specific invoice — it makes cross-checking against the Sales or Audit Log far faster later.
- Review the daily void/comp subtotals weekly; a sudden spike in one reason (e.g. "Quality issue") often points to a specific menu item or supplier problem.
Troubleshooting & FAQ
The form won't let me save my entry.
Why does this entry need approval but another one of similar value doesn't?
Can I edit an entry after saving it?
Why don't I see this page in the sidebar?
🧑💻 Developer Notes
Source component(s):
frontend-app/packages/pos-react-lib/src/pages/shared/VoidCompPage.jsx
Backend endpoints used:
GET {apiPrefix}/void-comps?from=&to=POST {apiPrefix}/void-compsPUT {apiPrefix}/void-comps/:id/approveDELETE {apiPrefix}/void-comps/:id
Related tables (db-core repositories):
VoidCompRecord (best-effort — type VOID/COMP, itemName, qty, unitPrice, total, reason, managerName, orderRef)
Feature flag key: billing (requires advanced plan tier or above)
Shared component reused across variants via apiPrefix ("/restaurant", "/bakery", or "" for the main POS). The approval threshold is returned by the backend alongside the record list ({ records, threshold }) rather than hard-coded, so it can be tuned per deployment; the client falls back to a default of ₹200 if the API omits it.