Order Reports
Order Reports covers two angles on the same sale-order data: a bill-by-bill listing you can filter by status and payment method, and a product-level breakdown of what actually sold.
Overview
Order Reports has two tabs switchable by URL: All Orders (?tab=orders) and Orders by Item (?tab=items).
All Orders is a filterable, exportable list of every sale order in the date range, with status and payment-method dropdowns layered on top of the shared date picker.
Orders by Item re-slices the same period by product and category instead of by order, so you can see which SKUs and categories actually generated the revenue.
Before You Start
- Requires at least one completed sale order in the selected period to show any data.
- Requires the Advanced plan tier or above and Reports/Export permission to view revenue totals and use Export.
Step-by-Step Guide
1 All Orders — filter and audit individual sale orders
- Set the date range (or use This Month / Last Month / This Year) and, optionally, the Status filter (Completed, Pending, Partial, Cancelled) and Payment filter (Cash, Card, UPI, Wallet, Credit, Split).
- Click Refresh to load orders matching all three filters.
- Read the two summary rows: Total Orders / Total Revenue / Avg Order Value / Outstanding Due, then Total Subtotal / Total Discount / Total Tax / Total Collected.
- Check the Sales by Payment Method pie chart and the Sales by Payment Status progress bars.
- Check the Monthly Revenue Trend chart — stacked Revenue/Discount/Tax bars with an Orders count line overlaid on a second axis.
- Scroll the All Sale Orders table (Date, Sale No., Customer, Method, Status, Subtotal, Discount, Tax, Total, Balance) — unpaid orders show their balance in red, fully paid ones show "Paid" in green.
- Click Export for a full order-level CSV including customer phone, GSTIN, cashier, amount paid and notes.
2 Orders by Item — see what actually sold
- Set the date range and click Refresh — this tab has no status/payment filters and always covers the full period.
- Read the four summary cards: Total Revenue, Units Sold, Unique Products, Line Items.
- Check the Revenue by Category pie chart and the ranked category list beside it, each with a % share.
- Check the Monthly Revenue by Top Products stacked bar chart (top 5 products + Others).
- Review the Category-wise Summary table for per-category product count, quantity, revenue and % share.
- Scroll the Product-wise Sales table (Product, SKU, Category, Qty, Orders, Avg Price, Discount, Tax, Revenue, % Share) for full per-SKU detail.
- Click either Export button — the top one exports the raw product list, the one on the Product-wise Sales card header exports the same detail matching the visible table.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
Status filter (All Orders tab) | Restricts the list to Completed, Pending, Partial or Cancelled orders; combine with the payment filter for narrower results. |
Payment filter (All Orders tab) | Restricts by Cash/Card/UPI/Wallet/Credit/Split. |
Balance column | Shows the unpaid amount in red, or "Paid" in green when the balance is zero. |
Outstanding Due (summary card) | Total unpaid balance across all orders matching the current filters. |
Revenue by Category / Category-wise Summary (Items tab) | Aggregates every line item's revenue, quantity and % share by the product's assigned category. |
Product-wise Sales table | The most granular view — one row per product sold in the period, ranked and with its own export button. |
Tips & Best Practices
- Use the Status = Pending/Partial filter on All Orders as a quick way to find bills that still need payment follow-up.
- Cross-check Orders by Item against Inventory's fast-moving items report — the two should broadly agree on your best sellers for the same period.
- Export the Product-wise Sales table before a purchasing decision — the Qty Sold and Avg Price columns tell you both volume and pricing at a glance.
Troubleshooting & FAQ
A cancelled order still shows up when I filter Status = Completed.
Orders by Item totals do not match All Orders revenue for the same dates.
Export is missing on one of the tabs.
The revenue trend chart only shows one bar.
🧑💻 Developer Notes
Source component(s):
frontend-app/packages/pos-react-lib/src/pages/SaleOrderReports.jsx
Backend endpoints used:
GET /reports/sale-ordersGET /reports/sale-orders/items
Related tables (db-core repositories):
SaleSaleItemProductCustomer
Redux slices:
scope (selectCurrentScope / getScopeQueryParams)
Feature flag key: reports (requires advanced plan tier or above)
Both tabs are independent sub-components (SaleOrdersTab, SaleOrdersByItemTab) with their own date state and fetch; the active tab syncs to the URL via useSearchParams (tab=orders|items). Status/payment filters exist only on the orders tab and are sent as extra query params on GET /reports/sale-orders.