Evaluate · testing with planted errors

Data reconciliation testing: plant known breaks, count what comes back

Data reconciliation testing proves that a reconciliation finds the errors it is meant to find and stays quiet about the differences that are legitimate. The reliable method is to plant known misreports in a quarter that has already been filed, run the control, and count both the catches and the false alarms; this guide builds that test for cross-report rules and for the agents in Regulatory Reporting Reconciliation.

Updated · 13 min read

Data reconciliation testing checks that a reconciliation catches real differences and does not flag legitimate ones. For regulatory reports, where the general ledger, the Call Report, the FR Y-9C, the FR 2900 and the FR 2052a all carry the same balances under different rules, the most reliable form is a seeded-error test: take a quarter that has already been filed and reconciled, plant known misclassifications drawn from real misreports, run the cross-report rules and any agents, and count what comes back. A control that reports no breaks on a clean quarter has proved nothing; one that finds nine planted errors out of ten, and raises no false alarm on the legitimate differences, has. Botminds' Regulatory Reporting Reconciliation is built to be tested this way, and it tests its own agents against the last quarter's breaks before any change goes live.

The sample figures on this page come from a fictional bank, about $92 billion in assets, closing its third quarter of 2026 in the solution. The seeds come from public cases and from the agencies' own instructions, linked where they appear.

A seeded-error test in six steps: seed, run, score

  1. A person decides

    Choose a quarter

    Pick a quarter already filed and reconciled, with its legitimate differences documented.

  2. A person decides

    Make two copies

    A clean twin, unchanged, and a seeded copy that will carry the planted errors.

  3. A person decides

    Plant the seeds

    Someone outside the team that wrote the rules plants errors from a catalogue, and keeps the answer key.

  4. Agent

    Run the control

    Run every cross-report rule, and the explaining and tracing, on both copies as on a live night.

    Never: sees the answer key

  5. A person decides

    Score both runs

    Count seeds caught and traced to the right cause, and every flag raised on the clean twin.

  6. A person decides

    Decide

    Fix rules that missed, loosen or tighten tolerances on evidence, and keep the result for audit.

Our method, written for cross-report reconciliation of the Call Report, FR Y-9C, FR 2900 and FR 2052a. In Regulatory Reporting Reconciliation the run is the solution's nightly run on a copy of the quarter; the rest is people's work, independent of the rule authors.

What is reconciliation testing?

Reconciliation testing means two things, and a regulatory reporting team needs both. In data engineering it is the check after a load that counts and sums in the target match the source, often called reconciliation in ETL testing. In internal control it is the test of whether a reconciliation control is designed to catch the errors it exists for, and whether it operated as designed. Cross-report reconciliation sits on top of the first and is the second: it is a control whose inputs are the outputs of many loads.

The supervisory expectation is plain. The OCC's examiner booklet says "The audit function should periodically test internal controls to identify unreliable financial and regulatory reporting" (OCC Comptroller's Handbook, Regulatory Reporting). The Basel Committee's principles for risk data ask for "Integrated procedures for identifying, reporting and explaining data errors or weaknesses in data integrity via exceptions reports" (BCBS 239, paragraph 53). And for insured institutions with $5 billion or more in assets, the independent accountant attests to internal control over financial reporting, which 12 CFR 363.1(c) defines to include "financial statements prepared for regulatory reporting purposes". None of these says how to test a reconciliation; a seeded test is one way to produce the evidence they ask for.

Why a pass on clean data proves little

A reconciliation that finds no breaks has either met clean data or failed to look, and the result alone cannot say which. Three failures produce the same silent pass. A tolerance set wider than the errors it should catch: a rule that accepts $5.0 million of noise on total deposits will never see a $4.2 million misposting. An explanation copied forward from last quarter that now hides a real difference: the sample bank's manual process carried reconciling items forward from a tab without re-deriving them. And a rule that compares the wrong lines, which ties every quarter because both sides are wrong in the same way.

Sampling, the auditor's usual tool, does not catch the first two well. It checks that the reconciliation was performed and signed, and that a sample of reconciling items is supported. It cannot show what a rule would have done with an error that was not there. Planting the error is the only way to see that.

How do you test data reconciliation? Seed, run, score

You test data reconciliation by giving it errors whose answers you already know. Start from a quarter the bank has filed and reconciled, so every legitimate difference is documented. Make an unchanged copy, the clean twin, and a seeded copy. Have someone who did not write the rules plant errors in the seeded copy from a catalogue, and keep the answer key away from the people and agents being tested. Run both copies exactly as on a live night, then score.

