🕶️ MT940 Anonymizer

Send your statement to support without sending your customers. Identities are replaced consistently; amounts, dates and structure are never touched, so the bug still reproduces.

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

Sending a statement to support, without sending your customers

Something in the file breaks your import, and the vendor asks for the file. That file contains your account number, your balance, and the name and IBAN of everyone who paid you this month. Under GDPR that is other people's personal data, and it is not yours to email into a ticketing system.

This replaces the identities and leaves everything else alone, so you can hand over a file that still reproduces the problem.

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.

Amounts, dates and structure are never touched

This is the rule the whole tool is built around. If redaction changed the numbers, the recipient could no longer reproduce the problem — which is the entire reason the file is being sent. So:

  • Every amount stays exactly as written, decimal comma included
  • Every date stays exactly as written
  • Every tag, in order:20:, :25:, :28C:, :60F:, :61:, :86:, :62F:, and any proprietary :NS: fields your bank adds
  • Line endings — a CRLF file stays a CRLF file, because some importers insist on it and that is exactly the kind of bug you might be reporting

What is replaced, and how

  • IBANs → same country code, same length, sequential digits. Length and country checks downstream behave as they did on the real file.
  • Account numbers in :25: → digits of the same length.
  • Counterparty namesPARTY 001, PARTY 002, …
  • BICsBANK01XXXXX, keeping the 8- or 11-character shape.
  • Creditor IDs and mandate references → sequential placeholders.

Replacement is consistent

The same party gets the same placeholder everywhere it appears. “This payer shows up eleven times and one of them is wrong” survives anonymisation — otherwise you would be sending a file that no longer contains the pattern you are asking about.

A :25: currency suffix is structure, not identity

Some banks write the account line as NL91ABNA0417164300EUR. Those last three characters look exactly like the end of a plain IBAN, but they are how the statement declares its currency — and an MT942 can have no other way of stating it. The suffix is only kept when it matches the currency the statement is actually denominated in; otherwise it is treated as part of the account and replaced with everything else.

Check it before you send it

The full mapping is shown so you can verify nothing identifying survived. It is displayed in your browser only — it is not saved anywhere and is not part of the downloaded file. Keep a copy only if you need to read the anonymised file back afterwards.

One caveat worth being honest about: only the identities the parser recognises can be replaced. If your bank writes a name into a proprietary field in a layout no parser knows, review the output before sending it. That is what the preview is for.

How to anonymise a file

1

Add the file

Drop the .sta file above. It is read in your browser and goes no further.

2

Check the mapping and the preview

Confirm every identity was found, and read the output before you send it.

3

Download and attach

You get a valid MT940 file that still parses, still reconciles, and still reproduces the problem.

Frequently Asked Questions

No — and on this page in particular that matters. An anonymiser you have to upload the un-anonymised file to is not an anonymiser. Everything happens in your browser.
Yes. No amount and no date is altered, so opening + credits − debits still equals the stated closing balance. Run it through the MT940 Validator afterwards if you want to confirm.
No. It exists only in the page you are looking at, and it is not written into the downloaded file. Copy it yourself if you need to reverse the process later.
Yes. Files in CP1252 — still common from German and Nordic banks — are decoded before anything is matched. This matters more than it sounds: matching un-decoded bytes against decoded names would silently leave every name containing an umlaut in the file, with no error shown anywhere.
It removes the direct identifiers a statement carries: names, IBANs, BICs, creditor IDs and mandate references. Whether that is sufficient depends on your context and the size of your dataset — amounts and dates are preserved by design, and a distinctive amount on a distinctive date can still narrow things down. Review the output and apply your own judgement.