<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Boris Korol</title>
    <description>The latest articles on DEV Community by Boris Korol (@boris_korol_7e8fc49c1d361).</description>
    <link>https://dev.to/boris_korol_7e8fc49c1d361</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3998243%2Fdfb08daf-a12d-4c21-bf1c-8feca6b2812b.png</url>
      <title>DEV Community: Boris Korol</title>
      <link>https://dev.to/boris_korol_7e8fc49c1d361</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/boris_korol_7e8fc49c1d361"/>
    <language>en</language>
    <item>
      <title>18,000 Unreconciled Transactions, Three Years of Backlog. Here's How AI Cleared It in 3 days</title>
      <dc:creator>Boris Korol</dc:creator>
      <pubDate>Tue, 23 Jun 2026 10:47:16 +0000</pubDate>
      <link>https://dev.to/boris_korol_7e8fc49c1d361/18000-unreconciled-transactions-three-years-of-backlog-heres-how-ai-cleared-it-in-3-days-31ji</link>
      <guid>https://dev.to/boris_korol_7e8fc49c1d361/18000-unreconciled-transactions-three-years-of-backlog-heres-how-ai-cleared-it-in-3-days-31ji</guid>
      <description>&lt;p&gt;&lt;em&gt;Published June 2026 · Boris Korol, &lt;a href="https://ai-automation.studio" rel="noopener noreferrer"&gt;AI Automation Studio&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A company came to us with 18,000 transactions that had not been reconciled since 2022. Three years of backlog, spread across several bank accounts. Transactions recorded in their banking app had never been matched to their internal accounting system. We built a four-layer AI matching pipeline. 3 days from receiving the first file to final output, only 100 transactions remained for a human accountant to review.&lt;/p&gt;

&lt;p&gt;This article explains exactly how we approached it, where standard matching broke down, and what it took to close the gap.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Scale of the Problem
&lt;/h2&gt;

&lt;p&gt;The company had two systems that had drifted apart over three years.&lt;/p&gt;

&lt;p&gt;Their banking app held the authoritative record of every payment made and received. Their internal accounting system held a parallel set of manually entered records, typed in by staff after each transaction. The intention was for the two to match. In practice, by the time we were brought in, 18,000 entries across multiple bank accounts had no confirmed match between the two systems.&lt;/p&gt;

&lt;p&gt;This is not a rare situation. Manual double-entry creates drift. Staff change. Processes slip. The problem compounds silently until someone needs to produce audited accounts and the reconciliation has to happen all at once.&lt;/p&gt;

&lt;p&gt;Three years of backlog at 18,000 transactions is a large but not extreme example of what happens when reconciliation is deferred. The &lt;a href="https://www.icaew.com" rel="noopener noreferrer"&gt;ICAEW&lt;/a&gt; requires member firms to maintain accurate and complete accounting records — a deferred reconciliation backlog of this scale puts that obligation at risk.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Simple Matching Was Not Enough
&lt;/h2&gt;

&lt;p&gt;The obvious first step is exact matching: find every transaction where the date and amount in the banking system match the date and amount in the internal system. This works well for straightforward cases and eliminates the bulk of the volume.&lt;/p&gt;

&lt;p&gt;After running exact matching across all 18,000 transactions, we were left with approximately 3,000 unmatched records.&lt;/p&gt;

&lt;p&gt;Three thousand unmatched transactions from 18,000 is a significant problem. Those 3,000 represent the cases where the data does not align cleanly, and each one could indicate an error, a duplicate, a misposting, or a legitimate discrepancy.&lt;/p&gt;

