TL;DR: SWIFT sẽ ngừng MT940 trước tháng 11/2028. Bank Statement Parser xử lý cả MT940 và CAMT.053 với một API duy nhất, giúp pipeline phân tích của bạn hoạt động trong suốt quá trình chuyển đổi và sau đó.
Tại sao cuộc chuyển đổi này quan trọng
SWIFT đang ngừng các định dạng tin nhắn MT cũ để chuyển sang tiêu chuẩn ISO 20022 phong phú hơn. Với các nhóm tài chính và ngân quỹ, điều này có nghĩa pipeline xử lý sao kê ngân hàng của bạn phải phát triển từ MT940 sang CAMT.053 trước thời hạn chắc chắn.
Lộ trình chuyển đổi SWIFT
| Ngày | Cột mốc | Tác động |
|---|---|---|
| Tháng 11/2025 | Kết thúc cùng tồn tại MT-to-MX cho thanh toán xuyên biên giới | Thông báo PACS giờ chỉ là ISO 20022 |
| Tháng 11/2026 | Địa chỉ có cấu trúc/kết hợp bắt buộc; MT101 đa lệnh bị từ chối; Quản lý case Giai đoạn 1 | Định dạng địa chỉ phải tuân thủ; một số tin nhắn MT sẽ bị từ chối |
| Cuối 2026 | Bắt đầu đăng ký nhận CAMT.052/.053/.054 | Tổ chức tài chính có thể bắt đầu nhận sao kê ISO gốc |
| Tháng 11/2027 | Tất cả tổ chức tài chính phải nhận CAMT.053 nguyên bản | SWIFT ngừng chuyển đổi định dạng MT sang ISO; hệ thống của bạn phải phân tích CAMT trực tiếp |
| Tháng 11/2028 | MT940/MT942/MT950/MT900/MT910 ngừng hoàn toàn | Định dạng sao kê cũ không còn khả dụng; CAMT.052/.053/.054 là lựa chọn duy nhất |
Những gì thay đổi trong mã của bạn
Trước: Chỉ MT940
from bankstatementparser import Mt940Parser
parser = Mt940Parser("statement.mt940")
df = parser.parse()
Sau: Cả hai định dạng với tự động nhận dạng
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
Hàm detect_statement_format() nhận dạng tệp là MT940, CAMT.053, PAIN.001, hay bất kỳ định dạng được hỗ trợ nào khác. Hàm create_parser() trả về trình phân tích phù hợp. Mã downstream của bạn hoạt động giống nhau bất kể định dạng nguồn.
CAMT.053 so với MT940: Khác biệt chính
| Tính năng | MT940 | CAMT.053 |
|---|---|---|
| Độ phong phú dữ liệu | Trường hạn chế | Dữ liệu nhiều gấp 3-5 lần mỗi giao dịch |
| Bộ ký tự | Hạn chế (bộ ký tự SWIFT) | Unicode đầy đủ |
| Cấu trúc | Văn bản phẳng có thẻ | XML với namespace |
| Báo cáo số dư | Chỉ đầu kỳ/cuối kỳ | Nhiều loại số dư |
| Tham chiếu | Một trường tham chiếu | Nhiều loại tham chiếu |
| Xử lý tiền tệ | Cơ bản | Đa tiền tệ đầy đủ với tỷ giá hối đoái |
Bank Statement Parser hỗ trợ như thế nào
- API thống nhất: Phân tích MT940, CAMT.053, và sao kê PDF với cùng quy trình, tạo đầu ra DataFrame nhất quán.
- Tự động nhận dạng: Không cần biết trước định dạng.
detect_statement_format()nhận dạng tự động. - Pipeline PDF hybrid: Các ngân hàng chỉ cung cấp sao kê PDF trong quá trình chuyển đổi được xử lý bởi
smart_ingest()với tự động xác minh số dư. - Không phụ thuộc namespace: Xử lý mọi biến thể CAMT.053 (001.02, 001.04, hoặc wrapper theo ngân hàng) mà không cần cấu hình.
- Xác minh đa tiền tệ:
verify_balance_multi_currency()chạy Golden Rule theo nhóm tiền tệ — thiết yếu cho sao kê CAMT đa tiền tệ. - Streaming: Xử lý tệp CAMT lớn (50 MB+, 50K+ giao dịch) với bộ nhớ giới hạn.
- Xuất sổ cái: Xuất trực tiếp sang định dạng hledger hoặc beancount journal cho kế toán ngân quỹ.
- Kiểm tra chuyển đổi: Chạy song song cả hai trình phân tích trong cùng phạm vi ngày để xác minh tính nhất quán đầu ra trước khi chuyển đổi.
Bắt đầu
pip install bankstatementparser
from bankstatementparser import create_parser, detect_statement_format
# Works with MT940 today, CAMT.053 tomorrow, PDF anytime
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
Với sao kê PDF từ các ngân hàng chưa cung cấp xuất CAMT có cấu trúc:
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
assert result.verification.status == "VERIFIED"
So sánh với các lựa chọn thay thế ❯ | Xem các trường hợp sử dụng thực tế ❯