TL;DR: SWIFT নভেম্বর 2028 এর মধ্যে MT940 বাতিল করবে। Bank Statement Parser একটি একক API দিয়ে MT940 ও CAMT.053 উভয়ই পরিচালনা করে, তাই আপনার parsing pipeline রূপান্তরের সময় ও পরে কাজ করে।
কেন এই মাইগ্রেশন গুরুত্বপূর্ণ
SWIFT আরও সমৃদ্ধ ISO 20022 স্ট্যান্ডার্ডের পক্ষে legacy MT message ফর্ম্যাট বাতিল করছে। ট্রেজারি ও ফাইন্যান্স টিমের জন্য এর অর্থ হলো আপনার ব্যাঙ্ক স্টেটমেন্ট processing pipeline কঠিন সময়সীমার আগে MT940 থেকে CAMT.053-এ বিবর্তিত হতে হবে।
SWIFT মাইগ্রেশন টাইমলাইন
| তারিখ | মাইলফলক | প্রভাব |
|---|---|---|
| নভেম্বর 2025 | আন্তঃসীমান্ত পেমেন্টের জন্য MT-to-MX সহাবস্থান শেষ | PACS message এখন শুধুমাত্র ISO 20022 |
| নভেম্বর 2026 | Structured/hybrid ঠিকানা বাধ্যতামূলক; MT101 multi-instruction প্রত্যাখ্যান; Case Management Phase 1 | ঠিকানা ফর্ম্যাট মেনে চলতে হবে; কিছু MT message প্রত্যাখ্যান হবে |
| 2026 সালের শেষে | CAMT.052/.053/.054 গ্রহণের জন্য opt-in শুরু | আর্থিক প্রতিষ্ঠান native ISO স্টেটমেন্ট পেতে শুরু করতে পারে |
| নভেম্বর 2027 | সমস্ত FI অবশ্যই নেটিভভাবে CAMT.053 গ্রহণ করবে | SWIFT MT ফর্ম্যাট ISO-তে রূপান্তর বন্ধ করবে; আপনার সিস্টেমকে সরাসরি CAMT পার্স করতে হবে |
| নভেম্বর 2028 | MT940/MT942/MT950/MT900/MT910 সম্পূর্ণ বাতিল | Legacy স্টেটমেন্ট ফর্ম্যাট আর পাওয়া যাবে না; 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() ফাংশন সঠিক পার্সার ফেরত দেয়। সোর্স ফর্ম্যাট নির্বিশেষে আপনার downstream কোড একইভাবে কাজ করে।
CAMT.053 বনাম MT940: মূল পার্থক্য
| বৈশিষ্ট্য | MT940 | CAMT.053 |
|---|---|---|
| ডেটা সমৃদ্ধি | সীমিত ক্ষেত্র | প্রতি লেনদেনে 3-5 গুণ বেশি ডেটা |
| Character set | সীমিত (SWIFT charset) | সম্পূর্ণ Unicode |
| কাঠামো | ট্যাগ সহ flat text | Namespace সহ XML |
| Balance reporting | শুধু opening/closing | একাধিক balance type |
| Reference | একক reference ক্ষেত্র | একাধিক reference type |
| মুদ্রা পরিচালনা | মৌলিক | Exchange rate সহ সম্পূর্ণ multi-currency |
Bank Statement Parser কীভাবে সাহায্য করে
- Unified API: MT940, CAMT.053, এবং PDF স্টেটমেন্ট একই ওয়ার্কফ্লোতে পার্স করুন, সামঞ্জস্যপূর্ণ DataFrame আউটপুট তৈরি করে।
- Auto-detection: ফর্ম্যাট আগে থেকে জানার দরকার নেই।
detect_statement_format()স্বয়ংক্রিয়ভাবে শনাক্ত করে। - Hybrid PDF pipeline: রূপান্তরের সময় যেসব ব্যাঙ্ক শুধু PDF স্টেটমেন্ট দেয়, সেগুলো
smart_ingest()স্বয়ংক্রিয় ব্যালেন্স যাচাই সহ পরিচালনা করে। - Namespace-agnostic: কনফিগারেশন ছাড়াই যেকোনো CAMT.053 variant (001.02, 001.04, বা ব্যাঙ্ক-নির্দিষ্ট wrapper) পরিচালনা করে।
- Multi-currency verification:
verify_balance_multi_currency()প্রতি currency group-এ Golden Rule চালায় — multi-currency CAMT স্টেটমেন্টের জন্য অপরিহার্য। - Streaming: সীমাবদ্ধ মেমরি সহ বড় CAMT ফাইল (50 MB+, 50K+ লেনদেন) প্রক্রিয়া করুন।
- Ledger export: ট্রেজারি accounting-এর জন্য সরাসরি hledger বা beancount জার্নাল ফর্ম্যাটে এক্সপোর্ট করুন।
- Migration testing: সুইচ করার আগে আউটপুট সামঞ্জস্য যাচাই করতে একই তারিখ range-এ উভয় পার্সার পাশাপাশি চালান।
শুরু করুন
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
যেসব ব্যাঙ্ক এখনো structured CAMT export দেয় না তাদের PDF স্টেটমেন্টের জন্য:
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
assert result.verification.status == "VERIFIED"
বিকল্পের সাথে তুলনা করুন ❯ | বাস্তব ব্যবহারের ক্ষেত্র দেখুন ❯