Home / Help Center / pos-app / Reports / Order Reports
🛍️ Reports

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.

📍 Menu path: Reports → Order Reports (All Orders / Orders by Item)
👤 Who uses it: Admin, Owner/Manager with Reports/Export permission
🏷️ Plan tier: advanced+

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

Step-by-Step Guide

1 All Orders — filter and audit individual sale orders

  1. 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).
  2. Click Refresh to load orders matching all three filters.
  3. Read the two summary rows: Total Orders / Total Revenue / Avg Order Value / Outstanding Due, then Total Subtotal / Total Discount / Total Tax / Total Collected.
  4. Check the Sales by Payment Method pie chart and the Sales by Payment Status progress bars.
  5. Check the Monthly Revenue Trend chart — stacked Revenue/Discount/Tax bars with an Orders count line overlaid on a second axis.
  6. 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.
  7. 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

  1. Set the date range and click Refresh — this tab has no status/payment filters and always covers the full period.
  2. Read the four summary cards: Total Revenue, Units Sold, Unique Products, Line Items.
  3. Check the Revenue by Category pie chart and the ranked category list beside it, each with a % share.
  4. Check the Monthly Revenue by Top Products stacked bar chart (top 5 products + Others).
  5. Review the Category-wise Summary table for per-category product count, quantity, revenue and % share.
  6. Scroll the Product-wise Sales table (Product, SKU, Category, Qty, Orders, Avg Price, Discount, Tax, Revenue, % Share) for full per-SKU detail.
  7. 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 / ButtonWhat 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 columnShows 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 tableThe most granular view — one row per product sold in the period, ranked and with its own export button.

Tips & Best Practices

Troubleshooting & FAQ

A cancelled order still shows up when I filter Status = Completed.
Double-check the filter dropdown actually shows "Completed" selected and click Refresh again — filters only apply after Refresh is clicked, they do not auto-apply as you change them.
Orders by Item totals do not match All Orders revenue for the same dates.
Orders by Item sums line-item revenue with per-item discount/tax allocation, while All Orders sums order-level totals; small rounding or allocation differences between the two are expected and both are directionally correct.
Export is missing on one of the tabs.
Export requires Reports/Export permission on your role; ask your Admin to grant it under Settings → Staff Permissions.
The revenue trend chart only shows one bar.
The chart needs more than one month of data in range to draw a meaningful trend; widen your date range (e.g. to This Year) to see multiple periods.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/packages/pos-react-lib/src/pages/SaleOrderReports.jsx

Backend endpoints used:

  • GET /reports/sale-orders
  • GET /reports/sale-orders/items

Related tables (db-core repositories):

  • Sale
  • SaleItem
  • Product
  • Customer

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.