A strict MT940 bank statement parser in Rust.
- Parse MT940 bank statements.
- Strict and well-researched.
- Super simple API and nice Rusty structs.
- Small commandline utility that allows for quick and easy conversion of MT940 statements to JSON.
- Well tested with many automated tests to find weird corner cases.
- Pretty fast.
- MT941 support
- MT942 support
extern crate mt940;
use mt940::parse_mt940;
fn main() {
let input = "\
:20:3996-11-11111111\r\n\
:25:DABADKKK/111111-11111111\r\n\
:28C:00001/001\r\n\
:60F:C090924EUR54484,04\r\n\
:61:0909250925DR583,92NMSC1110030403010139//1234\r\n\
:86:11100304030101391234\r\n\
Beneficiary name\r\n\
Something else\r\n\
:61:0910010930DR62,60NCHGcustomer id//bank id\r\n\
:86:Fees according to advice\r\n\
:62F:C090930EUR53126,94\r\n\
:64:C090930EUR53189,31\r\n\
\r\n";
let input_parsed = parse_mt940(input).unwrap();
assert_eq!(input_parsed[0].transaction_ref_no, "3996-11-11111111");
}
cargo run --bin sta2json tests/data/mt940/full/danskebank/MT940_DK_Example.sta
Documentation is here.
Time to parse the provided MT940_FI_Example.sta
:
mt940-rs (this crate) | mt940-js (NodeJS) | mt-940 (Python) | |
---|---|---|---|
Time for file | 0.054ms | 0.08ms | 1.15ms |
Performance | 600000 lines per sec | 400000 lines per sec | 28000 lines per sec |
Some banks bank use weird derivates of MT940 that do not strictly follow the specification. In that case, I recommend you do some pre-processing of those statements.
Referencing proper docs is important because because banks seem to be somewhat lenient about their strictness in implementing MT940. Below I assembled a list of resources that I reference.
- Lots of test data copied from https://github.com/WoLpH/mt940
Amazing interactive docs.
They provide tons of good docs.
- https://danskebank.com/en-uk/ci/Products-Services/Transaction-Services/Online-Services/Integration-Services/Documents/Formats/FormatDescriptionSWIFT_MT940/MT940.pdf
- https://danskebank.com/en-uk/ci/Products-Services/Transaction-Services/Online-Services/Integration-Services/Documents/Formats/FormatDescriptionSWIFT_MT942/MT942.pdf
- https://danskebank.com/en-uk/ci/Products-Services/Transaction-Services/Online-Services/Integration-Services/Formats/Pages/SWIFT-formats.aspx
- https://www-2.danskebank.com/Link/ExtendedMT940/$file/Extended_MT940.pdf