ملخص: ستُوقف SWIFT تنسيق MT940 بحلول نوفمبر 2028. يتعامل Bank Statement Parser مع كل من MT940 وCAMT.053 بواجهة واحدة، بحيث يعمل خط التحليل أثناء الانتقال وبعده.
لماذا هذا الترحيل مهم
تُوقف SWIFT تنسيقات رسائل MT القديمة لصالح معيار ISO 20022 الأغنى. لفرق الخزانة والمالية، هذا يعني أن خطوط معالجة كشوفات الحساب يجب أن تتطور من MT940 إلى CAMT.053 قبل المواعيد النهائية الثابتة.
الجدول الزمني لترحيل SWIFT
| التاريخ | المحطة | التأثير |
|---|---|---|
| نوفمبر 2025 | انتهى التعايش بين MT و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 مع مساحات أسماء |
| تقارير الرصيد | افتتاحي/ختامي فقط | أنواع رصيد متعددة |
| المراجع | حقل مرجعي واحد | أنواع مراجع متعددة |
| التعامل مع العملات | أساسي | متعدد العملات بالكامل مع أسعار صرف |
كيف يساعد Bank Statement Parser
- واجهة موحدة: تحليل MT940 وCAMT.053 وكشوفات PDF بنفس سير العمل، مع إنتاج مخرجات DataFrame متسقة.
- اكتشاف تلقائي: لا حاجة لمعرفة التنسيق مسبقًا.
detect_statement_format()يحدده تلقائيًا. - خط أنابيب PDF هجين: البنوك التي تقدم كشوفات PDF فقط أثناء الانتقال تُعالج بـ
smart_ingest()مع تحقق تلقائي من الرصيد. - مستقل عن مساحة الاسم: يتعامل مع أي متغير CAMT.053 (001.02، 001.04، أو أغلفة خاصة بالبنك) بدون إعداد.
- تحقق متعدد العملات:
verify_balance_multi_currency()يُشغّل القاعدة الذهبية لكل مجموعة عملات — أساسي لكشوفات CAMT متعددة العملات. - بث: معالجة ملفات CAMT كبيرة (50 ميغابايت+، 50 ألف+ معاملة) بذاكرة محدودة.
- تصدير دفتر الأستاذ: تصدير مباشر إلى تنسيق يوميات 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"