The clean twin matters as much as the seeded copy. Every flag it raises is a false alarm, because the clean quarter was filed and reconciled with its differences explained. A control that catches every seed while raising forty false alarms on the twin has shifted the work, not removed it: analysts will learn to ignore its flags, and the forty-first will be real.

Two practical rules make the test honest. Plant some seeds just below and just above each tolerance, so the result shows where the threshold really sits. And plant at least one seed in every report pair and every kind of difference the bank's rules cover, so a pass is not a pass on deposits alone.

Where the seeds come from: what Republic First and others misreported

The best seeds are errors that real banks made and the agencies wrote down. They have the shape real errors have: a balance on the wrong line, a deposit reduced for the wrong reason, a product code mapped to the wrong table. The Federal Reserve's list of legitimate differences between the FR 2900 and the Call Report supplies the other half, the differences a control must not flag.

A seed catalogue: ten planted errors, where each comes from, and the rule that should catch it

SeedDrawn fromRule that should breakWhat a miss means
Secured borrowings reported as unsecured on Schedule RC-ORepublic First Bank, June 2023 Call Report ($664 million)Secured funding against the collateral pledged for itClassification errors pass if only totals are compared
Estimated uninsured deposits reduced for pledged collateralFDIC FIL-37-2023Uninsured estimate against an account-level recalculationThe rule trusts a figure the instructions say is computed differently
Subsidiaries' intercompany deposits left out of Schedule RC-OFDIC FIL-37-2023RC-O deposit totals against balance-sheet deposits plus eliminated subsidiary depositsAn elimination correct on one schedule is copied to one where it is wrong
Mortgage escrow mapped to other liabilities in the FR 2052a runThe sample bank's own break; escrow belongs in Outflows-Deposits (product O.D.7)Total deposits, FR Y-9C against the FR 2052a runMapping changes reach the liquidity report unseen
Savings deposits moved into transaction accounts on the Call ReportFR Y-9C instructions: Regulation D counts savings as transaction accounts; the Call Report does notCall Report transaction accounts against the deposit system's totals by account typeRules that compare sums the error leaves unchanged pass it
Foreign currency included in FR 2900 vault cashFed legitimate differences: the FR 2900 excludes itFR 2900 vault cash against Call Report currency and coin, expecting the foreign currency gapThe rule checks the size of a difference, not that the legitimate one is there
The parent company's deposit not eliminated on the FR Y-9CFR Y-9C rules of consolidationTotal deposits, Call Report against the FR Y-9C, with the elimination re-derived from its journalAn elimination is assumed rather than re-derived
A late general ledger adjustment left out of the Call Report draftCall Report close-of-business rulesGeneral ledger against Call ReportTiming items are accepted without the journal behind them
Loans in a servicing transfer posted to the subledger but not the general ledgerThe sample bank's open breakLoans secured by 1–4 family residential properties, general ledger against Call ReportIn-transit balances look like tolerance noise
A duplicate posting just above, and another just below, the area toleranceConstructed to test the thresholdWhichever rule covers the line: only the larger should breakIf the larger passes, the threshold is not where the settings say it is
Our catalogue. Sources: FDIC OIG EVAL-25-01 (Republic First); FDIC FIL-37-2023; Federal Reserve, Summary of Legitimate Interseries Differences (September 2024); FR Y-9C instructions (effective September 2026); FR 2052a instructions. The sample bank seeds are from the fictional bank in Regulatory Reporting Reconciliation.Source: FDIC OIG, Republic First; FDIC FIL-37-2023; Fed, legitimate differences; FR Y-9C instructions; FR 2052a instructions

Three of the rows deserve a word. Republic First is the plainest case of a single classification error with consequences: FDIC officials told the Inspector General that the cost of the bank's liquidation rose in part because it misreported $664 million of secured borrowings as unsecured on its June 2023 Call Report (FDIC OIG, EVAL-25-01). A reconciliation that only compares total borrowings would pass that quarter.

FIL-37-2023 supplies two seeds from one letter. The FDIC found institutions understating estimated uninsured deposits by netting out collateral, and others leaving subsidiaries' intercompany deposits out of Schedule RC-O even though the instructions require deposits eliminated in consolidation to be included there, and it told those institutions to amend, with up to three years of revisions or more if appropriate (FDIC FIL-37-2023). The second is a perfect test of whether an elimination that is right for the balance sheet is wrongly carried into a schedule where it does not belong.

