The register is one chronological table over everything recorded for an account: every security and every cash movement, newest first by default, 250 rows at a time under Show 250 more. Date, Activity, Security / description, Shares, Price and Amount are sortable headings: click one to sort by it, click again to reverse it. Cash balance and Share balance don't sort, because a running figure isn't a value to rank, and they show only when the register is sorted by Date: any other sort blanks both columns, draws no day rule, and one line above the table offers Sort by date to bring them back. Nothing is recomputed: every figure is still attached over the complete ledger before any filter, sort or window; a re-sorted position in the list is the only thing the register declines to show. Filtering, sorting and the export always work over the full result, never only the rows on screen. The filters, the actions and the column headings stay in view while the rows scroll.
Toolbar
Add transaction is the one entry form for everything the register records: choosing Deposit, Withdrawal, Interest or Opening cash hides the ticker, shares and price fields and posts to core cash instead, so there is no separate cash-entry form. Import opens one drawer with the broker-CSV flow at the top and this account's previous imports, each with its own Undo, beneath it. Reconcile opens the one manual sheet described in Settling a reconcile difference. Export CSV covers whatever the filters currently show.
Activity
Each row's Activity comes straight from what the ledger recorded, so the filter groups never invent a category:
- Trades: Buy, Sell.
- Income: Dividend, Reinvested, Interest. A cash dividend on the account's own cash ticker is Interest, the word the account's cash history has always used for it; the same row on a security is a Dividend.
- Deposits & withdrawals: Transfer in / Transfer out on the account's cash ticker and any historical cash vehicle, except a confirmed old-to-new vehicle transition, which is its own group below.
- Transfers: Transfer in / Transfer out of a security, an in-kind share movement rather than a deposit or withdrawal.
- Opening positions & adjustments: the starting shares recorded when tracking began, and any correction to a share count. A share-count adjustment (the kind recorded for a split an account lived through before its history was imported) opens for editing like any other row, under the Activity Adjustment. It keeps that word unless you deliberately change it to another activity, and nothing new is ever entered as one. A row Reconcile posted reads Reconciliation instead, whether it settled cash or a share count. It never reads Deposit, Withdrawal, Transfer in or Transfer out, because nobody deposited, withdrew or transferred anything. See Settling a reconcile difference for what accepting a difference records and what editing such a row does.
- Internal cash changes: a confirmed move between two core-cash vehicles. It stays visible under All activity, and never counts as a deposit, withdrawal, purchase, or sale.
Order and dates
Rows are ordered by date, then by the order they were recorded on a shared date: the ledger stores dates, not execution times, so a same-day order is a display order, never a claim about which trade happened first. A small ≈ beside a date means it was derived rather than read: a broker left the settlement date blank, so the row is dated from the cash sweep that funded it, and a later export of the same broker history can carry a different date for the same trade. The row's own details name both facts.
Scoping to one security
Choosing a Security narrows the table to that ticker's own rows: the discrepancy workflow. View transactions from a Positions row, or Overview's needs-reconciliation item, opens the register scoped this way, with Reconcile available in the toolbar and edit / delete icons on every row. Clearing the Security chip restores the full account history. The Share balance column reads the same either way: scoping changes which rows you see, never a figure.
A Search you typed while looking at one security doesn't follow you to another: arriving at a different security clears it, because the register would otherwise show nothing and not say why. The date range and the activity are kept, and the search survives everything else: clearing the Security chip, coming back to the same security with Back, reloading, or opening the same scoped link again. A search also matches a row's description, the broker's action text and your notes, so "VTI, then reinvest" is a real question.
When the filters leave nothing to show, the register names each one in force (the security, the search text, the date range, the activity) and offers Clear filters, which resets the search, the date range and the activity and leaves the Security scope for its own chip to clear. A remembered Last 30 days hiding a fund you last traded years ago is the usual cause.
Scoped this way, Reconcile opens the sheet already focused on that security. The Positions panel's own Reconcile button, and a snapshot account's Statements toolbar Reconcile holdings, open the same sheet from there; see Settling a reconcile difference for what accepting a difference records.
The two balance columns
The Cash balance column carries the account's end-of-day core cash on each day's last visible row, and the line above the table states, where it applies, the account's starting-point confidence. Beside it, Share balance carries each row's own security's share count after the row; a row on core cash or a money-market vehicle leaves it empty, because the Cash balance column already states those shares. Both columns show only when the register is sorted by Date: any other sort blanks them and offers Sort by date above the table, because a re-sorted row's position would misstate a running figure. The balance itself hasn't changed.
Staying in place
A price update, a saved transaction, an import, an undo or a reconcile re-reads the ledger behind the scenes, and the register keeps its place: the rows Show 250 more has already brought on screen stay on screen, and any row you've ticked stays ticked, as long as it's still there. A ticked row leaves the selection only when it was deleted, an edit moved it outside the current filters, or newer rows arriving above it pushed it past the window, so Delete N selected never counts a row you can no longer see. What does return the register to its first 250 rows and clear the selection is a new question, not a re-read of the old one: changing the Security scope, the sort, or a filter (the date range, the activity, a typed search). Switching accounts always starts fresh.