Browse topics

Reports and exports

The twenty-two reports, the date ranges they run over, exporting to CSV, emailing a report on a schedule — and exactly how "sales" is calculated.

Updated July 25, 2026

Reports live under Reports, grouped into seven sections. Every one runs over a date range you choose, shows on screen, and exports to CSV.

What's there

SectionReports
Shop PerformanceEnd of day, Sales summary, Sales by customer, Order profitability, Sales by category
Estimates & InvoicesAll orders, Estimates, Invoices, Unpaid invoices, Paid invoices, Customer aging
Parts & Line Items SoldSales by type
Payment ReportsPayments collected, Payments by method, Payment transactions
InventoryInventory valuation, Low stock, Inventory movement
PurchasingVendor spend
Individual PerformanceTechnician labour sales, Technician hours, Technician efficiency

Nine of them draw a chart above the table. The rest are tables, because a table is what you want when the next step is a spreadsheet.

Date ranges

Every report takes the same set: today, yesterday, this week, last week, this month, last month, last 30 days, this year, last year, all time, or a custom from-and-to.

Warning

Ranges are resolved in your shop's timezone, then converted for the query. "Today" means your calendar day, not the server's. This is why a report run late in the evening still shows the day you're actually in.

How "sales" is calculated

Worth reading once, because it explains numbers that look wrong until you know the rule.

  1. Labour is priced by hours, not quantity

    A labour line stores its real time in hours and a quantity of 1. Sales figures multiply the rate by the hours. Parts, tires and sublet are quantity times unit price.

  2. Sales are after discount

    A line's own discount is applied, and a standalone discount line is subtracted. Reported sales are what you actually charged.

  3. Fees count at their resolved value

    A percentage fee is worth what it resolved to on the order, not the raw percentage figure.

Three things are deliberately outside the sales figure, and this is the part worth being precise about:

  • Tax — reports are pre-tax.
  • Shop supplies and shop-wide fees — they belong to the order, not to any line, so they are not in line-level sales.
  • The labor-matrix uplift — where a matrix adjusts a rate, reports use the posted rate. The order and the invoice use the adjusted one.

And one thing that is deliberately inside it: line-level sales do not filter on authorization, so work a customer declined still appears in the line-level reports even though it never reaches an invoice.

Note

So a report total can sit slightly below the invoiced total. It is not a rounding error; it is a pre-tax, line-level view. Use the invoice reports — Invoices, Paid invoices, Payments collected — when you need the figure the customer was actually charged.

Exporting

Export CSV on any report downloads the full result for the current range and filters — not the page you can see. Open it in a spreadsheet, hand it to your accountant, or keep it.

Reports by email

Under Settings → Scheduled Reports you can have a report arrive in your inbox instead of remembering to go and look at it.

A schedule is: which report, which date range, how often (daily, weekly on a chosen day, or monthly on a chosen date), what time of day, and who gets it. The full CSV can be attached, or you can have the summary only.

Note

The time of day is your shop's time, and recipients are owners and managers of the shop. A schedule can be switched off without deleting it, which is what you want for the report you only care about at year end.

Schedules fire once per due date, so a report never arrives twice because a server restarted.

Troubleshooting

"Labour looks too low." You are comparing against an old export. Labour is valued by hours; if a figure looks like one hour's rate on a three-hour job, it came from somewhere else.

"The report total doesn't match my invoices." Reports are pre-tax and exclude shop supplies, shop fees and the labor-matrix uplift. The invoice reports are the ones that match what was charged.

"The CSV only has one page in it." It doesn't — the export ignores paging and returns the whole range.

"Today's report is empty." Check the range against your shop timezone, and check the shop timezone is set on your shop profile.

"My scheduled report didn't arrive." Check the schedule is enabled, that its time of day has passed in your shop's timezone, and that you are on the recipient list. Only owners and managers can be recipients.

Was this helpful?