Expense connectors
Emburse Professional (Certify) connector
VAT4U now connects directly to Emburse Professional, formerly Certify. Generate an API key pair in Emburse under Configuration → API Keys, register it in VAT4U, and expense lines are pulled for a chosen range of the expense report's processed date. Receipts come with them. The extraction hands its CSV to the import wizard like the other connectors, with an Emburse preset ready in the column mapping, and supports scheduled extractions.
KSeF (Poland) e-Invoice connector
The Polish KSeF connector has been brought onto the KSeF 2.0 version, with improved authentication options and data handling. The connection now supports different certificate related identities: by a Polish NIP or PESEL, or by another identifier such as a passport number.
Concur: TAX API certification
VAT4U is now certified for use of SAP Concur TAX APIs in VAT4U Pre-accounting setup. This helps companies using SAP Concur Travel Expense Management to determine VAT and Potential Cashback before expenses are posted to accounting, and avoid later correction of books.
Managing expenses and imports
Upload a ZIP of documents and linking them with data imports
Upload an archive of up to 3 GB; VAT4U unpacks it in the background and matches the file names against the Document URL values from your import, including partial matches and the multi-document form. You then get a preview table — Invoice ID, the imported Document URL, the files that will be linked, and the status. Documents already linked are never replaced. Import one row or import all, and the normal document processing runs against them, so merging several files, image-to-PDF conversion, e-invoice detection and the import's smart checks all behave as for any other import. The table refreshes as it works, and you can leave the page and come back — an unfinished archive is reopened for you.
Larger import files
The scans upload (ZIP, CSV, TXT) now accepts up to 512 MB.
A redesigned data-entry screen
The document pane in the expense wizard used to stack the preview, the OCR banner, the correction statuses and the Additional documents panel on top of each other. The pane is now a toolbar, the document, and a status bar, and only the document stays fixed, so it takes the full width and height available.
Viewer tools — zoom, rotate, crop, remove, and the page indicator — moved into the toolbar instead of floating over the page.
Additional documents is a small button in the toolbar with its count badge, opening the same drawer as before.
The amber "OCR paused" banner is now a status chip: a coloured dot, a short label, the full reason on hover, and an inline Resume action. It covers every stage — paused, reading, page recognition, unavailable, ready — and disappears when there is nothing to report.
Correction status and correction type are compact selects in the status bar, with the connector labels and the "document is also on #123" links as chips on the same line.
New fit-to-height toggle, alongside the existing fill-the-width default, remembered per user.
New draggable splitter between the document and the form, remembered per user. The existing Invoice details expand and collapse toggle is now two presets of the same position.
On a narrow window the panes still stack, with a toggle to give the document more height or collapse it entirely.
Public API
Sorting the expense filter works on every column
POST /v1/expenses/filter now accepts a sort key and direction, and supports sorting by almost all properties. An unrecognised sort key answers 400 Invalid sort key instead of silently returning default ordering as though it had sorted.
Count endpoints
POST /v1/expenses/count, POST /v1/claims/count and POST /v1/companies/count take the same filter vocabulary and permission scoping as their list counterparts and answer with a count plus totals, NET, VAT, GROSS and Deductible in euros for expenses; VAT, deductible and approved totals plus the number of expenses for claims. Counting previously meant paging an entire result set.
Platform
Support chat moved into the header
The floating chat bubble sat in the bottom-right corner — the same corner every form screen puts its sticky Save / Save & New / Save & Keep bar in — so on Edit Expense it covered the Save button, and it overlapped the compliance panel on tall right-hand columns. The bubble is gone. A chat icon now sits in the top bar between Help Center and the Demo/Live toggle, with unread messages shown as a counter on it. The chat window still opens bottom-right when you ask for it; only the always-on bubble has been removed. The first time you visit after the change, a short one-off intro points out where the chat has moved to.
What can each role do?
The role dropdown in the user invitation modal offered six names and nothing to explain them — and the names do not carry their meaning. Administrator and Tax Manager hold the same expense and claim permissions and differ only in who may administer the company, while Batch Processor and Traveler look like ordinary roles but give no view of the company's expenses at all. A new help link next to the invitation modal's intro opens a description of each role by consequence — what the person will be able to do, and what they will not — plus the two things that catch people out: role propagation from a service provider company, and the representative access that lets Administrators and Tax Managers work on the expenses and claims they represent.
The representative company picker
Adding or editing a company representative used a flat dropdown that rendered every company you have access to, which is unusable for a group with thousands of them. It now uses the same searchable company tree as the rest of the app, capped at 100 rows with a "type to search" hint, so a broad search cannot lock the page up.
Faster claims and a tidier jobs table
Removing a single expense from a large claim used to rewrite the sequence number of every invoice in it - roughly 161,000 row updates to remove one expense from an 80,000-invoice claim. Only the rows whose number actually changes are now written. Large claims complete at least 5x faster.
Smaller fixes
As always, a long tail of smaller corrections went out alongside the above. Belgian claim XML no longer fails schema validation on an "Other" line without a language, and the XML validation error page shows its errors again for Belgium, Slovakia, Slovenia, Estonia and Latvia rather than reporting "Invalid parameters". Applying Smart AI data no longer skips an expense whose document is stored under a different company - which happened to expenses moved between companies, and to some connector imports. The notify-by-email option when changing a claim status is active again. Downloading an additional document whose name contains a space now keeps its file extension. Connector logo cards stay aligned whatever the logo's shape, visual glitches in the Inbox module and the vendor invoice correction module are fixed, the German commercial register number is written correctly in generated ZUGFeRD invoices, and the data-entry footer no longer starts short and jumps to the bottom as the page loads. Several accessibility findings across Connectors, Correction Requests and the Expense Wizard were resolved, and a handful of security hardening items were completed across the platform.
Questions about any of this?
Reach out to our support via in-app chat, or your VAT4U contact, and we'll walk you through it.