👯 MT940 Duplicate Finder

Spot the same payment booked twice before it reaches your ledger. Matched on date, amount, counterparty and reference — with the bank reference shown so you can tell a real duplicate from a real repeat.

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 same payment, booked twice

Duplicates get into a statement in ordinary ways. A bank re-sends a file and it is imported on top of the first one. A batch is submitted twice. Two overlapping date ranges are downloaded from the portal and both are loaded. The result is the same: a payment your ledger thinks happened twice, and a reconciliation that will not close.

This tool groups the entries in your statement that look like the same booking more than once, so you can check them before they reach the ledger rather than after.

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.

How entries are matched

Two entries are treated as the same booking when all of these agree:

  • Value date
  • Signed amount — compared in whole cents, so 1234,56 and 1234.560 match and no floating-point rounding is involved
  • Counterparty — IBAN and name, whitespace and case normalised
  • End-to-end reference (EREF) and the purpose text from :86:

Why the bank reference is deliberately excluded

Every :61: line carries the bank's own reference. It would be the obvious thing to match on — and it is exactly wrong for this job, because a bank issues a new reference when it re-sends a statement. Matching on it would report zero duplicates on the one file that certainly contains them.

So the bank reference is not used for matching, but it is shown in the results, because it is the best evidence you have for the opposite conclusion: two entries with different bank references are usually two genuinely different bookings that happen to look alike.

Duplicates versus repeats

No tool can tell a mistaken duplicate from a legitimate repeat, and any tool that claims otherwise will eventually delete a real payment. A daily custody fee, a standing order paid twice in a period, two identical invoices from the same supplier on the same day — all of these are real, and all of them look like duplicates from the file alone.

That is why every group here is a candidate to review, never a confirmed error, and why nothing is removed automatically. The judgement stays with you; this just makes sure you get to make it.

How to check for duplicates

1

Add the file

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

2

Review each group

Entries are grouped, with the bank reference shown so you can separate real repeats from real duplicates.

3

Export the candidates

Download them as CSV to work through in a spreadsheet or hand to whoever owns the ledger.

Frequently Asked Questions

No. The comparison runs entirely in your browser.
No, deliberately. A genuine repeat charge is indistinguishable from a mistaken duplicate when all you have is the file, so automatic removal would eventually delete a real payment. You get the candidates and the evidence; the decision stays yours.
Because banks issue a new bank reference when they re-send a statement — matching on it would find nothing in exactly the file most likely to contain duplicates. It is shown in the results instead, as evidence that two similar entries are actually two different bookings.
The MT940 Merger already skips a statement that is present in two files, and re-validates the merged output. Use this tool when duplicates exist within a single statement rather than across files.
Use MT940 Diff for that. It compares two files and counts repeats properly — the same €5 fee appearing twice in one file and three times in the other reports exactly one difference, not three.