The savings deposit seed comes from a note in the FR Y-9C instructions: "Deposits defined in Regulation D as transaction accounts include demand deposits, NOW accounts, telephone and preauthorized transfer accounts, and savings deposits. However, for Call Report purposes, savings deposits are classified as a type of nontransaction account" (FR Y-9C instructions). One definition, two treatments, and a feed shared by both reports: an easy error to make and a good one to plant.

How do you measure reconciliation accuracy?

Measure reconciliation accuracy with two numbers at minimum, the share of seeds caught and the number of false alarms on the clean twin, and three more if agents explain and trace. A catch is not enough on its own: a rule that breaks for the wrong reason sends the break to the wrong owner, and the planted error survives the fix.

What passing looks like on each copy of the quarter

Clean twinSeeded copy
Breaks raised

Clean twin: None above tolerance. Every flag is a false alarm and is counted.

Seeded copy: One per seed above tolerance; seeds below tolerance stay silent by design.

Known differences

Clean twin: All explained with the same reasons and sources as when the quarter was filed.

Seeded copy: Still explained; a seed must not be absorbed into a legitimate item.

Explanation

Clean twin: Unchanged amounts, re-derived from their sources.

Seeded copy: Each caught seed attributed to the right kind: mapping, scope, timing, classification.

Trace

Clean twin: Nothing to trace.

Seeded copy: Each remainder followed to the accounts, the feed and the mapping row the answer key names.

Routing

Clean twin: No break drafted.

Seeded copy: Each break addressed to the owner of the system where the seed was planted.

Our scoring frame. Recall is seeds caught over seeds planted above tolerance; the false alarm count comes only from the clean twin; explanation, trace and routing accuracy are scored against the answer key.

What are false positives in reconciliation, and why do they matter as much?

A false positive in reconciliation is a flag on a difference that is legitimate, and it matters because it spends the same analyst time as a real break and teaches people to stop reading flags. The risk is sharper with language models than with fixed rules. A 2026 benchmark that planted errors in financial statements built from SEC XBRL filings found that most of the model runs it scored flagged nearly every clean statement as wrong (Panda, FinVerBench, arXiv 2605.29586, 2026, a preprint not yet peer reviewed).

A planted-error benchmark for financial statements, in four numbers

62seeded

statements with planted errors, against 43 left clean, in the scored subset

9 of 14

complete model runs flagged 95–100% of the clean statements as wrong

1run

showed no observed false positives on the clean statements

79%

recall for the calibrated model once figures were rounded, against 100% unrounded

FinVerBench, arXiv 2605.29586 (May 2026), built from 10-K XBRL filings of 43 S&P 500 companies with arithmetic, cross-statement, year-over-year and magnitude errors planted. A preprint, not peer reviewed; it measures general-purpose models, not Regulatory Reporting Reconciliation.Source: arXiv 2605.29586

Two lessons carry straight into regulatory reporting. First, the clean twin is not optional: the benchmark's headline finding is about clean statements, and a test with only seeded data would have missed it. Second, presentation changes measured recall. The calibrated model caught every planted error on unrounded figures and 79% once the figures were rounded as filings round them. Regulatory reports are filed in thousands of dollars, and a seed smaller than the rounding will vanish; plant seeds at the precision the reports actually carry.

This is also why the sample bank's rules are deterministic and its agents are confined to explaining and tracing with a citation for every claim. A rule decides whether two figures differ; the agents' job is to say why, and every answer can be checked against the passage it cites.

A correct trace in Regulatory Reporting Reconciliation: the accounts, the feed and the mapping row

Trace screen for $168.7M between the FR Y-9C and the FR 2052a run, read-only: the trace agent's plan on the left (read the remainder, pull account-level balances from both sides, match one to one, group the gap, follow the feed and the mapping, compare with June 30, hand to the break agent) and on the right the finding at confidence 0.97: 2,118 mortgage escrow accounts holding $168,712,440.07 under a product code introduced on August 18, mapping row 318 targeting other liabilities where row 117 targeted deposits, with six sample accounts and masked account numbers.
Regulatory Reporting Reconciliation on the fictional sample bank. In a seeded test this is the trace score: the right accounts, the right feed and the right mapping row, matched against the answer key, not just a flag on the right concept.

How do auditors test reconciliations?

Auditors usually test reconciliations by inspecting a sample: was the reconciliation done on time, was it reviewed by someone other than the preparer, are the reconciling items supported, and were old items resolved. The OCC describes operational audits that include "procedures to test the integrity of accounts, regulatory reports, management information systems, or other aspects of bank operations". That tests whether the control operated. A seeded test answers the other question, whether the control as designed would catch the errors that matter, and gives an auditor something to re-perform.

