Skip to content

Custom Reports & Dashboards

Custom Reports is the page where you ask a question the eleven canned reports don’t answer. Pick a domain, filter it, group it, aggregate it, save it. Pivot the result. Drop the result into a dashboard alongside other queries. Four tabs, one underlying query engine.

Updated 4 May 2026·For v1.6.100·5 min read
reports · custom · query builder with field picker, filter rows, and a result table

The four tabs

  • Templates — a gallery of pre-built reports. Pick one to start from a known shape (e.g. Top 20 customers by revenue this quarter, Slow-moving inventory, Refund rate by cashier) instead of from a blank canvas.
  • Query Builder — the structured editor: pick a domain, add filter conditions, choose grouping fields, choose aggregations, run.
  • Pivot Table — drag-and-drop rows / columns / values. Useful for cross-tab analysis (“revenue by category × month”).
  • Dashboards — compose multiple saved queries into one tile-grid view, refreshable on demand.

Building a query

1

Pick a domain

Sales, Inventory, Expenses, Customers, Suppliers, Delegates. Each domain maps to one or more underlying tables; the field list narrows to what’s available in that domain.

2

Add filter conditions

Each row is field operator value. Operators include =, !=, >, <, >=, <=, contains, between, in. Combine with AND / OR. Use the date picker for time fields — the picker honours the tenant’s business-day-start hour, so “today” matches the rest of the reporting suite.

3

Choose grouping fields

Optional. One or more fields to GROUP BY. With no grouping, you get the raw row list; with grouping, the result collapses to one row per group.

4

Choose aggregations

When grouping, pick the value fields and how to roll them up: sum, count, avg, min, max. The classic shape is group by customer, sum invoice total → top customers by revenue.

5

Run and save

The result drops into a sortable, exportable table below the editor. Save stores the query under a name; saved queries surface in the Templates tab and become available as Dashboard widgets.

Pivot Table tab

Dashboards

A dashboard is a layout of saved-query tiles. Add tiles, resize them, give the dashboard a title. Each tile renders its query’s result as a number, a chart, or a small table — the choice is per-tile.

Dashboards aren’t live-streaming; refresh runs the queries and re-renders. That’s deliberate — running every dashboard query on every page open would hammer the database for a screen that mostly sits idle.

The data domains in detail

  • Sales — invoices, invoice items, payments, refunds. Fields: invoice date, customer, total, paid, owed, items count, payment method, delegate, cashier.
  • Inventory — products, variants, stock counts, ingress / egress audit rows. Fields: product name, SKU, category, current quantity, FIFO unit cost, total value, last-restocked date, last-sold date.
  • Expenses — expense rows + amortised prepaid recognitions. Fields: date, category, amount, paid-by user, attachment count.
  • Customers — customer records + invoice rollups. Fields: name, phone, total spend, invoice count, AR balance, store-credit balance, last purchase date.
  • Suppliers — supplier records + PO rollups. Fields: name, total purchases, AP balance, last PO date.
  • Delegates — delegate records + commission accruals. Fields: name, sales volume, commission rate, accrued commission, paid commission.

Permissions

Custom Reports is gated behind the reports:view permission like the rest of the Reports section. Saved queries and dashboards are tenant-scoped — every user with the permission sees the same library, so naming hygiene matters when you’re working multi-cashier.