Appearance
Reports and problems
Seeing how the shop is doing
Retail → Stock reports has six tabs: Stock value, Margin, Expiring, Shrink, Price audit and Tax summary. The export menu in the card's header takes away the tab you are looking at as a reading-mode preview, an Excel file, a PDF, a printout, or a share. See Taking data away.
Every tab except Expiring is a money report and needs Level 6.
Stock value
What you are holding, priced at what it cost you.
Three figures at the top: Stock at cost, Units on hand, and Never counted. Then a table of Product · Barcode · SKU · On hand · Cost each · Value, biggest value first, with a total across everything, not just the page you are looking at.
Watch the Never counted figure
It tells you how many products in this valuation have never been physically verified. If it is high, the total is a reasonable estimate rather than a fact, and the fix is a stock count.
Margin
What selling actually earned you. You must set a From and To date; it defaults to the first of this month to today.
Four figures: Taken (what customers paid you, tax included), Revenue (the same money net of tax — the tax each sale was charged under your tax codes, nothing for a shop without them), Cost of sales (what those goods cost you), and Gross margin in both money and percent.
Broken down by re-cuts the table three ways:
- Product — which products earn, and which just move.
- Category — which categories carry the shop. A category is the Tracker Group its products sit in.
- Location — which shop floor or branch performs.
Refunds are netted off, so a returned product removes both its revenue and its cost — at the price and cost of the sale it reverses.
The note under the table says what the figures are: revenue and margin are net of tax, whether the shelf price includes the tax or the till adds it.
If you take more than one currency
The margin screen shows two different kinds of number, and it matters which is which.
Taken at the till sits at the top, one figure per currency. These are what each drawer actually took, in the currency it took it, and they are never added together — a ZWL float added to a USD one matches no drawer in the shop.
Everything below it — Taken, Revenue, Cost of sales, Gross margin, and every row of the breakdown — is all of it consolidated into the currency your reports are totalled in, at the rate in force when each sale happened. Not at today's rate: a period that has closed keeps agreeing with the receipts written in it.
Stock value is always in your main currency, because that is the currency every cost is recorded in.
Why the two do not obviously add up
They are answers to different questions. "What is in the till" has one answer per currency. "What did we make" has one answer for the business. Recording a new rate tomorrow changes neither of them for sales already taken.
Expiring
What is about to go off. Choose Looking ahead: 7, 30 (the default) or 90 days. The table shows Product · Batch · Received · Expires · Days left, soonest first.
Read this one carefully
It shows the quantities that were received in each delivery, not what is left of them. If you took in 200 yoghurts and have sold 190, this report still says 200.
Treat it as a prompt to go and look at the shelf, not as a stock figure.
It also only knows what you typed on the delivery. An expiry reaches it from the Expires box at receiving, so a product with no shelf life on its profile and no date typed by hand will never appear there, however perishable it is.
Shrink
What you lost and why. Set From and To dates.
Lost at cost is the headline — what the lost stock cost you, not what it would have sold for. Beneath it, Units, and a table of Reason · Write-offs · Units · At cost.
This table is built entirely from the Why you chose on the Adjust stock screen. Anything recorded without one appears as No reason given — and a large "No reason given" row is the report telling you that your write-off habit needs tightening, not that your losses are mysterious.
Price audit
The sale lines whose price or tax the server had to judge. Set From and To dates. A line shows here when a till sent a price other than the shelf price, when a basket was charged a shelf price that has since changed, or when a till's tax differs from the shop's tax settings.
Lines flagged is the headline. The table reads Rung up · Reached server · Hours to reach server · Product · Units · Booked at · Till sent · Tax gap · Why flagged · Till.
- The period is read by Reached server, so a sale rung up days ago that only reached the server today is in today's audit.
- Hours to reach server: a few hours is a till that was offline; days on a line charged an earlier price deserve a closer look.
- Tax gap: what the till says it took, less what the shop's tax settings call for.
- A long period shows only the newest lines, and says so. Narrow the dates to see the rest.
Voids and refunds
Retail → Voids & refunds lists every refund given, every basket voided and every line taken off a basket before payment, one row each: when, what, the location and lane, the cashier, and for a refund the reason, the receipt number and who approved it (their own clearance, or a supervisor's PIN). A refund with no receipt says so. Filter a column to one cashier, lane or reason; the table exports to Excel and PDF, prints and shares like every register. Voids and removals show what the basket showed — nothing was sold, so nothing is on the ledger for them.
The screen has its own filters above the table: Location (one location's tills, or Everywhere) and From / To, which opens on the first of this month to today; both days are included whole. A period holding more than 5,000 of one kind shows only the newest 5,000 of that kind, and says so — narrow the days or the location to see the rest.
The Approval column reads Own clearance for a refund the cashier's own level covered, and Supervisor PIN for one a supervisor approved.
At a shared counter login, a refund, a void and a removed line name the counter's login in the Cashier column, and a refund approved on the checked-in person's own clearance names the login as its approver too. A refused approval names the checked-in person who asked, with the counter beside them — Olivia Moyo (at Front counter) — and so does the Released by / why column for a release.
Each refused supervisor approval is a row too, as Approval refused: the cashier who asked, the supervisor whose PIN they tried, the refund it was for and why it was refused (a wrong PIN, or a lockout). Nothing was paid on these rows — they are there so you can see who is guessing at a PIN. A wrong PIN is one row each; a cashier who keeps trying while locked out is one row per lockout, with the number of tries in the Approval column.
A refund that was started but never finished — the till lost its connection before anything came back — is listed as Refund not completed, nothing returned, at 0, so it counts towards no total.
A refund a supervisor released after it stopped part-way through being written is listed as Refund released, part refunded, at the value and units of the lines actually refunded — never what it was started for — and the Released by / why column names the supervisor and their reason. One released with nothing written is Refund released, nothing returned, at 0. In the rare case that a line the release gave back was written afterwards by the stalled till, the row says so, counts that line, and asks you to reconcile it by hand.
A refund that is still being completed — one that stopped part-way through being written, or one that stopped earlier and has not yet been released — is listed as an ordinary Refund row, with the full value it was started for, not only the lines already written. This screen does not mark it as unfinished: the sale itself shows it as being completed. Level 6, like Shrink.
Tax summary
What your sales owe in tax, for a VAT return. Set From and To to the return's period. One row per tax code at each rate and location — or, with Rows: one per code per month, per month as well — showing:
- Taxable net and Tax — standard-rated sales, before tax, and the tax on them;
- Zero-rated and Exempt — reported in boxes of their own on most returns;
- Not taxed — sales no tax code applied to, such as everything sold before you set tax up. Shown, not hidden, so a return never looks complete when it is not;
- Gross — what customers paid.
The figures come from the tax worked out on each sale when it was rung up, so a rate changed later restates nothing. Refunds in the period are taken off. It is a full table: filter, sort, export to Excel or PDF, print or share it, and the totals travel with the export.
- Days and months are in your own time zone — the one your browser is set to — and the summary says which under the totals and in the export. A sale at 01:00 on the 1st, local time, is in that month's row, not the month before.
- Sale lines where the till's tax differed from the tax setup at the time are counted in a note under the totals when there are any: N sale lines where the till's tax differed from the tax setup at the time. The figures above include them as booked; Price audit shows what the till charged and what was booked. A line is booked with the till's tax where the difference is one the setup explains — a code the shop had, at a rate and treatment that code carried in the week up to the sale — and with the setup's figure otherwise. Both kinds are in the count, and both are on Price audit.
- Very long summaries are capped at 2,000 rows. When that happens it says so on screen and in the export, and the totals still cover every row — narrow the period or pick a location to see the rest.
Level 6, like the other money reports.
Filtering
Every report takes a Location filter (default Everywhere), so you can compare branches or look at one shop floor on its own.
The subtitle line under the tabs always states the period and location you are looking at, and that subtitle is carried into the export — so a printed page can never be mistaken for a different period's.
Things to know before they surprise you
Nothing can be edited or deleted. Not a sale, not a delivery, not a write-off. Every correction is a new entry. Take the extra two seconds to get it right first time, and when you do not, correct it openly.
"Never counted" matters more than it looks. Until a product has been counted once, its stock figure is built from whatever movements Trackapt happens to have seen — which excludes everything that was on the shelf before you switched the module on. Count everything once, early.
Cost comes only from deliveries. Booking in a delivery is the only thing that sets what a product cost you. A product that has never been received shows not costed, values at zero on Stock value, and shows a 100% margin — because as far as Trackapt knows, it was free.
Locations are never deleted, only closed. Same for checkout lanes — switched off, not removed.
Common problems and what they mean
| What you see | What has happened | What to do |
|---|---|---|
| No Retail in the sidebar | The module is not switched on for your account | See Turning modules on. Reload the app once it is. |
| This shop has no selling location yet | No location created, or all closed | Setup → Add location |
| Nothing carries 5012345678900 on any scan | That barcode is not on any product | Check the scan, then make the product sellable |
| Milk has been delisted and cannot be sold | Available to sell is unticked | Tick it back on from the catalogue, if it should be on sale |
| Barcode 5012345678900 is already used by Milk in this account when saving a product | Another product already carries that barcode, or another spelling of it. A SKU says the same: SKU BRD-WHT is already used by… | Open the product the message names and fix whichever of the two is wrong |
| Some codes are shared by more than one product on the catalogue | Two or more products carry the same barcode or SKU, so a scan of it cannot tell which was sold | Give each product listed its own code. Codes in groups you cannot open are only counted — someone who can open those groups needs to fix them |
| Book it in is greyed out | A line has no cost | Read the orange Still needs a cost line — it names the items |
| Book it in greyed out, Still needs a batch | A batch-tracked item has no batch typed | Type the batch from the box into the Batch column |
| Pick two different places | A transfer's From and To are the same | Change one of them |
| Received is greyed out on a transfer row | The transfer has no destination recorded | It cannot be received. Record the arrival as a fresh transfer. |
| N sales not yet sent at the till | The network dropped; sales are queued on this device | They send themselves when the connection returns. Send now to retry. Do not clear the browser data until it is gone. |
| No Cash given box at the till | The basket is empty | Nothing is wrong — it appears once there is money to collect |
| A product shows never counted | It has never been physically counted | Count it |
| A product shows not costed | No delivery of it has ever been booked in | Book the next delivery in properly. For stock you already owned, book an opening delivery |
| A product's cost looks about half what you paid | It was counted before its opening delivery was booked in, so the real cost was averaged against free stock | Zero the product out and book it in again |
| Stock value looks far too low | Products are not costed | Check how many. Cost arrives with the first delivery of each product. |
| Margin shows 100% on a product | It has no recorded cost | Same cause — book a delivery in |
| A colleague sees more products than you | Tracker Group whitelisting — you see only the categories you have been given | Ask whoever manages your team to widen your access, if you should have it |
| A checkout lane stopped selling | Its secret was rotated, or it was switched off | Check Setup → Checkout lanes — the last seen time tells you when it last worked |
| The secret was lost | It genuinely cannot be recovered | Click Rotate, take the new one, and reconfigure the checkout |
What each screen is for, in one line
| Screen | One line |
|---|---|
| Till | Scan, total, Take payment. Keeps working offline. |
| Receiving | Book a delivery in. The only place cost is recorded. |
| Stock count | Count the shelf. Anchors the stock figure. |
| Count sheet | Count a whole aisle from a list. Finds what is missing. |
| Adjust stock | Damage, expiry, theft, staff use — and stock found. |
| Move stock | Send stock to another location; confirm it arrived. |
| Catalogue | Everything you sell, its barcode and its price. Change prices here. |
| Price changes | Read-only history of every price move. |
| Stock reports | Stock value · Margin · Expiring · Shrink · Price audit · Tax summary. |
| Voids & refunds | Every refund, void and removed line, and every refused supervisor PIN. |
| Setup | Currencies, tax codes, refunds (your supervisor PIN and the no-receipt limit), locations, checkout lanes and quick keys. |

