为什么这次迁移很重要
SWIFT 正在淘汰传统的 MT 报文格式,转而采用更丰富的 ISO 20022 标准。对于财务和财务团队来说,这意味着您的银行对账单处理流程必须在严格的截止日期之前从 MT940 发展到 CAMT.053。
SWIFT 迁移时间表
| 日期 | 里程碑 | 影响 |
|---|---|---|
| 2025 年 11 月 | 跨境支付 MT 与 MX 共存结束 | PACS 消息现在仅限 ISO 20022 |
| 2026 年 11 月 | 结构化/混合地址强制; MT101多指令被拒绝;案例管理第一阶段 | 地址格式必须符合;部分MT消息会被拒绝 |
| 2026 年末 | 开始选择接收 CAMT.052/.053/.054 | 金融机构可以开始接收本地 ISO 声明 |
| 2027 年 11 月 | 所有金融机构必须本地接收 CAMT.053 | SWIFT 停止将 MT 格式转换为 ISO;您的系统必须直接解析 CAMT |
| 2028 年 11 月 | MT940/MT942/MT950/MT900/MT910全面退役 | 旧的报表格式不再可用; CAMT.052/.053/.054 是唯一的选择 |
您的代码有何变化
之前:仅限 MT940
from bankstatementparser import Mt940Parser
parser = Mt940Parser("statement.mt940")
df = parser.parse()
之后:两种格式均具有自动检测功能
from bankstatementparser import create_parser, detect_statement_format
fmt = detect_statement_format("statement.xml") # or .mt940
parser = create_parser("statement.xml", fmt)
df = parser.parse() # Same DataFrame schema regardless of format
这detect_statement_format()函数识别文件是否为 MT940、CAMT.053、PAIN.001 或任何其他支持的格式。这create_parser()函数返回正确的解析器。无论源格式如何,下游代码的工作方式都是相同的。
CAMT.053 与 MT940:主要区别
| 特征 | MT940 | CAMT.053 |
|---|---|---|
| 数据丰富度 | 领域有限 | 每笔交易的数据量增加 3-5 倍 |
| 字符集 | 有限(SWIFT 字符集) | 完整的统一码 |
| 结构 | 带标签的平面文本 | 带有命名空间的 XML |
| 余额报告 | 仅打开/关闭 | 多种余额类型 |
| 参考 | 单一参考字段 | 多种参考类型 |
| 货币处理 | 基本的 | 完整的多币种和汇率 |
银行对账单解析器如何提供帮助
- 统一 API:使用相同的方法解析 MT940 和 CAMT.053
parse()方法,生成相同的 DataFrame 模式。 - 自动检测:无需提前知道格式。
detect_statement_format()自动识别它。 - 与命名空间无关:无需配置即可处理任何 CAMT.053 变体(001.02、001.04 或银行特定的包装器)。
- 流式处理:使用有限内存处理大型 CAMT 文件(50 MB+、50K+ 事务)。
- 迁移测试:在同一日期范围内并行运行两个解析器,以在切换之前验证输出一致性。
## 入门
pip install bankstatementparser
from bankstatementparser import create_parser, detect_statement_format
# Works with MT940 today, CAMT.053 tomorrow
for file in bank_statement_files:
fmt = detect_statement_format(file)
parser = create_parser(file, fmt)
df = parser.parse()
process(df) # Your code doesn't change