KT Sparks

Accounting practice · Bulgaria · 10-15 people, bookkeeping for 100+ client companies

Bank Statements That Reconcile and Post Themselves

Manual, line-by-line month-end reconciliation leads to payments booked twice and invoices that stay open for weeks after the money arrives. Today roughly 90% of bank transactions are matched and posted automatically, and the accountants handle only the lines that call for judgement.

Bank Statements That Reconcile and Post Themselves
Industry
Accounting & Bookkeeping
Function
Finance & Accounting
Region
Bulgaria
Duration
6 weeks
Team
3 people

Results

~90%
of transactions reconciled and posted automatically
The remainder are bank lines without a usable description.
5
statement formats from Bulgarian banks
Adding a bank is a template job. The most recent took about four hours.
0
double-registered payments
Already settled documents are caught before posting.

01

The challenge

The client is an accounting and financial-management practice in Bulgaria. Its team of 10-15 keeps the books for over 100 client companies, all of them in Microinvest.

Bank statements were processed by hand, one line at a time. For each movement someone had to locate the invoice it paid, confirm that invoice was still open, work out who the counterparty was and choose the accounts to post to. That happened for every account of every company, every month. Salary runs, cash taken out at ATMs, bank charges and payments to the budget each had rules of their own.

The real cost

  • Duplicates and items that should be closed. When a payment is booked twice or a settled invoice stays open, the client's books are wrong, and nobody notices until late.
  • Expert hours on predictable lines. Most lines follow a pattern, but every one got the attention of a qualified accountant.
  • A delay at the very last step. Reconciliation comes right before the close, so whenever it slips, the whole close slips with it.

02

What we did

We delivered an unattended reconciliation robot running on self-hosted n8n. It writes its postings directly into the accounting system.

Statements from any bank

Each bank's statement format has its own structured connector. Five Bulgarian banks are covered today. Adding a bank means adding a template, not rewriting code, and the most recent one took roughly four hours. Before any posting happens, the structure and key fields are checked. Anything our robot for downloading statements fetches and files goes straight into the queue.

Matching only against open items

The robot pulls the open invoices from Microinvest and checks each statement line against that list. It recognises documents that are already settled, so no payment gets booked twice. When a line matches, the invoice is closed using the statement data.

A rulebook the accountants control

How each movement is posted is decided by an Excel rulebook: keywords from the payment description, income or expense, IBAN, and the debit and credit accounts. n8n runs those rules.

Type of movementHow it is handled
Invoice paymentsMatched to the open invoice, which is then closed
SalariesDedicated rule set
ATM withdrawalsDedicated rule set
Bank feesDedicated rule set
Budget and tax paymentsDedicated rule set
Related-party paymentsDedicated rule set

Postings that look like manual work

  • Finding the counterparty. If a counterparty does not exist in the accounting system yet, the robot looks it up in the Bulgarian Commercial Register and creates it with its default accounts.
  • Writing straight to the books. Matched payments go into each company's own Microinvest database through a secure VPN. We modelled the database operations on entries keyed in by hand on the application's own screens. As a result, the outcome matches manual entry exactly.

Exceptions that make it smarter

We separate business exceptions (a rule is missing, a company cannot be matched) from system exceptions (a referenced document cannot be found, or has already been paid). Company names often differ: Latin script on the statement, Cyrillic in the accounting system. In that case the robot sends a confirmation form and stores the reply, and the match holds from then on.

Reports and safeguards

  • Each statement gets its own line-by-line Excel report: IBAN and currency, type of operation, counterparty and account, amount and its euro value, document number, dates, description, closing balance after the operation, execution ID and status. The report is saved to SharePoint and emailed to the team.
  • Lines are logged as they are processed, so a run that stops halfway can be restarted without creating duplicates.
  • Statement files sit on the automation server only while they are processed and are removed straight afterwards. Access to the server requires 2FA.

Stack

LayerTools
OrchestrationSelf-hosted n8n with a JavaScript rules engine
Reading statementsIn-house connectors for 5 Bulgarian banks
AccountingMicroinvest Delta Pro through our MSSQL connector over OpenVPN
Data enrichmentBulgarian Commercial Register lookup
ReportingExcel, email, Microsoft SharePoint, Microsoft Graph API

03

The outcome

BeforeAfter
Lines posted manuallyEvery lineRoughly 10%
Double paymentsSpotted late, or neverBlocked before posting
Audit trailWhatever the accountant rememberedEach posted line linked to statement, execution and rule
Unrecognised counterparty namesA question every timeOne question, answer kept permanently
  • Roughly 90% of transactions are reconciled and posted with no accountant involved.
  • Most of the other 10% are lines that came from the bank without a usable description. The team gets them as a short exception list, not a whole statement to work through.
  • Each posted line can be traced to the statement it came from, the execution that handled it and the rule that mapped it.
  • Name mismatches resolve over time: each completed form is saved, so the same question never comes back.
  • This is robot number three in a programme. The Microinvest connector and the Commercial Register lookup it uses were first built for invoice processing.
Three robots at one accounting firm: statements download, invoices post, payments reconcile, and nobody retypes a thing.

Where it usually goes wrong

Over time clients introduce new kinds of payments, and the rules stop fitting. If nobody owns the rulebook, the match rate slides without anyone noticing. What keeps it at 90% is that the rules live in a workbook the accountants maintain themselves.