لماذا هذا الترحيل مهم
تقوم SWIFT بإيقاف تنسيقات رسائل MT القديمة لصالح معيار ISO 20022 الأكثر ثراءً بالبيانات. بالنسبة لفرق الخزينة والمالية، يعني هذا أن خطوط أنابيب معالجة كشوف الحسابات البنكية يجب أن تتطور من MT940 إلى CAMT.053 قبل المواعيد النهائية الإلزامية.
الجدول الزمني لترحيل SWIFT
| التاريخ | المرحلة | الأثر |
|---|---|---|
| نوفمبر 2025 | انتهاء فترة التعايش بين MT وMX للمدفوعات عبر الحدود | رسائل PACS أصبحت بتنسيق ISO 20022 فقط |
| نوفمبر 2026 | العناوين المهيكلة/الهجينة إلزامية؛ رفض MT101 متعدد التعليمات؛ المرحلة الأولى لإدارة الحالات | يجب أن تتوافق تنسيقات العناوين؛ سيتم رفض بعض رسائل 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 مع مساحات أسماء |
| تقارير الأرصدة | الافتتاحي/الختامي فقط | أنواع أرصدة متعددة |
| المراجع | حقل مرجع واحد | أنواع مراجع متعددة |
| التعامل مع العملات | أساسي | دعم كامل للعملات المتعددة مع أسعار الصرف |
كيف يساعدك محلل كشوف الحسابات البنكية
- API موحد: حلل كلاً من MT940 وCAMT.053 بنفس طريقة
parse()، مع إنتاج مخططات DataFrame متطابقة. - كشف تلقائي: لا حاجة لمعرفة التنسيق مسبقاً. تحدده
detect_statement_format()تلقائياً. - مستقل عن مساحات الأسماء: يتعامل مع أي متغير من CAMT.053 (001.02 أو 001.04 أو أغلفة خاصة بالبنوك) بدون إعدادات.
- streaming: معالجة ملفات CAMT الكبيرة (أكثر من 50 ميجابايت، أكثر من 50,000 معاملة) مع استخدام ذاكرة محدود.
- اختبار الترحيل: شغّل كلا المحللين جنباً إلى جنب على نفس النطاق الزمني للتحقق من اتساق المخرجات قبل التبديل.
البدء
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