&lt;p&gt;Standard reconciliation tooling stops here and hands everything to a human reviewer. We did not.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Four-Layer Approach
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Exact match&lt;/td&gt;
&lt;td&gt;Date + amount&lt;/td&gt;
&lt;td&gt;Confirmed matches; ~3,000 unresolved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Grouped match&lt;/td&gt;
&lt;td&gt;Amount sets across systems&lt;/td&gt;
&lt;td&gt;Many-to-one and one-to-many resolved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Recipient analysis&lt;/td&gt;
&lt;td&gt;Sender/recipient name fields&lt;/td&gt;
&lt;td&gt;Mismatched-name transactions flagged&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;AI web search&lt;/td&gt;
&lt;td&gt;~800 flagged transactions&lt;/td&gt;
&lt;td&gt;~100 genuine discrepancies identified&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Layer 1: Exact one-to-one matching
&lt;/h3&gt;

&lt;p&gt;Date and amount match exactly across both systems. This cleared the majority of transactions and confirmed which records were straightforwardly aligned. Output: a set of confirmed matches and a set of unresolved records.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 2: Approximate and grouped matching
&lt;/h3&gt;

&lt;p&gt;Not every transaction maps to a single counterpart. Salary payments, for example, may appear as one transaction in the banking system and as several component entries in the internal system. We built a matching step that compared each record in one system against sets of records in the other, looking for groupings where the combined amounts aligned within a defined threshold.&lt;/p&gt;

&lt;p&gt;This layer reduced the unresolved set further by identifying many-to-one and one-to-many relationships that exact matching cannot detect.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 3: Recipient and sender analysis
&lt;/h3&gt;

&lt;p&gt;With the remaining unmatched transactions, we ran a comparison of the named sender and recipient fields. The financial team had already flagged that some transactions had been sent to the wrong entity or recorded incorrectly, and that the banking record was the source of truth.&lt;/p&gt;

&lt;p&gt;We flagged every case where the sender or recipient name in one system did not match the corresponding name in the other.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 4: AI web search for company identity
&lt;/h3&gt;

&lt;p&gt;This is where the problem became genuinely interesting.&lt;/p&gt;

&lt;p&gt;Approximately 800 transactions remained where the names in the two systems appeared to differ but might still represent the same counterparty. The question was whether a name discrepancy was a data error or a legitimate difference in how the same company was recorded.&lt;/p&gt;

&lt;p&gt;We built an AI agent that ran a web search for each of the 800 transactions. The agent searched for both names and attempted to determine whether they referred to the same legal entity.&lt;/p&gt;

&lt;p&gt;In one example: the banking system recorded a payment to East Eagle Ltd. The internal system recorded the same transaction as South East London Ltd. To a human reviewer scanning rows in a spreadsheet, these look like two different companies. They are the same nightclub. East Eagle is the trading name; South East London Ltd is the registered legal entity — a distinction verifiable via the &lt;a href="https://find-and-update.company-information.service.gov.uk" rel="noopener noreferrer"&gt;Companies House register&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The AI found approximately 100 more cases of this pattern. A trading name in one system, a legal entity name in the other. Same company, different label, recorded inconsistently across three years.&lt;/p&gt;




&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;Starting position: 18,000 transactions with no confirmed reconciliation status.&lt;/p&gt;

&lt;p&gt;After running all four layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Confirmed matches&lt;/strong&gt; covered the vast majority of the 18,000 transactions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100 transactions&lt;/strong&gt; remained unresolved and required human accountant review&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total time from file receipt to output: 3 days&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;The agent now understands the matching logic and the company-name disambiguation approach. A follow-on batch of similar volume would take a few hours rather than 57&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reduction from 18,000 unknown-status transactions to 100 items for human review meant the accountants could do their work in a fraction of the time originally projected. They received a prioritised list rather than a raw data problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Pattern Looks Like in Other Engagements
&lt;/h2&gt;

&lt;p&gt;Transaction reconciliation backlogs are not unique to the type of company described above. The same pattern appears in any organisation running parallel record-keeping across systems that were never fully integrated.&lt;/p&gt;

