Week of
Download your data, tax-lot picking, and imports that stop duplicating
Every account's ledger now downloads as ordinary spreadsheets, and the sell planner lets you pick which tax lots a sale comes from. Re-importing a statement you have already loaded no longer doubles your ledger.
Ember is in private beta. These are the changes made that week. Join the waitlist for an invite.
Download your data as spreadsheets you can open
The Export card on the Accounts page hands you a ZIP of plain CSV files. There is one ledger per account, in the columns the ledger shows you (payee, category path, memo, signed amount, tags, status, approved), plus sheets for your accounts, payees, categories, tags, and loan terms. Investment accounts add type, ticker, quantity, and price.
A split comes out as its parent row followed by one row per line item, tied together by a shared id, so it reads as a split in a spreadsheet instead of collapsing into a single figure. Everything is named rather than numbered, so nothing in the archive is an internal identifier you would have to decode. Scheduled transactions export with their dates. Deleted transactions and deleted accounts do not.
Choose which tax lots a sale comes from
Each holding in the sell planner's results now opens into its individual tax lots: when you acquired them, long or short term, shares, market value, cost basis, unrealized gain, how many the plan wants to sell, and the estimated tax on that lot. Tick or untick a lot and the selected proceeds, estimated tax, and status recalculate immediately, so you can see what a different lot would cost before you place the trade.
Your picks reset when you run a fresh calculation, and the groups you have opened stay open across one. The rows open with the keyboard as well as the mouse.
Quality of life improvements
- Import: Re-importing a statement you have already loaded no longer doubles your ledger. A row that unambiguously matches one you already have attaches to it as a second record for you to confirm, rather than being written twice, and that now works between any two different files rather than only between a file and your bank.
- Import: Matching considers both dates a row can carry, the purchase date and the settlement date, which a Venmo statement can print months apart. A row that agrees on everything except the payee is no longer duplicated in silence: it imports and is flagged as a possible duplicate, with both payees named on the review card, and confirming the match teaches Ember the pair so the next import stops asking.
- Import: An import brings in every row in the file. Anything that looks like a duplicate is flagged for you to review rather than dropped on the way in.
- Import: Reverting an import takes back only what that import alone added. Reverting the later of two imports that had been matched into one row used to delete the row, taking the earlier import's transaction with it.
- Import: A reverted import can be deleted for good, and the import dialog stays open when you delete one, so a pile of them can be cleared in one sitting.
- Reconciliation: The bank's figure is edited on the figure itself. Clicking it turns that one line into an input and leaves the rest of the readout in place, Enter or clicking away saves, Escape cancels, and a balance typed off the wrong statement can now be cleared rather than only overwritten.
- Reconciliation: The statement strip shows In and Out beside Net again, gives its verdict once instead of twice, and lines up under the breadcrumb with everything above it. The month picker opens as a full year grid rather than a cropped slice, its colored dots say in words what they mean, and the group holding rows that might belong on the statement now reads as something you can open.
- Reconciliation: Reordering an entry's bank records can no longer move a transaction into, or out of, a month you have already signed off.
- Transactions: Right-clicking a row takes that row. It becomes the highlighted, selected one before the menu opens, so what the menu acts on is what you are looking at.
- Transactions: Typing a new total into a split's Amount cell opens the split editor with that total pending, and the line items have to add up before it saves. A retotal that left the parent and its legs disagreeing used to be accepted silently, and surfaced weeks later as category spending that never left the account.
- Transactions:
atoggles a row's approval instead of only ever approving it,bsets bank dates across a whole selection, and Enter or Space inside a confirmation dialog activates its button instead of leaking through to the ledger behind it. - Transactions: Only the input you are actually using highlights a row. A mouse left resting on one row no longer keeps it lit while the arrow keys move the cursor somewhere else.
- Transactions: The detail drawer keeps up with its own row. Approving or clearing from the keyboard with the drawer open updates the drawer too, choosing a different primary bank record re-dates the row in the ledger straight away, and the drawer's Related section draws as the ledger's own table, including the entry you opened it from.
- Transactions: A row with no amount leaves the Amount cell blank instead of printing a placeholder in a column of figures. Sorting the approval column ranks rows waiting on a bank match, which used to tie with rows that need nothing at all.
- Transactions: The selection bar centers on the ledger rather than the window, and its More tray opens from the middle of the bar instead of hard against the right edge of the screen.
- Deleted: In the Deleted filter, the selection bar and the right-click menu both collapse to Restore. Every other edit there landed on a row that nothing else in the app will show you.
- Payees: Changing one transaction's payee moves that transaction. Other rows sharing the old payee, or the same bank description, used to move with it, some of them and not others, with nothing on screen saying why.
- Tags: Editing tags on a row keeps the ledger in the account it is filtered to.
- Search:
notand!work as negation, sonot 50and!50can exclude an amount. A leading minus cannot do that job, because-50already means a $50 outflow. - Matching: A split can absorb a reconciled duplicate with no unreconciling first, and the reconciled balance does not move. One half of a deleted transfer can no longer vouch for a match. A refusal to match reads in amber rather than the blue that looks like success.
- Scheduled: A scheduled transaction matched automatically to the real one goes through the review glyph like every other match, so you can see it, question it, and undo it.
- Venmo: Charge on Venmo is offered from the right-click menu straight away, with nothing to set up first. A Venmo statement import also seeds the reconciliation balances for the months it covers.
- Bank connections: A pending charge is drawn like the ledger row it is about to become. An older bank record can catch up to the fields Ember requests today without re-importing your history.
- Accounts: The figures above the ledger size themselves to the window, so a wide screen gets big numbers instead of the size a narrow one needs.
- Dashboard: A failed refresh keeps what is already on screen and offers Retry, rather than replacing the page. Reports print with styles meant for paper.
- Design: Every color in the app clears WCAG AA contrast in both the light and dark themes, and carries the same visual weight in each.
- Throughout: An expired session is handled the same way on every screen. The writing across the app is shorter, the keyboard cheat sheet most of all: it is now something you can scan mid-task for the keystroke you forgot.