Seven rules that make a seeded test worth an auditor's time

  1. Seed a quarter that was filed and reconciled

    So every legitimate difference already has its explanation and source.

  2. Keep the answer key away from the rule authors and the agents

    Otherwise the test measures memory, not detection.

  3. Run a clean twin beside the seeded copy

    False alarms are counted only on data known to be right.

  4. Cover every report pair and every kind of difference

    Mapping, scope, timing, classification, treatment, elimination.

  5. Plant around each tolerance

    A seed just under and one just over show where the threshold really sits.

  6. Plant at filing precision

    Reports are filed in thousands; a seed below the rounding proves nothing.

  7. Score cause and owner, not only the catch

    A break for the wrong reason goes to the wrong person and the error survives.

Our rules, drawn from the scoring frame above and the FinVerBench findings; the tolerance and precision rules follow from how regulatory reports are filed.

Testing the agents each time they change

A seeded test at go-live is not the end; every change to a rule, a tolerance or an agent is a new control that has not been tested. The sample bank treats its agents like people with versions: each has a versioned prompt, a model and a confidence threshold (0.90 for the explainer agent, 0.85 for the trace agent, 0.95 for the checker agent), and a change is run against the last quarter's 38 breaks before a manager and an administrator approve it. Every human override of an agent's output carries a reason code and is counted each quarter.

The last quarter's breaks are a regression set: they show a change does not lose what the old version caught. Seeds are the other half: they show what nobody has seen yet. A bank that keeps both, and adds each quarter's real breaks to the regression set, ends up with a test library that grows with its own history.

The checker agent in Regulatory Reporting Reconciliation confirms a fix at the source

Break BRK-Q3-038 marked Confirmed, working as the deposit data owner. A propose-closure panel lists the checker agent's rerun steps: reloaded the feed for September 30 under change ticket CHG-48231 with 5,686,328 accounts read and none to Outflows – Other; reran the rule with the FR 2052a run at $71,479.0M equal to the FR Y-9C plus accrued interest; checked the source, not the report, with row 318 now targeting deposits and no top-side adjustment on the concept; ties with unexplained $0.0M.
Regulatory Reporting Reconciliation on the fictional sample bank. The same check scores a seeded test: a seed counts as fixed only when the rerun ties at the source, without an adjustment on the concept.

Seeds are worth writing down in the same form a real break takes; what a break has to carry to reach its owner is that form. Tolerances, which decide which seeds a rule should catch at all, are the subject of reconciling items and how close is close. To see the rules, agents and checks on the sample bank's quarter, start from Regulatory Reporting Reconciliation.

Questions people ask

What is seeded error testing?

Seeded error testing plants known errors in data or a system, runs the control or program being tested, and counts how many of the planted errors it finds. Because the answers are known, it measures detection directly rather than inferring it from a quiet run. For regulatory reconciliation the seeds are misclassifications, missing eliminations and mapping errors planted in a filed quarter.

How many errors should a reconciliation test plant?

No rule sets a number. A practical floor is one seed for each report pair and each kind of difference the rules cover, plus a pair around each tolerance; for a bank tying the general ledger, the Call Report, the FR Y-9C, the FR 2900 and the FR 2052a, that is a few dozen seeds. More matters less than coverage: ten seeds all in deposits test one rule family.

What did Republic First misreport on its Call Report?

According to FDIC officials quoted by the Inspector General, it reported $664 million of secured borrowings as unsecured on Schedule RC-O of its June 30, 2023 Call Report. Separately, in September 2023 it amended its Call Reports for three quarters after its auditors raised a deferred tax asset valuation issue, and the amendments moved it to "Adequately Capitalized" for prompt corrective action purposes.

What is reconciliation in ETL testing?

It is the check after data is loaded from a source to a target that record counts, sums and key totals agree on both sides. It catches dropped or duplicated rows. It does not catch a row loaded intact onto the wrong line, which is the error that matters most between regulatory reports, so it complements a cross-report seeded test rather than replacing it.

Can a seeded test use real customer data?

It should run on a copy of the quarter with customer names and account numbers masked, as the sample bank's traces are. The seeds change balances and mappings, not identities, so masking costs the test nothing, and the copy keeps planted errors well away from any figure that could be filed.

Regulatory Reporting Reconciliation.
See it on your own files.

An agentic solution from Botminds. Reporting teams tie each regulatory report to the ledger and sibling reports and open breaks Book a demo, or explore how it works.