&lt;p&gt;The specific technical approach will differ depending on the systems involved, the volume of transactions, and the nature of the discrepancies. But the four-layer structure, moving from exact matching through grouped matching, recipient analysis, and identity disambiguation, transfers across most reconciliation problems we encounter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ai-automation.studio" rel="noopener noreferrer"&gt;AI Automation Studio&lt;/a&gt; builds these pipelines for accountancy practices, audit firms, and finance teams dealing with reconciliation backlogs or ongoing reconciliation inefficiencies. Each engagement starts with a 30-minute scoping call to understand the data sources, systems, and volume involved before any build begins.&lt;/p&gt;




&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;How did you access the data from both systems?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The client provided exports from both systems in structured formats. We did not require direct system access or integration during the reconciliation phase. The AI agent worked from the exported files. Data is processed and stored within the client's jurisdiction — UK or EU — in compliance with UK GDPR and data residency requirements. For ongoing automation rather than a one-off project, we build live connections between the systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens to the 100 transactions that needed human review?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Those records were delivered to the client's accountants with the full context for each: what matched, what did not, and the closest candidate match found. The accountants made the final determination on each one. The AI did not make decisions about transactions it could not confidently match.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can this work if one of the systems is not a standard accounting package?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. The approach works on any structured data export. We have run similar pipelines against bespoke internal systems, legacy databases, and ERP exports. The matching logic is built around the data structure of the specific files provided, not around a fixed integration with a named software platform.&lt;/p&gt;




&lt;h2&gt;
  
  
  Book a 20-Minute Automation Snapshot
&lt;/h2&gt;

&lt;p&gt;If your organisation has a reconciliation backlog, or if your team is spending significant time on transaction matching that should be automated, a short conversation is usually enough to establish what is possible.&lt;/p&gt;

&lt;p&gt;Book a 20-minute Automation Snapshot with AI Automation Studio: &lt;a href="http://ai-automation.studio/call" rel="noopener noreferrer"&gt;http://ai-automation.studio/call&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No pitch. No obligation. We look at the data sources and the volume, and give you a realistic picture of what an automated approach would involve.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Boris Korol is the founder of &lt;a href="https://ai-automation.studio" rel="noopener noreferrer"&gt;AI Automation Studio&lt;/a&gt;, a London-based automation consultancy working with accountancy practices, audit firms, and finance teams on transaction reconciliation, workflow automation, and AI agent development. Connect on &lt;a href="https://linkedin.com/in/boris-korol" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>accountancy</category>
      <category>ai</category>
      <category>fintech</category>
    </item>
    <item>
      <title>We Reconciled 80,000 Bank Records Overnight. Here's the Exact Workflow.</title>
      <dc:creator>Boris Korol</dc:creator>
      <pubDate>Tue, 23 Jun 2026 10:45:56 +0000</pubDate>
      <link>https://dev.to/boris_korol_7e8fc49c1d361/we-reconciled-80000-bank-records-overnight-heres-the-exact-workflow-56c7</link>
      <guid>https://dev.to/boris_korol_7e8fc49c1d361/we-reconciled-80000-bank-records-overnight-heres-the-exact-workflow-56c7</guid>
      <description>&lt;p&gt;&lt;em&gt;Published June 2026 · Boris Korol, AI Automation Studio&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A UK accountancy practice needed to reconcile more than 80,000 bank records every month. The manual process took two full working days. We built an automation using Make.com and the Xero API. It now runs overnight.&lt;/p&gt;

&lt;p&gt;This article explains exactly how the workflow is structured, what each component does, and what a practice needs to replicate it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Manual Bank Reconciliation
&lt;/h2&gt;

&lt;p&gt;Bank reconciliation is one of the most time-consuming tasks in accountancy. For practices handling multiple clients, the volume multiplies fast.&lt;/p&gt;

&lt;p&gt;The firm we worked with had a specific challenge: a high volume of transactions across multiple accounts, all needing to be matched, categorised, and reconciled against bank statements before month-end reporting.&lt;/p&gt;

