← Back to blog

Matching bank statements with AI: what works and what does not

Last updated: October 15, 2026
TL;DR Proposing and matching, with your confirmation in between. The assistant pulls your outstanding items, lines up the bank entries and says per transaction which invoice it probably is. If the bank entry is missing, it creates it. After your approval, financial_entries_match matches the payment to the outstanding item. Unmatching is done in Exact Online itself.

For many finance teams, matching is where the loose minutes disappear: pick up a bank transaction, work out which invoice it belongs to, link it, next. So the question of whether AI can take it over comes up often. The answer is yes, with your confirmation in between, and it is worth knowing exactly how.

Can AI match my bank statements?

Yes. An assistant retrieves your outstanding items, lines up the bank transactions and says per line which invoice it probably is, including the ones it is unsure about. After your approval it matches the payment to the invoice with financial_entries_match. Both entries — the invoice and the bank or cash entry — must already exist in Exact Online.

What matching actually does

A payment on your bank account is at first just an amount with a description. Matching is the act of connecting that transaction to the outstanding item it belongs to. Only after that does your debtor position hold up, does the invoice drop out of your reminder list, and do your ageing reports mean anything.

Which is exactly why the step is sensitive: a wrong link does not show up in a total, but it does propagate into your reminders and your VAT. The error is quiet, and that makes it expensive.

What the connector can do today

What you wantToolRead or write
Retrieve outstanding itemsfinancial_outstanding_getread
Search receivablescashflow_receivables_searchread
Debtor ageing reportfinancial_aging_receivablesread
Inspect existing bank entriesfinancial_bank_search, financial_bank_getread
Create a bank entryfinancial_bank_createwrite
Add a line to that entryfinancial_bank_add_linewrite
Match the payment to the invoicefinancial_entries_matchwrite

With these seven you cover the whole process: the assistant works out which invoices are still open and which bank line fits, creates the bank entry if needed and matches as soon as you approve.

How matching works

Exact Online has no matching in its regular REST API. financial_entries_match therefore uses the Exact XML interface (topic Matching, the same topic you find in Exact itself under Import/export). You only give the entry numbers; the tool looks up year, period, journal, GL account, relation and amount itself.

Where the line is

  • Both entries must exist. Importing a bank statement (SEPA file) is not possible through the connection; the assistant then creates the bank entry itself with financial_bank_create and financial_bank_add_line.
  • Unmatching is only possible in Exact Online. That is why the assistant always shows the proposal with amounts and balance first.
  • A non-zero balance is not refused by the tool itself: Exact decides whether that combination may be matched. Check such a case in Exact Online.
  • cashflow_receivables_update sounds like it matches, but only updates the description, payment method and payment reference of a receivable.
  • financial_cash_add_line (for cash entries) has no Our reference field. Of the two routes, only the bank route can carry an invoice number.

Why Our reference is the field that matters

On a bank line against a debtor, Our reference is the field that says which invoice this is about. financial_bank_add_line accepts it as ourRef, alongside the account (accountCode), the GL account and the amount. Fill that in properly and the entry is ready with everything needed to make the link — turning the last step into a confirmation rather than a search.

The workflow that works

  1. Ask for the proposal. For example: "Which invoices for customer Bakkerij de Groot are outstanding, and for what amounts?" Then line up the bank transactions and have the assistant say which invoice fits each amount.
  2. Ask for the doubtful cases. Explicitly ask which transactions cannot be matched unambiguously. That list is worth more than the easy ones.
  3. Confirm yourself. Have the bank entry created if needed and approve the proposal; the assistant then matches, for example: "Match entry 14200003 with invoice 14500026."

That is the shape that fits an action which can fail quietly: the assistant does the searching and the matching, you do the confirming.

Where it goes wrong in practice

  • Partial payments — an amount that does not equal the invoice. The assistant can propose the combination, but the remainder is your judgement.
  • Bulk payments — a customer paying five invoices in one amount. Ask for every combination that adds up to the amount; that is exactly the work where arithmetic beats searching.
  • Credit notes — they reduce the amount due and are easily overlooked.
  • Bank charges and rounding — small differences you have to deliberately put somewhere.
  • Currency differences — with foreign currency the amount on your account is rarely the invoice amount exactly.

What you need

Basic is enough for querying and comparing: that is all reading. If you want the assistant to create the bank entry or match entries as well, you need Advanced, because those are write tools. If read-only is enforced for a colleague, those tools are refused even on Advanced — which is the entire point of that setting.

Further reading: sending payment reminders with AI covers what is left after matching, and forecasting cash flow with AI covers what a correct debtor position lets you do. The full tool list is in the tool catalogue.

Frequently asked questions

Can AI match my bank statements automatically?

Yes, with your confirmation in between. An AI assistant retrieves the outstanding items, lines them up against the bank transactions and proposes a match per line. After your approval it matches the payment to the invoice with financial_entries_match. Both entries must already exist in Exact Online.

Which tool do I use to record a receipt?

financial_bank_create creates a bank entry and financial_bank_add_line adds a line to it, with the account, the GL account, the amount and optionally Our reference. To find the right invoice, use financial_outstanding_get or cashflow_receivables_search. Matching is then done with financial_entries_match.

What does cashflow_receivables_update actually do?

It updates an existing receivable: description, payment method and payment reference. Despite the name it does not match anything and does not change amounts or status. That is what financial_entries_match is for.

How does the matching tool work?

You give the entry numbers of the invoice and the payment. The tool looks up year, period, journal, GL account, relation and amount and sends the match to Exact Online through the Exact XML interface, because the regular REST API has no matching. Unmatching is not possible through the tool, only in Exact Online itself. So always let the assistant show the proposal first.

Do I need Basic or Advanced?

Basic is enough for querying and comparing. As soon as the assistant creates a bank entry or matches entries you need Advanced, because those are write tools. If read-only is enforced for a colleague, those tools are refused even on Advanced.

FW
Frank Woutersen is the founder of Ledger Botje and writes about AI, MCP and Exact Online. He helps businesses manage their administration smarter with AI assistants.

Ready to use AI with Exact Online?

Try Ledger Botje for free and discover how AI simplifies your daily work.

Try free