Transaction screen

Transaction

The single editor for every transaction shape — a regular expense, a transfer between two of your accounts, or a split across multiple categories. Mode chips at the top swap which fields are visible.

Mode

  • Regular — one account, one category, one amount. Income or expense is inferred from the category's classification.
  • Transfer — one source account, one target account, one amount. Writes a balanced pair of legs and does not contribute to spending or income totals.
  • Split — one account, one total, multiple category rows that sum to the total. Each leg can also be a transfer.

Date

The ◀ / text / ▶ / 📅 stepper. The arrows nudge by one day (long-press: a month); 📅 opens the system date picker. The text is typeable — digits only, the separators appear on their own — and on a complete date you can select just the day or the month and overtype it in place. Tapping the arrow on an empty field seeds today.

Account

Which of your accounts this entry posts to. Required. Locked when you opened this editor from inside one account's detail screen. A fresh entry opens on the account you last saved a transaction to, and the quick-pick chips are your most-used accounts.

Payee

Free-text with autocomplete from past entries — suggestions are ranked by how often (and how recently) you use each payee, and the top ones appear as soon as the field is focused. Typing a new name creates the payee on save. Picking an existing payee pre-fills the category (and classifications) from its last entry; if you already typed an amount, a small Last time: … chip appears under the Amount field instead — tap it to swap in the payee's usual amount.

Amount

The calculator field. Sign is owned by the leading ± / − chip. Paste-friendly: (25,00), −1'234.56, $1,234.56 all parse cleanly. The calculator icon opens a full-keypad sheet with copy / paste / sign-flip chips.

In transfer mode the sign slot holds a ⇄ chip instead: one tap swaps the From / To accounts, reversing the transfer without re-picking either. Its colour reads the direction relative to the account you opened the editor from — red when that account sends the money, green when it receives.

Paying in a foreign currency (a card abroad, a EUR receipt into a CHF account)? The calculator sheet has a Type in currency rail under the display: tap a currency chip to type the foreign amount and watch the converted value track live. The rate pill shows the stored rate at the transaction's date — tap it to edit the rate on the keypad, or tap the converted line to type what your bank actually charged and let the rate derive itself. The + chip searches the full currency catalog for currencies the book hasn't met yet; rates you commit are saved and reused both ways.

Category (regular and split modes)

The category this leg books to. In split mode, every row carries its own category, and the per-row arithmetic must sum to the header amount before Save is enabled.

Transfer to (transfer mode)

The destination account. Cross-currency transfers prompt for the target-side amount so the FX rate is captured per row. The destination amount is prefilled from the stored rate and stays editable; its calculator opens with the source leg pinned, so typing the received amount adjusts the implied rate live.

Split rows (split mode)

Switching to Split seeds the first row for you, pre-filled with the full amount. Tap + Add leg to append more — each new row arrives carrying the remaining difference, so a two-way split only needs the first amount typed. Each row has a small × to remove it. The footer pill shows how far the split sum is from the header total; Save unlocks at zero.

Status

The reconciliation ladder lives inside the Status & after save panel under the Amount field. The vertical ladder on its left is the status picker: ○ Entered (default for any row you just typed in), ◑ Pending (the bank shows it as pending), ✓ Cleared (the bank has posted it), ✓✓ Reconciled (green — locked from a finished reconcile session; usually set by that flow, not by hand).

Each ladder step lines up with one row of the table beside it, and each row is one of the account's running totals: the balance (every row counts), everything pending-and-up, everything cleared-and-up, and the reconciled total. The table shows where each total lands after you save, with the change underneath. The selected status moves its own row and every row above it — rows below stay put for now and show, after an arrow, the total they will reach once the status gets there. Transfers show both accounts side by side, each in its own currency. Status is kept per leg: the ladder sets the leg you opened, and the other account's header carries its own status pill — tap it to set that leg without reopening the transfer from the other side.

  • Land a total on an exact value — tap any number with a pencil beside it and type where that total should land (the 0 chip zeroes it); the Amount is worked out for you. Pay a card down to exactly zero, sweep an account empty, or leave precisely 500 behind. A target that would need the money to flow the other way is refused — swap the transfer direction instead. Rows the status doesn't reach yet take a target too — the Amount is worked out for the day the row reaches that rung, so you can plan a transfer that will reconcile a card to zero before it clears.
  • Fold it away — the chevron collapses the panel to a one-line After save summary and the status picker returns as the compact horizontal row. The choice is remembered.
  • In split mode the table is read-only (the amount is the sum of the split rows); in bulk edit the panel is hidden.