&lt;p&gt;Their team was spending two full working days per month on this task. That is roughly 16 hours of skilled staff time on work that is repetitive, rule-based, and automatable.&lt;/p&gt;

&lt;p&gt;Manual reconciliation carries real risk beyond the time cost. Tired staff miss mismatches. Small errors compound. The closer you are to a deadline, the less time there is to investigate discrepancies. In a practice billing by the hour, that time is either absorbed as overhead or passed to clients who are increasingly resistant to paying for it.&lt;/p&gt;

&lt;p&gt;For UK accountancy practices, this is not a niche problem. &lt;a href="https://www.gov.uk/guidance/find-software-thats-compatible-with-making-tax-digital-for-vat" rel="noopener noreferrer"&gt;Making Tax Digital (MTD)&lt;/a&gt; is adding pressure to keep records cleaner and more current. Clients expect faster turnaround. Margins are tighter. The case for bank reconciliation automation in the UK is straightforward: this is skilled work being consumed by a task that software can handle.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Workflow: Make.com + Xero API + Google Sheets
&lt;/h2&gt;

&lt;p&gt;The automation runs across three tools: &lt;a href="https://www.make.com" rel="noopener noreferrer"&gt;Make.com&lt;/a&gt; (formerly Integromat), the &lt;a href="https://developer.xero.com/documentation/api/accounting/overview" rel="noopener noreferrer"&gt;Xero API&lt;/a&gt;, and Google Sheets. No custom code. No enterprise software. The complete build took under two weeks.&lt;/p&gt;

&lt;p&gt;Here is the workflow, step by step.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Pull unreconciled transactions from Xero
&lt;/h3&gt;

&lt;p&gt;Make.com connects to the Xero API using OAuth 2.0. A scheduled scenario runs nightly and pulls all new bank transactions from the client's connected accounts.&lt;/p&gt;

&lt;p&gt;The Xero Bank Transactions endpoint returns each transaction with its date, amount, payee, reference, and status. We filter for records with a status of &lt;code&gt;UNRECONCILED&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This step replaces the manual export from Xero that the team was running each morning before they could begin any matching work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Match transactions against the bank statement feed
&lt;/h3&gt;

&lt;p&gt;Xero's bank feed pulls statements from the client's bank directly. The API exposes these via the Bank Statement endpoint.&lt;/p&gt;

&lt;p&gt;Make.com iterates over each unreconciled transaction and attempts to match it against open statement lines using three criteria: amount (exact match), date (within a three-day window), and payee reference (fuzzy match using a text comparison module).&lt;/p&gt;

&lt;p&gt;Transactions that meet all three criteria are flagged as high-confidence matches. Those that meet only one or two are flagged for human review.&lt;/p&gt;

&lt;p&gt;The first version of the workflow used only amount and date matching. That produced a 60 per cent auto-reconciliation rate. Adding the fuzzy payee reference check pushed this to 85 per cent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Auto-reconcile confirmed matches in Xero
&lt;/h3&gt;

&lt;p&gt;For transactions matched with high confidence, Make.com calls the Xero API to reconcile them automatically. This uses the &lt;code&gt;PUT BankTransactions&lt;/code&gt; endpoint with &lt;code&gt;IsReconciled&lt;/code&gt; set to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This step is where the volume is handled. For this client, approximately 85 per cent of transactions met the auto-reconcile threshold. That is around 68,000 records out of 80,000 processed without any human intervention in a single overnight run.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Route exceptions to a Google Sheet for review
&lt;/h3&gt;

&lt;p&gt;Transactions that do not meet the matching threshold are written to a Google Sheet. Each row includes the transaction details, the closest match found, and the reason it was flagged: amount discrepancy, date gap, or missing payee reference.&lt;/p&gt;

&lt;p&gt;A member of staff reviews this sheet each morning. Instead of working through 80,000 records manually, they are looking at an exceptions list already sorted by confidence score.&lt;/p&gt;

