Cleanrow

The balance check, explained

Any converter can misread a row: a digit, a sign, a line lost at a page break. A statement prints enough to catch most of that, because it states where the balance started and where it ended. Cleanrow checks every converted statement against those figures and shows the answer before you download anything.

What it checks

Two things, both in whole cents, with no rounding:

  1. Opening balance + every transaction = closing balance. The opening and closing balances are the ones printed on the statement; the transactions are the rows Cleanrow read.
  2. Every running balance agrees. When the statement prints a balance after each row (or each day), each one has to equal the previous balance plus that row's amount.

The answer is one of three banners above the rows:

BannerWhat it means
VerifiedBoth checks pass, to the cent.
Off by an amountSomething doesn't add up. The banner gives the difference and the rows where the running balance stops agreeing.
Can't verifyThe statement prints no opening and closing balance that Cleanrow could find. It says so rather than calling the rows verified.

A worked example

A made-up test statement, the Copperfield Trust checking account ending 1544, 2025-01-01 to 2025-01-31, as the converter's engine read it:

Amount
Opening balance printed on the statement$3,606.09
Money in (15 rows)$15,293.32
Money out (58 rows)-$11,835.46
Opening + every transaction$7,063.95
Closing balance printed on the statement$7,063.95

The two bottom lines match, so the banner reads Verified.

Now suppose row 4's amount had been misread, coming out $18.00 too high. The same check, run by the engine on the changed rows, gives:

The banner reads Off by $18.00: row 4 doesn’t add up, and under it: Opening $3,606.09 + transactions = $7,081.95, but the statement says $7,063.95.

The running balances show where:

RowDateDescriptionAmount as readRunning balance printedOpening + rows so far
12025-01-01Check 1650-1,149.462,456.632,456.63
22025-01-01BRIGHTPATH ELECTRIC AUTOPAY WEB ID 437965622-237.182,219.452,219.45
32025-01-02HEARTH GAS CO AUTOPAY WEB ID 312706058-169.222,050.232,050.23
42025-01-03ONLINE TRANSFER TO SAVINGS XXXXXX9884 REF #IBXWDE4PUH-554.251,477.981,495.98
52025-01-03ACH DEPOSIT ACORN DENTAL GROUP PAYROLL PPD ID: 2443433977 RECURRING TRACE 688597419335453 PINE CREST MN3,966.815,444.795,462.79

Up to row 3, opening plus the rows so far equals the balance the statement printed. At row 4 they part, so the mistake is on that row (or, when a balance is printed only once a day, on the rows of that day). The banner links straight to it; compare it with the PDF, click Edit, correct the amount, click Save, and the check runs again.

What it catches

What it can't catch

The check proves the amounts add up. It doesn't prove everything else, so it's worth knowing the gaps:

Bank CSV files

A bank's CSV export usually has no opening balance, only a running balance column, if that. When you map that column, Cleanrow checks each balance against the one before it plus the row's amount, which proves the rows and their signs agree with each other. It can't prove that no row is missing before the first one, and the banner says so. Without a balance column the file shows No balances in this file, can't verify. See cleaning up a bank CSV.

Where the check runs

In your browser tab, like the rest of the converter. The statement isn't uploaded to check it, and the result isn't sent anywhere. The privacy policy has the details. The same check runs in Cleanrow for Mac (coming to the Mac App Store), which also reads scanned statements; text recognition can misread digits, and the check is what shows it.

Try it

Add a statement to the converter: the preview, the balance check and row edits are free for any number of statements, and your first file downloads free in every format.

Related guides