✂️ MT940 Splitter

One nightly file, every account in it, and an accounting package that will only import one account at a time. Split it properly — each part is your original file, sliced, not re-generated.

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

One nightly file, every account in it

Banks deliver a single file containing every account a company holds. Accounting systems import per account, and many refuse a file outright if it contains an account they do not recognise. The gap between those two facts is usually closed by hand, in a text editor — which is exactly how half a statement ends up booked.

This splits the file properly, at the boundaries the format itself defines.

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.

Your file, sliced — not re-generated

This is the part that matters. The split is done on the raw text, cutting at :20: boundaries — the same boundary the format uses to start a statement. It does not parse your file and write a new one out.

Re-generating would silently rewrite everything a parser does not model: bank-proprietary :NS: fields, unusual spacing, a dialect-specific :86: layout your software depends on. What you downloaded would no longer be what your bank sent. Slicing means each part is byte-for-byte identical to its portion of the source, down to the bank's own line endings — and if you split a file and merge the parts back together, you get the original file back exactly.

If the file has a SWIFT envelope ({1:{4:-}), each part is re-wrapped in the same envelope so it stands alone as a valid message.

Three ways to split

  • One file per statement — the finest split the format allows. Every :20: block becomes its own file.
  • One file per account — the usual choice. All statements for an account, however many pages, end up in one file, so continuity is preserved and your import sees a complete series.
  • One file per statement date — for feeding a system that processes strictly day by day.

When it refuses to split

The statements the parser found and the :20: blocks in the text must agree in number. If they do not — which can only happen if a statement was recovered without a reference of its own — the split is refused rather than produced with the labels attached to the wrong text. A tool that mislabels which account a file belongs to is worse than one that declines.

How to split a file

1

Add the file

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

2

Choose how to split it

By statement, by account, or by date. The part list updates as you switch.

3

Download

Take one part or all of them. Each is a complete, importable MT940 file.

Frequently Asked Questions

No. The file is sliced in your browser and the parts are created there too.
Yes. Each part is a complete MT940 message with its own statement blocks and, where the source had one, the same SWIFT envelope. Nothing is re-generated, so anything your software relies on in the original is still there.
Yes — the MT940 Merger reassembles them, and because both tools work on raw text rather than re-emitting a model, split followed by merge returns the original file byte for byte.
The number of statements found does not match the number of :20: reference blocks in the text, so the parts could not be labelled reliably. Rather than hand you files that might name the wrong account, it declines. Run the file through the MT940 Validator to see what is unusual about it.
Browsers rate-limit a burst of downloads triggered by a single click, so the parts are spaced out slightly. Nothing is lost — the files arrive one after another.