Abandoned

Toggle off the entry without deleting it. Abandoned rows render struck through in lists and don't count toward any balance, budget, or report total. The data is preserved so you can revisit your reasoning later or restore the row (toggle off Abandoned). Use this for refunds you never want to delete, mistaken duplicates kept for the paper trail, or any row you want history of without arithmetic.

Follow-up

Toggle on when this row needs your attention later. Flagged rows show a clock icon in the list as a personal reminder; the engine doesn't act on the flag itself.

Two optional fields appear under the toggle:

  • Follow-up date — when you want to be reminded. As soon as the date comes up, the Transactions tab shows a cyan counter badge with the number of follow-ups due. Tap the tab to find them in the list.
  • Follow-up notes — what to follow up on (a refund to chase, a receipt to file, a category to revisit). Free text, indexed by the global search.

Notes

Free-text memo, up to 255 characters. Indexed by the global search.

When you opened this editor on one leg of a transfer, a small "Related transaction" link jumps to the other leg.

Duplicate (edit only)

Editing an existing transaction shows a copy icon in the header. It opens a fresh entry pre-filled from the row — account, payee, amount, category, splits or transfer legs, notes — ready to tweak and Create. The copy always starts as Entered, with the cheque number cleared.

Saving

The Save button lives in the top-right. The form blocks save while required fields are empty or the split sum doesn't balance — the offending field shows a red ring. Errors from the database (FK violation, currency mismatch) surface as a banner above the form.

Leaving the form with unsaved changes — back, Escape, another tab, another row in the list — first asks Discard changes?: Keep editing returns to the form, Discard drops the edits and goes on. Every editor in the app asks the same.

Quick entry

Type a whole transaction as one line in the search bar (⌘/Ctrl+K, or the rail's search button) and pick the ⚡ row — the editor opens with every field primed for you to check and Save:

42.50 whole foods yesterday #groceries @checking // team lunch

  • Amount — the first number. Plain or - = expense, + = income. A currency symbol or code next to it is ignored (the account's currency governs).
  • Payee — the words left over. A known payee is matched (its usual category and amount autofill as if you'd tapped it); anything else becomes a new payee on save.
  • Date — today / yesterday / tomorrow (in any app language), a weekday name (the most recent one), 15.08 / 8/15 in your display locale's order, 2026-08-15, 15 aug, 1st. Default today.
  • #category — #groceries, #food:groceries, #eating out.
  • %classification — a value of either named classification axis (%business, %trips:italy); up to two, one per axis. A name that exists on both axes counts as the first one.
  • @account — the source account. On an account's own screen it defaults to that account, else to the last account you used.
  • > account — makes it a transfer to that account (500 @checking > savings).
  • // notes or a "quoted run" — notes.

Everything is order-free. Unmatched names show with a ? in the row so you can fix them before saving.

  • Save without the editor — ⌥/Ctrl+Enter on the ⚡ row (or its trailing ✓✓ button) commits the line as-is: a known payee's usual category fills in, a new payee is created, a transfer needs both accounts resolved in the same currency (else the editor opens).
  • Planned occurrences — a payee that has a plan due (netflix 17.99) also offers Enter planned (editor primed from the occurrence, your typed amount wins; ⌥/Ctrl+Enter accepts it as-is). Prefix a verb to act directly: skip netflix skips the occurrence, accept netflix (or enter / post) posts it as-is. Verbs work in every app language (überspringen, passer, salta, omitir, overslaan / annehmen, accepter, accetta, aceptar, accepteren).

Report an issue

Found a bug, or something confusing? Tell us. Your report becomes a public issue on the project's issue tracker, readable by anyone, so please don't include names, amounts or other personal details.

We attach the page you're on, your browser and your language. No contact details, account or financial data are sent.