The finance team closes the month and the revenue figure in the billing system does not match what is sitting in the general ledger. Nobody moved any money. Somewhere between the two systems, a handful of records fell out of step: a refund posted twice, a customer merged into the wrong account, a batch job that ran an hour late. Multiply that gap across every system feeding your reports and you get a familiar problem: the numbers technically exist, but nobody fully trusts them.
Data reconciliation is the process of comparing data held in two or more systems, or between a system and its source, to confirm the figures agree and to investigate any that do not. It is the check that stops small extraction, timing, or transformation errors from turning into wrong reports.
Why two systems rarely agree
Every system that touches the same data can drift from every other one, and the drift is rarely dramatic. A CRM and a billing platform might both claim to hold revenue, but one counts a deal the moment it is signed and the other only once payment clears. A batch load that runs at midnight in one system and at 2am in another means a report pulled at 9am is comparing different points in time. None of this is a bug. It is what happens when the same real-world fact gets captured, transformed, and stored in more than one place.
Add in duplicate records, a customer merged under two account IDs, a currency conversion applied twice, or a rounding rule that differs between a source system and a data warehouse, and small gaps compound into numbers that genuinely disagree. Schema changes add another layer: a source field gets renamed or resized upstream, a pipeline keeps mapping it the old way, and the two totals quietly part company without anyone touching the underlying business. The longer a mismatch goes unnoticed, the more decisions get made on top of it.
The reconciliation process, step by step
A reconciliation exercise starts by agreeing which system, if any, is the source of truth for a given figure, because without that anchor every disagreement becomes a debate rather than a fix. From there, the data from each system is extracted and aligned to the same grain, same currency, same time window, so you are comparing like with like rather than a daily total against a weekly one.
The comparison itself matches records or totals between the sources, usually by a common key such as an order ID, account number, or transaction reference, and flags anything that does not tie out. Most of the effort, and most of the value, sits in what happens next: investigating each exception to find out whether it is a timing difference, a genuine error, or a gap in the mapping between systems.
The last step is resolving the discrepancy and recording why it happened, not just that it did. A reconciliation that fixes the number but throws away the explanation guarantees the same investigation happens again next month.
Financial, ETL and clinical reconciliation are the same idea in different clothes
The mechanics stay consistent, but the stakes and the vocabulary change by domain. Financial reconciliation checks that the numbers in a ledger, a bank statement, or a billing system agree with each other, and it is usually mandated by audit and regulatory requirements rather than optional housekeeping. Get it wrong and the exposure is compliance risk and restated accounts, not just an ugly dashboard.
In ETL, reconciliation means checking that a record count, sum, or checksum from the source matches what landed in the target after extraction, transformation, and load, so a pipeline that silently drops rows or double-counts a join gets caught before anyone downstream trusts the output. In clinical data management, reconciliation compares data captured in different systems, such as a clinical database against lab results or safety reports, to confirm a patient's records agree across every source before the data is locked for analysis. Different industry, same underlying question: do these two records of the same thing actually match?
Automating reconciliation without losing the judgement calls
Manual reconciliation in spreadsheets works for a handful of accounts and stops working the moment volume or system count grows, because someone has to open every source, copy every total, and remember to do it again next period. The first step towards automating it is usually a set of SQL queries that compare record counts, sums, and key fields between source and target on a schedule, flagging anything outside an agreed tolerance rather than requiring an exact match down to the penny.
Dedicated data reconciliation software and tools take this further by handling the matching logic, tolerance rules, and exception queues automatically, so a person only looks at what genuinely needs a decision rather than re-checking rows that were always going to match. The judgement calls, deciding what counts as a real discrepancy versus acceptable rounding, still belong to a person; automation should surface the exceptions faster, not remove the need to understand them.
Mapping the process flow before you automate anything
A reconciliation process flow is worth drawing out before any tool gets bought, because most failures come from skipping a step rather than from picking the wrong software. A typical flow runs: extract from each source, transform both datasets into a common structure, match on the agreed key, categorise every result as matched, missing, or mismatched, and route the mismatches to whoever owns that data for investigation.
Drawing the flow out also exposes gaps early, such as a source that only refreshes weekly being compared against one that updates in real time, or a step where nobody has actually agreed what counts as close enough for a rounding difference. Fixing that on a whiteboard is far cheaper than discovering it three months into a live reconciliation job that keeps generating exceptions nobody can explain.
Where reconciliation sits in a data pipeline
Reconciliation works best when it is built into the pipeline rather than bolted on after a report goes wrong. Checks placed at ingestion catch a source system sending fewer rows than expected. Checks placed after each transformation catch a join or aggregation that quietly changes a total. Checks placed before data reaches a dashboard or a finance system catch everything upstream that slipped through.
That layered approach means a mismatch gets caught close to where it happened, rather than surfacing three steps downstream when a report is already in front of a client. It also means reconciliation stops being a monthly fire drill and becomes a standing property of the pipeline, something that runs every time data moves rather than something a team remembers to do under pressure. In a bronze, silver, gold style architecture, that usually means a lightweight count-and-checksum check between bronze and silver, and a fuller reconciliation of business totals between silver and gold, so the depth of the check matches how much a stage's output actually gets relied on.
Who is responsible for reconciliation
In many organisations reconciliation still sits with a named analyst, whose job is essentially to sit between two or more systems and confirm they agree, chasing down exceptions and keeping a record of what was fixed and why. That role matters, but it works best when it is backed by a pipeline that does the mechanical comparison automatically, leaving the analyst to focus on the exceptions that actually need a decision.
Where reconciliation has no clear owner, it tends to happen only when something breaks, which is the most expensive time to discover a mismatch. Naming who owns each reconciliation check, and what happens when it fails, is a small governance step that saves a lot of after-the-fact investigation.
Building reconciliation in from the start
Reconciliation is far cheaper when it is designed into a pipeline from day one than when it is added after several years of systems drifting apart quietly. That means agreeing sources of truth before building the pipeline, instrumenting checks at each stage of transformation, and setting tolerances that reflect what actually matters to the business rather than demanding perfect matches everywhere.
We build data pipelines with reconciliation as a standing part of the architecture rather than an afterthought, because a report is only as reliable as the checks sitting behind it. If your teams are still resolving mismatches by hand every month, that is usually a sign the pipeline needs a trustworthy data foundation, not another spreadsheet.
Frequently asked questions
What is data reconciliation?
Data reconciliation is the process of comparing data held in different systems, or between a system and its original source, to confirm the figures match and to investigate any that do not. It is the routine check that catches extraction errors, timing differences, and transformation mistakes before they reach a report or a decision.
How do you do data reconciliation?
Start by agreeing which system is the source of truth, then extract and align the data to the same grain and time period so you are comparing like with like. Match records by a shared key, such as an account number or transaction ID, flag anything that does not tie out, and investigate each exception rather than just adjusting the total to make it fit.
What is data reconciliation in ETL?
In an ETL pipeline, reconciliation means checking that a record count, sum, or checksum from the source system matches what actually landed in the target after extraction, transformation, and load. It catches silent failures, such as a join that drops rows or a transformation that double-counts a value, before anyone downstream builds a report on the wrong number.
What is financial data reconciliation?
Financial data reconciliation compares figures across ledgers, bank statements, billing systems, or accounting platforms to confirm they agree, and it is usually a compliance requirement rather than optional housekeeping. A mismatch here carries more weight than in most other domains, because it can mean restated accounts or an audit finding rather than just an ugly dashboard.
How do you reconcile data between two systems?
Reconciling data between two systems means aligning them to the same time window and level of detail, matching records on a common key, and comparing totals or individual rows for differences. Any gap gets investigated to work out whether it is a timing difference, a mapping error, or a genuine discrepancy, and the fix, along with the reason for it, gets documented so the same check does not need redoing from scratch next time.
Want a straight view of where AI can help your business first? Talk to us and start with a clear picture instead of a vendor demo.