Back to blog

Five transaction pages become one

Every transaction opens the same page, the two review queues merge, and rules, knowledge, and the work log land together. Plus reconciliation state keyed per account, a mobile sweep across every module, and a card terminal on any invoice.

Product updateBooksPlatform

Zeno grew module by module, and each module built its own version of the same three screens. There were two review queues, five transaction detail pages, four places knowledge about a vendor could live, and a per-module review route for anyone who found one before the other. That’s the cost of moving fast across verticals, and it came due.

Last week was consolidation.

Every transaction opens the same page

Bill, invoice, payment, journal entry, transfer, credit memo, register line: they all open the same page, which renders according to what the transaction is. The five layouts that disagreed about where the attachment goes are gone. Posting shows rolled up, with status glyphs in place of prose, and the page sizes to its container. Opening a bill gives you a way back to the page you opened it from.

The two review queues become one

/books/review and /expenses/review were two queues doing one job, forked long enough ago that they had drifted in what a row shows and what an approve does. They’re one surface now, with shared row cells and shared behavior: sortable on every data column, responding to your click rather than to the refetch that follows it, and with a mobile layout the expenses queue never had. The per-module review routes are retired, so work arrives in the inbox.

Rules, knowledge, and the work log on one page

Rules, agent-knowledge entries, and the work log sit on a single page under one filter bar, next to the inbox they inform. From a categorized row in review, you can promote the categorization to a rule without leaving the row, and a value that came from a rule is badged with the rule that set it. Rules can be previewed in batch against the pending queue before they’re applied, and applied fill-only, so an existing categorization isn’t overwritten. Change a rule and the pending queue re-parses.

Reconciliation state, per account

A transfer between two accounts has two sides, and reconciled state was being stored on the transaction instead of per account. Reconciling one side marked the other reconciled too, which corrupts a reconciliation with nothing on screen saying so. Cleared and reconciled state is keyed to the transaction and the account now. A completed reconciliation that stops footing says so, and can be repaired.

The application on a phone

A sweep across every module: dense tables become card layouts on narrow screens, wide tables scroll horizontally inside their own container and leave the page where it is, low-value report columns drop out on phones, and filter rails stop showing scrollbars. Books, settings, development, practice, contractor, rental, expenses, budgeting, all of it. The account order you arranged at your desk is the order you get on your phone.

Cards, anywhere

Zeno Services’ merchant processing moved from Stripe to Helcim, and the card terminal that had only ever existed inside one module was lifted out. You can take a card against any invoice in any module. Saved cards are held in the gateway’s vault and charged by reference, with opt-in auto-charge on subscriptions. A payment can be received across many invoices at once.

Bank feeds are Plaid-only; Stripe Financial Connections has been removed. A new connection starts at the cutover date and does not pull the account’s entire history, and a lapsed login is detected and reported, so a feed doesn’t just stop.


[email protected].