Tallyscope

How verification works: the running-balance proof

Converting a statement is easy to do badly. Verification is how Tallyscope tells you, with arithmetic, which rows you can trust.

Open TallyscopeSee pricing

The idea

Most statements print a balance after every transaction. That column is redundant information: each balance should equal the previous balance plus the transaction's amount. If you can recompute it, you can test whether what was read is right. This is the same principle as a checksum.

A worked example

Take a short statement with an opening balance of 1,000.00. Here is what it prints, and what the check does with each row.

RowDescriptionAmount readPrinted balanceExpected balanceResult
1Card payment-45.20954.80954.80Proven
2Salary+250.003,454.801,204.80Disagrees
3Rent-120.003,334.803,334.80Proven

Row 1: 1,000.00 minus 45.20 is 954.80, which matches the printed balance. The amount and its direction (money out) are proven. Row 2: the amount was read as 250.00, so the expected balance is 1,204.80, yet the page printed 3,454.80. They cannot both be right. The printed balance moved by 2,500.00 from the previous one, so the likely truth is that the amount is 2,500.00 and a decimal or digit was lost, perhaps by OCR. Because row 3 again agrees with the printed balances (3,454.80 minus 120.00 is 3,334.80), the later balances are consistent and the problem is confined to row 2.

Tallyscope flags row 2 and offers 2,500.00, the amount the balance implies, as a one-click fix. When the digits you read are exactly the digits the balance requires, for example 250000 instead of 2,500.00, only the decimal point and separator are lost, and the number is restored automatically and tagged as repaired. In this example 250.00 is a different digit string from 2,500.00, so the fix is offered, not silently applied. That distinction is deliberate: a repair is applied only when the numbers prove it.

What the check proves

The four statuses

StatusMeaning in practice
VerifiedThe arithmetic supports the rows: the amounts and directions agree with the printed balances and the totals.
Partly verifiedSome of the statement is proven and some is not. The page tells you which rows.
Needs reviewRows disagree with the balances. Look at the flagged rows against the original.
UnverifiedThere is no balance information to check against, as in some credit card exports. Rows are extracted, and the direction comes from headers, signs and wording.

A status is never raised without arithmetic evidence, and the tool prefers saying "Needs review" over guessing.

What it cannot prove

Verification is arithmetic evidence, not a guarantee, and you remain responsible for checking figures you rely on. See the terms.

Where it runs

All of it happens in your browser tab, on the data in memory; see converting without uploading. For the OCR side of repairs, read bank statement OCR, or open the app and see the statuses on your own statement.

Frequently asked questions

Does Verified mean the statement is genuine?

No. It means the rows are arithmetically consistent with the printed balances. It does not test authenticity and is not an audit.

What happens when a row does not add up?

It is flagged, the statement is marked Partly verified or Needs review, and the amount the balance implies is offered as a fix you can accept.

Why is a statement Unverified?

It has no running balance or printed totals to check against, as with some credit card exports.

Are dates checked?

No. Arithmetic cannot prove a date, so check dates yourself.

Try it on your own statement

Free to start. Your files are read in your browser and are not uploaded.

Open Tallyscope See pricing