TL;DR: SWIFT retirará MT940 en noviembre de 2028. Bank Statement Parser maneja tanto MT940 como CAMT.053 con una única API, para que su pipeline de análisis funcione durante la transición y después.
Por qué es importante esta migración
SWIFT está retirando los formatos de mensajes MT heredados en favor del estándar ISO 20022, más completo. Para los equipos de tesorería y finanzas, esto significa que sus pipelines de procesamiento de extractos bancarios deben evolucionar de MT940 a CAMT.053 antes de los plazos estrictos.
Cronograma de migración de SWIFT
| Fecha | Hito | Impacto |
|---|---|---|
| Noviembre 2025 | Finaliza la coexistencia MT-MX para pagos transfronterizos | Los mensajes PACS ahora son solo ISO 20022 |
| Noviembre 2026 | Direcciones estructuradas/híbridas obligatorias; instrucción múltiple MT101 rechazada; Fase 1 de Gestión de Casos | Los formatos de dirección deben cumplir; algunos mensajes MT serán rechazados |
| Finales de 2026 | Comienza la inscripción para recibir CAMT.052/.053/.054 | Las instituciones financieras pueden empezar a recibir extractos ISO nativos |
| Noviembre 2027 | Todas las IF deben recibir CAMT.053 de forma nativa | SWIFT deja de convertir formato MT a ISO; sus sistemas deben analizar CAMT directamente |
| Noviembre 2028 | MT940/MT942/MT950/MT900/MT910 completamente retirados | Los formatos de extractos heredados ya no estarán disponibles; CAMT.052/.053/.054 son la única opción |
Qué cambia en su código
Antes: solo MT940
from bankstatementparser import Mt940Parser
parser = Mt940Parser("statement.mt940")
df = parser.parse()
Después: ambos formatos con detección automática
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
La función detect_statement_format() identifica si el archivo es MT940, CAMT.053, PAIN.001 o cualquier otro formato compatible. La función create_parser() devuelve el analizador correcto. Su código posterior funciona de forma idéntica independientemente del formato de origen.
CAMT.053 vs MT940: diferencias clave
| Característica | MT940 | CAMT.053 |
|---|---|---|
| Riqueza de datos | Campos limitados | 3-5 veces más datos por transacción |
| Juego de caracteres | Limitado (charset SWIFT) | Unicode completo |
| Estructura | Texto plano con etiquetas | XML con namespaces |
| Informes de saldo | Solo apertura/cierre | Múltiples tipos de saldo |
| Referencias | Campo de referencia único | Múltiples tipos de referencia |
| Manejo de divisa | Básico | Multidivisa completa con tipos de cambio |
Cómo ayuda Bank Statement Parser
- API unificada: Analice MT940, CAMT.053 y extractos PDF con el mismo flujo de trabajo, produciendo salida DataFrame consistente.
- Autodetección: No necesita conocer el formato de antemano.
detect_statement_format()lo identifica automáticamente. - Pipeline híbrido para PDF: Los bancos que solo proporcionan extractos en PDF durante la transición se procesan con
smart_ingest()y verificación automática de saldo. - Independiente del namespace: Maneja cualquier variante de CAMT.053 (001.02, 001.04 o envolturas específicas de banco) sin configuración.
- Verificación multidivisa:
verify_balance_multi_currency()ejecuta la Regla de Oro por grupo de divisa — esencial para extractos CAMT multidivisa. - Streaming: Procese archivos CAMT grandes (50 MB+, 50K+ transacciones) con memoria acotada.
- Exportación contable: Exporte directamente a formato de diario hledger o beancount para contabilidad de tesorería.
- Pruebas de migración: Ejecute ambos analizadores en paralelo sobre el mismo rango de fechas para verificar la consistencia de la salida antes de cambiar.
Primeros pasos
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
Para extractos PDF de bancos que aún no ofrecen exportaciones CAMT estructuradas:
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
assert result.verification.status == "VERIFIED"
Comparar con alternativas ❯ | Ver casos de uso del mundo real ❯