October 2026 Updates
US banks connect through Stripe, the app is rebuilt, time tracking and projects become one Tracker, you can use one part of Expensicat or all of it, suppliers come from your bills, VAT gets checked before it's stored, and Cat builds a whole draft invoice from one message
Octoberat Expensicat.
Notes from Expensicat
In September we said October was one thing: US bank connections. They went live on the 26th. The four things we already owed didn't move, and they're listed at the end.
The rest of the month went to work we hadn't promised. The app was rebuilt, time tracking and projects became one Tracker, your suppliers now come from your bills, and Cat can build a whole draft invoice from chat.
US banks, through Stripe
Choose United States under Settings → Bank accounts → Connect bank, and Stripe's window opens over Expensicat. Sign in with your bank, pick the accounts to share, and the last 90 days of posted transactions come in. New ones arrive with Stripe's daily refresh and our own sync twice a day. They get what any other bank's transactions get: categories, receipt and bill matching, recurring payments and suppliers.
Expensicat asks Stripe for balances and transactions only. It doesn't request your account and routing numbers, and it can't move money. US accounts have no IBAN, so they can't be the bank details printed on your invoices. The announcement has the rest.
The app, rebuilt
We redid every screen this month, in light and dark. Colour now carries an outcome: green for settled, amber for anything that needs you, red for rejected. A filled button marks the one thing to do on a screen, and everything else stays quiet. Documents is now called Vault.
Tracker
Time tracking and Projects were two pages. They're one page now, Tracker, with a tab for each.
Type what you're working on and press Enter to start a timer. Start the line with a duration instead (2h, 1:30, 45m, "yesterday 2h") and it logs finished time. The timer follows you from page to page, and starting a new one stops the last. Stop one in under a minute and nothing gets logged.
Select entries to invoice and choose how they read: one line per project, per task or per day, or exactly as tracked. Each entry then shows where it stands with the customer (draft, invoiced, paid), and a project with an estimate shows a bar that turns amber when the work runs over.
Use one part, or all of it
Expensicat has four parts: invoicing, time tracking, bank transactions, and receipts and bills. Each works on its own, and onboarding now asks which you want. Leave out bank transactions and you skip connecting a bank. Without receipts and bills, you skip setting up the inbox.
Each person edits their own sidebar, dragging items into order and hiding what they don't use, and teammates keep theirs. Your overview follows it, so hiding Transactions takes Cash, Money in and Money out with it, and hiding the Inbox stops the requests for missing receipts. Hidden pages and records stay where they are, and search still opens them. Workspaces without a bank also stopped getting a daily summary calling them incomplete.
The new agents page goes through each part on its own, for anyone wiring Expensicat into an agent. The release entry has the details.
Suppliers come from your bills
Expensicat matches every invoice, receipt and credit note you receive to a contact by tax number, Peppol address, website or name. A new supplier appears only when nothing matches. The Suppliers page, under Customers, shows what you spent with each one over the past 12 months, how many bills they sent and when the last one came. Outgoing transactions take the supplier of the bills they paid.
Customers and suppliers now share one contact list, so a company you invoice that also bills you is one contact with both roles. Choose a different supplier on a bill and the next bill from that seller goes to the one you chose. Expensicat doesn't pay your suppliers. The release entry covers merging contacts and what counts as a duplicate.
Bills flagged by your own habits
A due date is the supplier's deadline, and it can fall a month after you'd normally have paid. Expensicat now takes the last bills you paid a supplier (at least three, from the past 18 months) and works out the median number of days you take. A bill still unpaid two working days past that point gets a reminder, in the app and by email, and the reminder clears once the payment reaches your bank and matches.
A reminder waits until every account that has paid that supplier is synced, so a slow bank feed doesn't read as a missed payment. Expensicat won't pay the bill, and a supplier you've paid fewer than three times still gets the older check after the due date. The Due Date Is the Wrong Alarm explains the thinking.
VAT, checked
Expensicat now reads the VAT on your receipts and invoices rate by rate, along with the IBAN and reference to pay. A model reads what's printed, then code adds it back up under each common rounding method, and the VAT is stored only if the figures match every printed total. When they don't, nothing is stored, because a missing VAT figure is better than a wrong one. On our own books the VAT checked out on 195 of the 213 documents that print it. IBANs and references are stored only when their check digits hold.
Expensicat read your existing documents again in the background and filled in what was empty. The inbox doesn't show these figures yet, so for now you get them by asking Cat. The release entry lists what stays unchecked.
VAT numbers get checked too. Reverse charge used to need only a number in the right format, and for Greek and Hungarian buyers it didn't even need that. Now, when you issue an invoice to an EU business, Expensicat asks VIES, the EU's VAT register, and keeps the answer on the invoice, with the consultation number when VIES gives one.
A new switch under your business's Selling abroad section, "Reverse charge only on verified VAT numbers", goes further: with it on, a reverse-charge invoice won't issue until VIES confirms the number. With it off, which is the default, a number in the right format is enough and a VIES outage never holds up an invoice. VIES covers EU numbers only, so it can't check a UK, Norwegian or Swiss one.
Cat builds the whole draft
Until this month, Cat couldn't add lines to an existing invoice or attach a receipt to one. Now it can, and one message can create a customer with a VAT number and a draft invoice. A receipt attached through Cat bills back the way it does in the editor, as one line at the receipt total linked to the receipt. Come back to a draft in a new chat and Cat finds it, with its lines and attachments intact.
Routine edits that are easy to undo (drafts, categories, customers, projects, time entries) run on their own. Anything that deletes data, sends something outside your workspace, issues a fiscal document, or changes members, bank accounts, integrations or settings stops and waits for you, and so does anything unclear. Cat acts with your permissions, and allowing one kind of action doesn't allow another.
- Keep typing while Cat works: messages you send in the meantime queue above the message box. Steer pushes one into what Cat is doing now, and ✕ removes it
- Reply to a question with a file: the question card now takes attachments, and Cat reads them with your text
- The conversation decides what a file is for: a file you send for work under way is used for that work, and only an upload nothing explains goes to your inbox
- WhatsApp albums arrive whole: an album, or a photo followed by a line about it, reaches Cat as one message. The middle photos of a burst used to get dropped
- Invoice cards in chat stay current, and they show the invoice's own currency and unit names, where every total used to read as USD
- Cat's allowance is now in dollars: $5 a month on Solo and $20 on Team, measured by what its models cost, and nothing is charged during beta
Chats from before 28 October keep their transcript, but Cat doesn't remember their earlier messages when you continue them.
Invoices and payments
- Receipts attached to a draft offer themselves as lines: a faded row with the vendor and total. ✓ adds it at the receipt total including tax, so your customer pays back what the receipt says, and ✗ dismisses it. A receipt in another currency isn't converted
- VAT-inclusive prices add up without a rounding line: €199 including 25.5% VAT used to print €158.57 + €40.44 with a −€0.01 correction, and now prints €158.57 + €40.43. Invoices already issued stay as they went out
- Quantity and rate accept decimals: the browser used to refuse values like 353.40 and 1.5
- A paid invoice keeps its attachments, whether the change comes from the app, the API or Cat
- Cat can edit invoice lines linked to your catalog, which used to fail with a permissions error
Suggestions and imports
A payment suggestion now needs a matching amount or the document's reference. A name alone no longer qualifies. A parking receipt that named the driver used to offer transfers paid to that person, whatever the amount, and they crowded the exact card payment off the list.
CSV imports now land in an account you choose and add only what that account lacks. Import an overlapping file and the result tells you how many rows are new and how many were already there, while three identical charges on one day stay three. A bank you connect later takes over the imported rows instead of doubling them, and documents linked to those rows stay linked.
For anything that talks to Expensicat
/v1/customersis gone: contacts live at/v1/contacts, with arolesfield. Thecustomers:*scopes are nowcontacts:*, and we switched your existing API keys, OAuth apps and custom roles over- Invoice attachments over REST: list, attach and detach on
/v1/invoices/{id}/attachments, and each attachment comes with the line that bills it back - Updating a draft's lines recalculates it:
PATCH /v1/invoices/{id}withitemsworks out tax and totals the way creating an invoice does - VAT numbers on their own:
GET /v1/vat/{number}, behind a newtax:readscope - Invoice payments report
originandsourcein place ofevidenceandstripe_payment_id - Requests that change data accept an
Idempotency-Key, so a retry doesn't do the work twice - MCP gained
create-transaction, so an agent can keep books without a bank feed
Everything else
- Files over 6 MB finish uploading: until this month they couldn't, anywhere in the app
- Recurring payments show up in the forecast: ask Cat what's coming up and the answer now includes subscriptions, rent and retainers. Payments on a connected bank fill in at the next sync, and each one appears once, at its next date
- A bare $ reads as US dollars, unless a seller in another dollar country sells to a buyer in that country or names no buyer. Documents already read keep their reading
- A bank outage leaves your balance alone: when a bank stops answering, the balance you last saw stays instead of being blanked
- Email import got harder to stall: a file Expensicat can't read is skipped so the rest of the email comes through, and a filename in any script no longer stops a whole mailbox
- Link bank payment lists your transactions again
- Seller logos are back on your documents
- Notifications open the record they're about, and each notification email arrives once
- One cookie choice covers this site, the app and the docs, so you'll be asked once more. Analytics load only after you accept, and in the app your amounts, merchants and names never reach them
Coming in November
These are built and shipping now:
- Receipts for every payment: a purchase gets the receipt and the invoice together, and an invoice paid by card or bank transfer sends your customer a receipt by email. Mark as paid becomes one click, with an Undo
- An invoicing API you can retry safely: creating an invoice with an
Idempotency-Keygets the first response back however much later you retry, credit notes take a partial amount, and the smallest invoice you can create is a customer and its items - One business per team: a team invoices from one business, and teams that already have several keep them
Still owed
The same four things as last month: the government rails (KSeF, SdI and ANAF sending for you), the billing platform's external surface, per-member visibility on bank transactions, and paid plans. Expensicat stays free during beta, and the pricing page's promise stands: at least 30 days' notice before it ends, and a 14-day trial when it does.
September's post also called Stripe's balance, fees and payouts in Transactions the next piece. That isn't built, so the payout reaching your bank still doesn't reconcile against the charges it's made of.
If one of the four is what's keeping you off Expensicat, tell us which.