Back to Blog

Reconciliation Beyond Spreadsheet Macros

Operations analyst at a workstation with multiple spreadsheet windows

I am not going to argue that spreadsheet macros are bad. For a significant portion of the reconciliation work that operations teams do, a well-written macro in Excel or Google Apps Script is genuinely the right tool. It is accessible, it runs where the data already lives, and the analyst who maintains it does not need to involve IT. For teams doing low-volume, single-source reconciliation with predictable data formats, macros have served the function adequately for two decades.

The problem is that the reconciliation problems most operations teams face in 2025 have grown in ways that macros were not designed to handle. The data is coming from more sources. The exception logic has accumulated complexity over time. The downstream routing of results crosses system boundaries that a spreadsheet cannot bridge. And the auditability requirements have increased as organizations have gotten more serious about demonstrating process controls. Macros do not fail at these problems all at once. They fail incrementally, in ways that are hard to diagnose, until the accumulated fragility tips into a visible crisis.

How macros accumulate fragility

The lifecycle of a reconciliation macro follows a predictable pattern. The first version is written by whoever understood the problem best at the time, typically an analyst with enough technical ability to learn VBA or Apps Script. It works well for the original use case. Then the business changes: a new data source is added, a new exception category is introduced, a new routing requirement is added for a specific vendor category. Each change adds a code block or a new sheet to the workbook. The original developer may or may not still be around to add these blocks correctly.

After two or three years of this, the macro is doing something that the person running it cannot fully describe. They can run it and check the output. They cannot confidently say what it does with an invoice that has a particular combination of characteristics. The exceptions that fall out of the process are a mixture of genuine exceptions and cases where the macro's logic no longer matches the current business rules, but no one has investigated which is which.

This is not a criticism of the people who built or maintained the macro. It is a description of what happens when a system that was designed as a single-function calculation tool gets used as a multi-step process automation platform over multiple years of business change. The fragility is structural, not the result of poor craftsmanship.

What multi-source reconciliation actually requires

A modern reconciliation workflow for a mid-market operations team typically involves two to four source systems, not one. An AP reconciliation might pull from an ERP for the PO and payment records, from a vendor portal for invoice submission, from a bank feed for actual payments, and from an internal tracking sheet for any manual adjustments. Reconciling across these four sources requires joining records by vendor ID and invoice number across formats that were not designed to be joined, handling cases where records exist in some sources but not others, and applying matching rules that differ by vendor category.

A spreadsheet macro can handle some of this. It can download CSVs from each source and do the join logic. But the download steps are typically manual, the format normalization is fragile if any source changes its export format, and the cross-system status update at the end, marking invoices as reconciled in the AP system, requires either manual re-entry or an API integration that most macros do not have.

The bigger structural problem is that spreadsheets do not have a concept of a run. When you execute a macro, it modifies the workbook in place. If the macro runs partially and then fails, you may have a workbook in an intermediate state that does not accurately reflect either the original data or the processed output. There is no rollback. There is no log of what the macro did before it failed. The recovery process is to restart from the original data and run it again, which means you need to have kept the original data, which many teams do not do systematically.

The specific problems that agents solve

An agent-based reconciliation workflow addresses the structural problems of the macro model in several ways. First, the data fetch is integrated into the workflow. The agent connects to each source system directly, pulls the data on schedule, and handles format normalization as part of the fetch step rather than as a fragile pre-processing step that someone has to remember to run first. If a source system is unavailable or returns malformed data, the agent logs the failure and surfaces it immediately rather than silently producing incorrect output.

Second, the workflow has a concept of a run. Each execution is a discrete event with a start, a set of steps, and an end state. If a step fails, the run does not continue to subsequent steps and produce partial outputs. The run is logged in its entirety, including the failure, which makes it possible to diagnose what went wrong and re-run from the correct point without corrupting the intermediate state.

Third, the exception routing is built into the workflow, not tacked on afterward. In the macro model, exceptions that fall out of the reconciliation process have to be communicated to the relevant people through a separate channel, typically email or a Slack message that someone writes manually based on the exception list. In an agent model, the exception routing is a step in the workflow: the agent produces the exception records with context and routes them to the correct person or queue automatically. The exception is not lost or delayed because someone forgot to send the email.

What to preserve from the macro model

Two things about the macro model are genuinely good and worth preserving in any replacement. The first is ownership: the operations team built the macro, the operations team understands it, and the operations team can change it when the business rules change without waiting for IT. Any replacement for the macro model needs to maintain this ownership by making the workflow logic transparent and modifiable by the people who understand the business, not just the people who built the automation platform.

The second thing worth preserving is the audit trail that a well-maintained workbook provides: version history, formula inspection, and the ability to trace any output value back to its source. This is not a feature of most macro implementations, but it should be a design requirement for any replacement. If the people running the reconciliation process cannot understand why a specific record was classified the way it was, the system is not more trustworthy than the macro it replaced. It is just more opaque.

These two requirements, user ownership and audit transparency, are the criteria by which to evaluate any automation platform as a reconciliation tool. A platform that requires IT involvement to change business rules or that produces outputs without explaining how it produced them has failed on the criteria that matter most, regardless of how accurately it runs the happy path.

A transition strategy

The practical transition from macro-based reconciliation to agent-based reconciliation does not require throwing out the macro immediately. The right starting point is to run the agent workflow in parallel with the macro for one or two cycles, comparing the outputs and investigating any differences. Differences can come from legitimate differences in how the two systems apply the matching rules, or from bugs in the agent workflow, or from bugs in the macro that were not previously visible because there was nothing to compare against. All three outcomes are useful information.

After the parallel run confirms that the agent workflow produces consistent results with the macro, the macro can be retired. The transition is low-risk because the comparison period catches problems before they matter, and the macro serves as a known-good baseline rather than a competing system. This approach also builds confidence within the operations team that the new system is working correctly, which is essential for the team to actually trust the automated outputs when the manual process is gone.

Ready to automate your back-office workflows?

Start a free pilot and see every step in the run log. No setup fee, no code required.

Start Free Pilot