Some time ago I wrote a library to read MT940 files with Python. While there are multiple libraries available for this target, none of the others really work properly and/or support all variants of the format.
The MT940 library I wrote is slightly different, it’s designed to be able to parse any MT940 file, regardless whether it’s correct or complete. The initial version of the library was very strict and only supported files that perfectly followed the standards, a few months after the release it became obvious that most banks either used different standards when implementing the standard or interpreted the standard different. Regardless, the library gave little to no results or even crashed on some MT940 files.
Upon reflection I rewrote nearly all of the code to have a script that is flexible enough to support any format (even supporting custom processors for specific format) and wrote test code that tested every MT940 file I could find on the web. The result… a library that parsers pretty much everything out there while still maintaining a reasonable amount of results.
Usage? As simple as you might imagine. After installing (
pip install mt-940, note the dash) usage can be as simple as this:
For more examples, have a look at the tests. For example, the preprocessor test:
I am trying to understand your MT940 Library. I ran your testprogram. I have trouble to extract data. The most important one: opening balance. Without that I can not check my data input. It does not show up in your test program. I am not afraid to hack a bit, but I do not get into your program. What are you doing ? How does it work ? Please, enlighten me.
The shown example code should have your balance in it within
transactions.data, if it doesn’t than perhaps your MT940 file is doing something the library doesn’t understand yet.
Some extra docs can be found here: http://mt940.readthedocs.org/en/latest/
And the github repo where you can create issues if you’ve found bugs: https://github.com/WoLpH/mt940/
Hi Roel, This pull request should help you get the final opening balance on each transaction which what I think you’re looking for.
Thanks to this post. Could you elaborate the code bit more to get the output as a valid json format?
There’s no built-in way but it’s easy enough to write a json encoder:
With this code,
transactions = mt940.parse(‘1591139129348.STA’, processors=dict(
for transaction in transactions:
I get this error message.
Traceback (most recent call last):
File “./mt940-test.transaction_details.py”, line 17, in
AttributeError: ‘dict’ object has no attribute ‘post_transaction_details’
How do I get at the stuff generated by
Hi. I’m trying to convert my MT940 from citiban( it is .txt file) to excel or csv file. But I’m a beginner for python and I’m struggling with reading the code you wrote, may I ask if I could message you more about the code? thanks in advance.