All Projects → svenstaro → mt940-rs

svenstaro / mt940-rs

Licence: MIT license
A MT940 parser in Rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to mt940-rs

hbci4java
Java-based FinTS protocol implementation that supports all features (chipTAN, pushTAN, HHD, SEPA, PSD2,...)
Stars: ✭ 113 (+494.74%)
Mutual labels:  hbci, fints
TheBankster
A personal finance tool in PHP
Stars: ✭ 15 (-21.05%)
Mutual labels:  hbci, fints
fints-institute-db
Database of German Banks and their HBCI / FinTS endpoints
Stars: ✭ 28 (+47.37%)
Mutual labels:  hbci, fints
Parbad
A free, open-source, integrated and extensible library which connects your web applications to online payment gateways. Gateways can be added or developed by you.
Stars: ✭ 194 (+921.05%)
Mutual labels:  bank
Boleto Api
API for register and generate "Boletos"
Stars: ✭ 222 (+1068.42%)
Mutual labels:  bank
Fintech To Ynab
Automatically push Monzo and Starling transactions into YNAB in real time.
Stars: ✭ 214 (+1026.32%)
Mutual labels:  bank
yii2-bankcard-info
银行卡卡号分析(Yii2扩展)
Stars: ✭ 15 (-21.05%)
Mutual labels:  bank
Tqvaultae
Extra bank space for Titan Quest Anniversary Edition
Stars: ✭ 159 (+736.84%)
Mutual labels:  bank
subscribie
Collect recurring payments online - subscription payments collection automation
Stars: ✭ 36 (+89.47%)
Mutual labels:  sepa
coding-standard
🐽 Tuned & very strict coding standards for PHP projects
Stars: ✭ 13 (-31.58%)
Mutual labels:  strictness
latinum
Latinum is a framework for resource and currency calculations.
Stars: ✭ 109 (+473.68%)
Mutual labels:  bank
Bank interview
🏦 银行笔试面试经验分享及资料分享(help you pass the bank interview, and get a amazing bank offer!)
Stars: ✭ 3,308 (+17310.53%)
Mutual labels:  bank
clabe-validator
🇲🇽 Analyze or create a CLABE number for a Mexican bank account (written in functional TypeScript)
Stars: ✭ 55 (+189.47%)
Mutual labels:  bank
laravel-sibs-payments
Laravel library to communicate with SIBS - Open Payment Platform. The library includes payments: MBWAY, VISA, MASTER, AMEX, VPAY, MAESTRO, VISADEBIT, VISAELECTRON.
Stars: ✭ 30 (+57.89%)
Mutual labels:  sepa
bank2ynab
Easily convert and import your bank's statements into YNAB. This project consolidates other conversion efforts into one universal tool.
Stars: ✭ 197 (+936.84%)
Mutual labels:  bank
Bancosbrasileiros
Lista de bancos brasileiros | Brazilian banks list
Stars: ✭ 178 (+836.84%)
Mutual labels:  bank
bank.logo
bank.logo
Stars: ✭ 26 (+36.84%)
Mutual labels:  bank
gocnab
CNAB (Un)Marshaler
Stars: ✭ 20 (+5.26%)
Mutual labels:  bank
Mono-PWA
Monobank PWA — unofficial online web client for monobank
Stars: ✭ 24 (+26.32%)
Mutual labels:  statement
pyitau
Unofficial client to access your Itaú bank data
Stars: ✭ 28 (+47.37%)
Mutual labels:  bank

mt940-rs

GitHub Actions Workflow Docs Status codecov Crates.io license

A strict MT940 bank statement parser in Rust.

Features

  • 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.

Planned features

  • MT941 support
  • MT942 support

Library usage example

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");
}

CLI usage example

cargo run --bin sta2json tests/data/mt940/full/danskebank/MT940_DK_Example.sta

Documentation

Documentation is here.

Performance

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

Strictness

Some banks bank use weird derivates of MT940 that do not strictly follow the specification. In that case you should try to do some pre-processing either by yourself or using one of the provided sanitizers.

Resources and acknowledgements

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.

Other projects

iotafinance.com

Amazing interactive docs.

DanskeBank

They provide tons of good docs.

Bank Austria

Deutsche Bank

ABN AMRO

Westpac Banking

Societe Generale Srbija

Bank Millennium

DZ Bank

Handelsbanken

ING Bank

Kontopruef

Rabo Bank

SEPA for Corporates

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].