#banking #hbci #fints #convert-json #command-line-tool #sepa

bin+lib mt940

严格的 MT940 银行对账单解析器

7 个版本 (3 个稳定版)

1.0.2 2022 年 10 月 5 日
1.0.1 2022 年 2 月 2 日
1.0.0 2022 年 1 月 30 日
0.3.2 2019 年 9 月 24 日
0.2.0 2018 年 11 月 13 日

#275 in 财务

MIT 许可证

89KB
1.5K SLoC

mt940-rs

GitHub Actions Workflow Docs Status codecov Crates.io license

使用 Rust 编写的严格的 MT940 银行对账单解析器。

特性

  • 解析 MT940 银行对账单。
  • 严格且经过深入研究。
  • 非常简单的 API 和良好的 Rust 结构体。
  • 一个小型命令行工具,允许快速轻松地将 MT940 对账单转换为 JSON。
  • 经过良好测试,具有许多自动化测试以发现奇异的边缘情况。
  • 非常快.

计划中的特性

  • MT941 支持
  • MT942 支持

库使用示例

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

文档

文档在这里:https://docs.rs/mt940.

性能

解析提供的 MT940_FI_Example.sta 的时间

mt940-rs (此包) mt940-js (NodeJS) mt-940 (Python)
文件时间 0.054ms 0.08ms 1.15ms
性能 每秒 600,000 行 每秒 400,000 行 每秒 28,000 行

严格性

一些银行使用不严格遵循规范的 MT940 的怪异衍生版本。在这种情况下,您应尝试自行或使用提供的清理程序进行一些预处理。

资源和致谢

正确引用文档很重要,因为银行似乎对 MT940 的实现严格性有些宽容。以下是我引用的资源列表。

其他项目

iotafinance.com

惊人的交互式文档。

DanskeBank

他们提供了大量的优秀文档。

Bank Austria

Deutsche Bank

ABN AMRO

Westpac Banking

Societe Generale Srbija

Bank Millennium

DZ Bank

Handelsbanken

ING Bank

Kontopruef

Rabo Bank

SEPA for Corporates

依赖项

~7–17MB
~227K SLoC