संक्षेप में: SWIFT नवंबर 2028 तक MT940 retire कर देगा। Bank Statement Parser एक ही API से MT940 और CAMT.053 दोनों संभालता है, इसलिए आपकी parsing pipeline संक्रमण के दौरान और बाद में काम करती है।
यह माइग्रेशन क्यों मायने रखता है
SWIFT अधिक समृद्ध ISO 20022 मानक के पक्ष में पुराने MT message formats retire कर रहा है। ट्रेजरी और वित्त टीमों के लिए, इसका मतलब है कि आपकी बैंक स्टेटमेंट प्रोसेसिंग pipelines को कठिन deadlines से पहले MT940 से CAMT.053 तक विकसित होना होगा।
SWIFT माइग्रेशन Timeline
| तारीख | Milestone | प्रभाव |
|---|---|---|
| नवंबर 2025 | Cross-border payments के लिए MT-to-MX coexistence समाप्त | PACS messages अब केवल ISO 20022 हैं |
| नवंबर 2026 | Structured/hybrid addresses अनिवार्य; MT101 multi-instruction rejected; Case Management Phase 1 | Address formats compliant होने चाहिए; कुछ MT messages reject होंगे |
| 2026 के अंत में | CAMT.052/.053/.054 प्राप्त करने के लिए opt-in शुरू | वित्तीय संस्थान native ISO statements प्राप्त करना शुरू कर सकते हैं |
| नवंबर 2027 | सभी FI को natively CAMT.053 प्राप्त करना होगा | SWIFT MT format ���ो ISO में convert करना बंद कर देगा; आपके systems को CAMT सीधे parse करना होगा |
| नवंबर 2028 | MT940/MT942/MT950/MT900/MT910 पूरी तरह retired | Legacy statement formats अब उपलब्ध नहीं; CAMT.052/.053/.054 ही एकमात्र विकल्प |
आपके कोड ��ें क्या बदलता है
पहले: केवल MT940
from bankstatementparser import Mt940Parser
parser = Mt940Parser("statement.mt940")
df = parser.parse()
बाद में: Auto-Detection के साथ दोनों प्रारूप
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() function पहचानता है कि फ़ाइल MT940, CAMT.053, PAIN.001, या कोई अन्य समर्थित प्रारूप है। create_parser() function सही parser लौटाता है। आपका downstream कोड source format की परवाह किए बिना समान रूप से काम करता है।
CAMT.053 बनाम MT940: मुख्य अंतर
| विशेषता | MT940 | CAMT.053 |
|---|---|---|
| डेटा समृद्धि | सीमित fields | प्रति लेनदेन 3-5x अधिक डेटा |
| Character set | सीमित (SWIFT charset) | पूर्ण Unicode |
| संरच���ा | Tags के ���ाथ flat text | Namespaces के सा��� XML |
| बैलेंस रिपोर्टिंग | केवल opening/closing | कई balance types |
| References | एकल reference field | कई reference types |
| Currency handling | बुनियादी | Exchange rates के साथ पूर्ण multi-currency |
Bank Statement Parser कैसे मदद करता है
- एकीकृत API: MT940, CAMT.053, और PDF स्टेटमेंट को एक ही workflow से पार्स करें, consistent DataFrame output बनाते हुए।
- Auto-detection: Format पहले से जानने की ज़रूरत नहीं।
detect_statement_format()इसे अपने आप पहचानता है। - Hybrid PDF pipeline: जो बैंक transition के दौरान केवल PDF statements देते हैं, उन्हें
smart_ingest()स्वचालित balance verification के साथ संभालता है। - Namespace-agnostic: बिना configuration के किसी भी CAMT.053 variant (001.02, 001.04, या bank-specific wrappers) को संभालता है।
- Multi-currency verification:
verify_balance_multi_currency()प्रति currency group Golden Rule चला���ा है — multi-currency CAMT statements के लिए आवश्यक। - Streaming: सीमित मेमोरी के साथ बड़ी CAMT फ़ाइलें (50 MB+, 50K+ लेनदेन) प्रोसेस करें।
- Ledger निर्यात: Treasury accounting के लिए ��ीधे hledger या beancount journal format में निर्यात करें।
- माइग्रेशन testing: Switch करने से पहले output consistency verify करने के लिए एक ही date range पर दोनों parsers side-by-side चलाएं।
शुरू करना
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 statements के लिए जो अभी तक structured CAMT exports न���ीं देते:
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
assert result.verification.status == "VERIFIED"