&lt;p&gt;The daily review dropped from two full days to a few hours.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Log, summarise, and alert
&lt;/h3&gt;

&lt;p&gt;Each nightly run writes a summary to a second Google Sheet: total transactions processed, number auto-reconciled, number flagged for review, and any API errors.&lt;/p&gt;

&lt;p&gt;A Make.com email module sends this summary to the practice manager each morning before they start work. If the API returns an error or the match rate drops below a configured threshold, an alert fires to a Slack channel. The team knows immediately if something needs attention, without checking a dashboard.&lt;/p&gt;




&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;After the first full month of operation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;80,000+ bank records&lt;/strong&gt; processed in a single overnight run&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;85 per cent&lt;/strong&gt; auto-reconciled without human review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two days&lt;/strong&gt; of manual work reduced to a morning exceptions review&lt;/li&gt;
&lt;li&gt;Zero reconciliation errors attributed to the automation across the first three months of production use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The practice did not change their Xero setup, switch accounting software, or hire additional staff. The automation sits on top of the systems they already use.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Means for Your Practice
&lt;/h2&gt;

&lt;p&gt;Not every practice has 80,000 records a month. The workflow scales down without any structural change.&lt;/p&gt;

&lt;p&gt;If your team is spending more than half a day a month on bank reconciliation, the pattern above applies. The specific triggers, matching rules, and thresholds are configured for your transaction volume and bank feed setup, but the architecture is the same.&lt;/p&gt;

&lt;p&gt;The tools are the same: Xero API, Make.com, and a spreadsheet for exceptions. A practice that already uses Xero and Google Workspace has everything needed to run this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ai-automation.studio" rel="noopener noreferrer"&gt;AI Automation Studio&lt;/a&gt; works with UK accountancy and audit practices on this type of workflow. Bank reconciliation is one of three core automations we build alongside MTD compliance processes and payroll bureau workflows. The approach is always the same: one workflow at a time, with measurable output before expanding scope.&lt;/p&gt;




&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does this work with all UK banks connected to Xero?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It works with any bank that provides a live feed to Xero. That covers most major UK business banks including Barclays, HSBC, Lloyds, NatWest, and Starling. If the client's bank provides a statement feed in Xero, the automation can process those transactions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens if the Xero API goes down or changes?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Make.com handles API failures by retrying failed operations and logging errors. The nightly run flags any API issues in the morning summary email and fires a Slack alert if configured. The practice can reconcile manually in Xero exactly as before. The automation is additive: it does not replace the underlying Xero workflow, it runs on top of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where is client financial data stored?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Google Sheet is owned by the practice and sits within their own Google Workspace. Make.com does not store transaction data beyond the duration of the scenario run. The Xero connection uses OAuth 2.0, so no credentials are held in the automation. All data stays within systems the practice already controls and is responsible for.&lt;/p&gt;




&lt;h2&gt;
  
  
  Book a 20-Minute Automation Snapshot
&lt;/h2&gt;

&lt;p&gt;If your team is still reconciling bank records manually, a short conversation is usually enough to establish whether automation is the right fit and what the build would involve.&lt;/p&gt;

&lt;p&gt;Book a 20-minute Automation Snapshot with AI Automation Studio: &lt;a href="https://ai-automation.studio/call" rel="noopener noreferrer"&gt;https://ai-automation.studio/call&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No pitch. No obligation. We look at one workflow, identify the opportunity, and give you a clear picture of what it would take to build it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Boris Korol is the founder of &lt;a href="https://ai-automation.studio" rel="noopener noreferrer"&gt;AI Automation Studio&lt;/a&gt;, a London-based automation consultancy for UK accountancy and audit practices, specialising in bank reconciliation, MTD workflows, and payroll bureau automation. Connect on &lt;a href="https://linkedin.com/in/boris-korol" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>accountancy</category>
      <category>fintech</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
