Reports
The Reports tab shows where your money went and how spending is trending.

Month insight
The forest-green insight card is the month's one strong surface. It carries the month label and picker, a month-over-month headline when the comparison can be made honestly, a neutral comparison line with the category count, and View transactions — which opens Activity filtered to the month you are viewing. When the previous month cannot be compared honestly the headline is left out rather than guessed.
The 6-month total lives in the trend card's header, above the bars: it is the completed spending across the viewed month and the five before it. The full amount always stays readable — it carries its currency, uses the same tabular money figures as the other totals, and at larger text sizes it wraps or moves onto its own line instead of being cut off.
On wide windows the insight sits beside the donut and trend chart, so you see the month's context and the breakdown together without scrolling. On phones they stack in the same order.
Spending by category (donut)
An animated donut chart splits the month's completed expenses by category. Each slice is a category (legend below: color dot, icon, name, amount, percent) and the total sits in the donut hole when it fits. The total carries its currency in the same tabular money figures as the other totals. With larger text or longer amounts, the complete total moves above the ring and can wrap to stay readable.
- Tap a slice to see its exact value and share in a small tooltip; tap anywhere else on the chart to close it. Tooltips also close themselves after 4 seconds. Closing the tooltip does not clear the selection: the slice stays selected and View transactions remains available, so you can read the figures first and drill down afterwards. The whole ring is tappable — even hairline slices select on the first tap — and the selected slice gets a brighter fill.
- Legend rows are tappable too: tap one to select that slice (the row highlights while it is selected). Tap the selected row again to clear it.
- With a slice selected, View transactions appears next to the chart title and opens the Activity tab filtered to that category and month. The merged Other row opens the whole month, because it spans several categories; Uncategorised opens only uncategorised transactions.
- Slices under 2% of the total are merged into a single Other row so tiny wedges stay readable; legend and totals always agree with the month's figures.
- Slices under 1% of the total show as
<1%rather than a round0%. - Colors come from your theme's accent colors, tuned for contrast against the card in both light and dark mode — no category ever shows in "error" red.
- Uncategorized transactions show as Uncategorised.
- A one-time tip ("tap a slice or bar for exact amounts") appears above the chart until you dismiss it.
6-month trend (bars)
An animated column chart of total completed expenses per month for the
current month and the previous five, with gridlines and a compact value scale
(RM 5k, RM 10k). The current month's bar is highlighted. Tap a bar to
see its exact value in a small tooltip (tooltips auto-close after 4 seconds).
Months with small spending still show a visible bar sliver instead of
disappearing next to a much larger month.
Month selector
Use ‹ / › to change the month — the insight and donut update; the trend
always shows that month and the five before it. The › arrow is disabled at
the current month; when viewing a past month, a Today button appears to
jump straight back. The label and the insight block fade to the new month
together, and changing month (or the month's data) clears any selected slice,
so the chart and its View transactions action can never point at a category
from the previous month. A tooltip timeout alone never clears the selection.
On Reports you can also tap the month label itself (e.g. "August 2026") to open a year/month picker: step between years with the arrows and tap a month to jump straight there — handy for reaching old months without repeated taps.
Months after the current one show "No data for \<Month> yet" instead of the usual capture hint, since nothing can be captured there yet.
When spending is hidden
If your base currency has no exchange rates set, foreign-currency spending cannot be converted and would show as nothing. A warning card appears on the Reports tab pointing you to Settings → Currency → Exchange rates. Otherwise a footnote appears when only some rows were unconvertible.
The footnote also appears when the missing rate is in an earlier month of the 6-month trend rather than the month you are viewing: the affected bar keeps its real (partial) amount, its tooltip and screen-reader label note that some amounts were excluded, and the note names the 6-month total as incomplete. A month with genuinely no spending is never flagged. Adding the missing rate updates the values and clears the note straight away.
When an amount is unavailable
Some figures can be too large to represent in your base currency (for example a
runaway exchange rate). When that happens the affected number is shown as an em
dash (—) instead of a partial or rounded total, with a footnote explaining
that some amounts were outside the supported range and were not included. This
is deliberate: a "—" is honest, whereas a plausible-looking wrong total is not.
This is separate from a missing exchange rate (see "When spending is hidden" above): an unconvertible row is excluded and named as such, while an out-of-range total means the rows were added but the running total itself could not be represented.
- The donut's centre total and the 6-month total each show
—on their own: the 6-month figure is unavailable as soon as any month in the window is. - The donut cannot draw honest shares, so it shows a single neutral ring with a
—in the middle and no percentages. The legend still lists every category and marks the affected ones with—; categories whose own amount is fine keep their exact amount. - In the trend, an affected month is drawn as a distinct shaded marker (not an
empty slot, so it cannot be mistaken for a month with no spending) and its
tooltip and screen-reader label read
—. The chart only shows "no spending data" when no month is unavailable and the exact values really are empty.
What counts?
Reports show only completed expenses. Hidden transactions are excluded too (they're not visible by default).