⚖️ MT940 Reconciliation Report

Opening + credits − debits = closing. See the arithmetic for every statement in the file, plus any page that is missing or does not follow on from the one before it.

Your statement stays on your device. This page reads the file with JavaScript in your browser. Nothing is uploaded, and it keeps working with your network disconnected.
📄
Drop your MT940 file here
or click to browse — .sta, .mt940, .940, .txt
MT940 & MT942 · .sta .mt940 .940 .txt · up to 20 MB
…or paste the statement text instead

The one sum that has to be right

Every MT940 statement makes a claim you can check with arithmetic:

:60F: opening balance + the credits in :61: the debits in :61: = :62F: closing balance.

When that does not hold, the file is not describing your account. This report does the sum for every statement in the file and shows you the working — opening, credits, debits, what the closing balance should be, and what the bank actually wrote.

Nothing is uploaded. This page is JavaScript running on your machine. Load it, disconnect from the internet, and it still works — which is the only honest way to hand a tool a live bank statement.

Why the arithmetic is done in cents

Money is added up in integer minor units, never as floating-point numbers. In binary floating point 0.1 + 0.2 is not 0.3, and a statement with a few thousand entries accumulates enough error to invent a discrepancy that is not there — or, worse, to hide a real one-cent difference. A cent is a cent here.

Balancing is not the same as complete

A statement can reconcile perfectly and still be the wrong statement. Two checks cover that:

Missing statement pages

Statements carry a number in :28C:. If an account's numbering runs 41, 43, 44, then statement 42 exists at your bank and never reached you. Every page you have may balance beautifully; the ledger still ends up short. Numbering is tracked per account, because separate accounts each numbered from 1 is normal.

Continuity breaks

Independently of the numbering, one page's closing balance must equal the next page's opening balance for the same account. A break there means a page is missing or the pages arrived out of order — which the numbering alone will not always reveal, because :28C: is statement/sequence and pages 10/1 and 10/2 share a statement number.

Reading the report

  • Reconciles — the stated closing balance equals the calculated one, to the cent.
  • Off by … — the exact difference between what the file says and what its own entries add up to. A positive figure means the closing balance is higher than the entries justify.
  • Not applicable — an MT942 interim report, or a statement with no opening/closing pair. There is genuinely nothing to reconcile, which is not the same as failing.

Download the table as CSV to attach to a reconciliation working paper, or the full report as text for a support ticket.

How to run the report

1

Add the file

Drop the .sta file above, or paste the statement text.

2

Check the arithmetic

One row per statement, with expected and stated closing balances side by side.

3

Check the continuity

Then look below the table for missing pages and continuity breaks across the whole file.

Frequently Asked Questions

No. The arithmetic runs in your browser. Nothing is sent anywhere.
Not on our side — every amount is handled as an integer number of cents, so no rounding happens at any point. A one-cent difference in the report is a one-cent difference in the file, and it is usually a truncated final entry or a correction the bank posted without adjusting the closing balance.
MT942 is the intraday report. It carries a floor limit and transaction-count totals rather than a final closing balance, so there is no closing figure to reconcile against. That is the format behaving correctly, not a problem with your file.
:28C: is statement number / sequence number. Pages 10/1 and 10/2 are two pages of statement 10 and share the number 10, so continuous numbering can still be missing a page. That is exactly what the balance-continuity check catches.
Not yet — this checks the statement against itself, which is the step that catches a bad file before it reaches your ledger. To compare two versions of a statement, use the MT940 Diff tool.