สรุปสั้นๆ: SWIFT จะเลิกใช้ MT940 ภายในเดือนพฤศจิกายน 2028 Bank Statement Parser รองรับทั้ง MT940 และ CAMT.053 ด้วย API เดียว ไปป์ไลน์การแยกวิเคราะห์ของคุณจึงทำงานได้ทั้งระหว่างการเปลี่ยนผ่านและหลังจากนั้น
ทำไมการย้ายข้อมูลนี้จึงสำคัญ
SWIFT กำลังเลิกใช้รูปแบบข้อความ MT แบบเดิมเพื่อเปลี่ยนไปใช้มาตรฐาน ISO 20022 ที่สมบูรณ์กว่า สำหรับทีมคลังและการเงิน หมายความว่าไปป์ไลน์การประมวลผลใบแจ้งยอดธนาคารของคุณต้องพัฒนาจาก MT940 เป็น CAMT.053 ก่อนถึงเส้นตาย
ไทม์ไลน์การย้ายข้อมูล SWIFT
| วันที่ | เหตุการณ์สำคัญ | ผลกระทบ |
|---|---|---|
| พฤศจิกายน 2025 | การอยู่ร่วมกัน MT-to-MX สิ้นสุดสำหรับการชำระเงินข้ามพรมแดน | ข้อความ PACS เป็น ISO 20022 เท่านั้น |
| พฤศจิกายน 2026 | ที่อยู่แบบมีโครงสร้าง/แบบผสมมีผลบังคับ; MT101 แบบหลายคำสั่งถูกปฏิเสธ; Case Management Phase 1 | รูปแบบที่อยู่ต้องเป็นไปตาม; ข้อความ MT บางข้อความจะถูกปฏิเสธ |
| ปลายปี 2026 | เลือกเริ่มรับ CAMT.052/.053/.054 | สถาบันการเงินสามารถเริ่มรับใบแจ้งยอด ISO ได้ |
| พฤศจิกายน 2027 | สถาบันการเงินทุกแห่งต้องรับ CAMT.053 ได้ | SWIFT หยุดแปลงรูปแบบ MT เป็น ISO; ระบบของคุณต้องแยกวิเคราะห์ CAMT โดยตรง |
| พฤศจิกายน 2028 | 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() ส่งคืน parser ที่ถูกต้อง โค้ดปลายทางของคุณทำงานเหมือนกันไม่ว่ารูปแบบต้นทางจะเป็นอะไร
CAMT.053 เทียบกับ MT940: ความแตกต่างสำคัญ
| คุณสมบัติ | MT940 | CAMT.053 |
|---|---|---|
| ความสมบูรณ์ของข้อมูล | ฟิลด์จำกัด | ข้อมูลมากกว่า 3-5 เท่าต่อธุรกรรม |
| ชุดอักขระ | จำกัด (SWIFT charset) | Unicode เต็มรูปแบบ |
| โครงสร้าง | ข้อความแบบแบนพร้อมแท็ก | XML พร้อม namespaces |
| การรายงานยอดคงเหลือ | เปิด/ปิดเท่านั้น | ยอดคงเหลือหลายประเภท |
| การอ้างอิง | ฟิลด์อ้างอิงเดียว | หลายประเภทการอ้างอิง |
| การจัดการสกุลเงิน | พื้นฐาน | หลายสกุลเงินเต็มรูปแบบพร้อมอัตราแลกเปลี่ยน |
Bank Statement Parser ช่วยได้อย่างไร
- Unified API: แยกวิเคราะห์ MT940, CAMT.053 และใบแจ้งยอด PDF ด้วยเวิร์กโฟลว์เดียวกัน สร้าง DataFrame output ที่สอดคล้องกัน
- การตรวจจับอัตโนมัติ: ไม่ต้องรู้รูปแบบล่วงหน้า
detect_statement_format()ระบุอัตโนมัติ - ไปป์ไลน์ PDF แบบไฮบริด: ธนาคารที่ให้เฉพาะใบแจ้งยอด PDF ระหว่างการเปลี่ยนผ่าน จะถูกจัดการด้วย
smart_ingest()พร้อมการตรวจสอบยอดคงเหลืออัตโนมัติ - ไม่ขึ้นกับ namespace: รองรับ CAMT.053 ทุกเวอร์ชัน (001.02, 001.04 หรือ wrapper เฉพาะธนาคาร) โดยไม่ต้องกำหนดค่า
- การตรวจสอบหลายสกุลเงิน:
verify_balance_multi_currency()รัน Golden Rule ตามกลุ่มสกุลเงิน — สำคัญสำหรับใบแจ้งยอด CAMT หลายสกุลเงิน - สตรีมมิง: ประมวลผลไฟล์ CAMT ขนาดใหญ่ (50 MB+, 50K+ ธุรกรรม) ด้วยหน่วยความจำคงที่
- ส่งออก Ledger: ส่งออกโดยตรงเป็นรูปแบบ hledger หรือ beancount journal สำหรับบัญชีคลัง
- ทดสอบการย้ายข้อมูล: รัน parsers ทั้งสองเคียงข้างกันในช่วงวันที่เดียวกันเพื่อตรวจสอบความสอดคล้องของเอาต์พุตก่อนเปลี่ยน
เริ่มต้นใช้งาน
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
สำหรับใบแจ้งยอด PDF จากธนาคารที่ยังไม่มีการส่งออก CAMT แบบมีโครงสร้าง:
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
assert result.verification.status == "VERIFIED"