בקצרה: SWIFT תוציא מ-MT940 משימוש עד נובמבר 2028. Bank Statement Parser מטפל גם ב-MT940 וגם ב-CAMT.053 עם API יחיד, כך שה-pipeline שלך עובד במהלך המעבר ואחריו.
למה ההגירה הזו חשובה
SWIFT מוציאה משימוש פורמטי הודעות MT ישנים לטובת תקן ISO 20022 העשיר יותר. עבור צוותי אוצר וכספים, זה אומר שה-pipelines לעיבוד דפי חשבון בנק חייבים להתפתח מ-MT940 ל-CAMT.053 לפני המועדים הקשיחים.
ציר הזמן של הגירת SWIFT
| תאריך | אבן דרך | השפעה |
|---|---|---|
| נובמבר 2025 | דו-קיום MT-to-MX הסתיים לתשלומים חוצי גבולות | הודעות PACS הן עכשיו ISO 20022 בלבד |
| נובמבר 2026 | כתובות מובנות/היברידיות חובה; MT101 רב-הוראתי נדחה; שלב 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() מחזירה את המנתח הנכון. הקוד שלך במורד הזרם עובד באופן זהה ללא קשר לפורמט המקור.
CAMT.053 לעומת MT940: הבדלים מרכזיים
| תכונה | MT940 | CAMT.053 |
|---|---|---|
| עושר נתונים | שדות מוגבלים | פי 3-5 יותר נתונים לעסקה |
| ערכת תווים | מוגבלת (ערכת SWIFT) | Unicode מלא |
| מבנה | טקסט שטוח עם תגיות | XML עם namespaces |
| דיווח יתרות | פתיחה/סגירה בלבד | מספר סוגי יתרות |
| הפניות | שדה הפניה יחיד | מספר סוגי הפניות |
| טיפול במטבעות | בסיסי | רב-מטבעי מלא עם שערי חליפין |
איך Bank Statement Parser עוזר
- API מאוחד: ניתוח MT940, CAMT.053 ודפי חשבון PDF עם אותו תהליך, ומייצר פלט DataFrame עקבי.
- זיהוי אוטומטי: אין צ��רך לדעת את הפורמט מראש.
detect_statement_format()מזהה אוטומטית. - Pipeline היברידי ל-PDF: בנקים שמספקים דפי חשבון PDF בלבד במהלך המעבר מטופלים על ידי
smart_ingest()עם אימות יתרה אוטומטי. - אגנוסטי ל-Namespace: מטפל בכל וריאנט של CAMT.053 (001.02, 001.04, או עטיפות ספציפיות לבנק) ללא הגדרה.
- אימות רב-מטבעי:
verify_balance_multi_currency()מריץ את כלל הזהב לכל קבוצת מטבע — חיוני לדפי חשבון CAMT רב-מטבעיים. - streaming: עיבוד קבצי CAMT גדולים (50 MB+, 50K+ עסקאות) עם זיכרון מוגבל.
- ייצוא ל-Ledger: ייצוא ישירות לפורמט יומן hledger או beancount לחשבונאות אוצר.
- בדיקת הגירה: הרצת שני המנתחים זה לצד זה על אותו טווח תאריכים לאימות עקביות הפלט לפני המעבר.
תחילת העבודה
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"