Bank Statement Parser gestiona flujos de trabajo financieros reales: ingesta de extractos bancarios en PDF, migración de MT940 a CAMT, conciliación automatizada con verificación de saldo, pipelines de cumplimiento, exportación a contabilidad en texto plano, despliegues de REST API, escaneo masivo y consolidación multibanca.
Ingesta de extractos bancarios en PDF
Resultado: Analice extractos bancarios en PDF digitales y escaneados con verificación automática de saldo — sin APIs en la nube, ningún dato sale de su máquina.
El pipeline híbrido para PDF enruta cada PDF por la ruta de extracción óptima y verifica cada resultado.
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
print(result.source_method) # "deterministic" | "llm" | "vision"
print(result.verification.status) # VERIFIED | DISCREPANCY | FAILED
# Review discrepancies interactively
# bankstatementparser --type review --input result.json
Procesamiento masivo de extractos
Resultado: Escanee árboles de carpetas completos (cientos de PDFs, XMLs, CSVs) con deduplicación automática entre archivos en una sola llamada.
from bankstatementparser.hybrid import scan_and_ingest
batch = scan_and_ingest("statements/2026/", pattern="**/*.pdf")
print(f"Files: {len(batch.results)}, Unique txns: {batch.unique_count}")
Tesorería: migración de MT940 a CAMT.053
Resultado: Una única llamada API maneja tanto MT940 como CAMT.053 durante la ventana de migración de SWIFT (noviembre 2025–noviembre 2028), eliminando la necesidad de pipelines de análisis separados.
Los equipos de tesorería de todo el mundo están migrando de MT940 a CAMT.053 antes de la fecha límite de SWIFT de noviembre de 2027. Bank Statement Parser maneja ambos formatos con una única API, haciendo que la transición sea transparente.
from bankstatementparser import create_parser, detect_statement_format
# Process both MT940 and CAMT.053 with the same code
for file in daily_statement_files:
fmt = detect_statement_format(file)
parser = create_parser(file, fmt)
df = parser.parse()
load_to_treasury_system(df)
Conciliación automatizada con verificación de saldo
Resultado: DataFrames independientes del formato con verificación de la Regla de Oro y deduplicación detectan errores y duplicados antes de que lleguen a su libro mayor.
Analice extractos bancarios, verifique saldos y coteje con registros internos de forma automática.
from bankstatementparser import CamtParser, Deduplicator
from bankstatementparser.hybrid import verify_balance_multi_currency
parser = CamtParser("bank_statement.xml")
bank_txns = parser.parse()
# Verify balances per currency
verification = verify_balance_multi_currency(bank_txns)
for ccy, result in verification.items():
assert result.status == "VERIFIED", f"{ccy} balance mismatch!"
# Deduplicate before reconciliation
dedup = Deduplicator()
result = dedup.deduplicate(dedup.from_dataframe(bank_txns))
clean_txns = result.unique_transactions
# Match against internal records
unmatched = reconcile(clean_txns, internal_ledger)
Contabilidad en texto plano (hledger / beancount)
Resultado: Ingeste automáticamente extractos bancarios en PDF y exporte transacciones categorizadas a formato de diario hledger o beancount.
from bankstatementparser.hybrid import smart_ingest
from bankstatementparser.enrichment import Categorizer
from bankstatementparser.export import to_hledger
result = smart_ingest("statement.pdf")
categorizer = Categorizer()
enriched = categorizer.categorize_batch(result.transactions)
journal = to_hledger(enriched, account="Assets:Bank:Checking")
Despliegue de REST API
Resultado: Despliegue Bank Statement Parser como microservicio que acepta archivos de extractos vía HTTP y devuelve JSON estructurado.
# Start the API server
bankstatementparser-api --port 8000
# Ingest a statement
curl -X POST http://localhost:8000/ingest \
-F "file=@statement.pdf"
Pipelines de cumplimiento y auditoría
Resultado: La salida determinista, la redacción automática de PII y la verificación de la Regla de Oro producen registros listos para auditoría que cumplen los requisitos normativos de reproducibilidad.
from bankstatementparser import CamtParser
parser = CamtParser("statement.xml")
# Stream with PII redacted for audit logs
for txn in parser.parse_streaming(redact_pii=True):
audit_log.write(txn)
# Export full data for secure internal processing
parser.export_csv("archive/statement.csv")
Flujos de trabajo SFTP a DataFrame
Resultado: Analice directamente desde bytes sin E/S de disco, integrándose de forma nativa en flujos de conectividad bancaria basados en SFTP y API.
from bankstatementparser import CamtParser
xml_bytes = sftp_client.read("daily_statement.xml")
parser = CamtParser.from_bytes(xml_bytes, source_name="daily.xml")
df = parser.parse()
Consolidación multibanca
Resultado: El análisis paralelo entre HSBC (CAMT), Barclays (MT940), Revolut (CSV), Wise (OFX) y Chase (PDF) produce un único conjunto de datos normalizado.
from bankstatementparser import parse_files_parallel
results = parse_files_parallel([
"hsbc/camt053.xml",
"barclays/mt940.sta",
"revolut/transactions.csv",
"wise/statement.ofx",
])
all_transactions = pd.concat([r.transactions for r in results if r.status == "success"])
Procesamiento por lotes con archivos ZIP
Resultado: La protección contra ZIP bomb integrada (límite de ratio 100:1, límite de entrada de 10 MB, rechazo de entradas cifradas) le permite procesar archivos de extractos mensuales de forma segura.
from bankstatementparser import iter_secure_xml_entries, CamtParser
for entry in iter_secure_xml_entries("monthly_statements.zip"):
parser = CamtParser.from_bytes(entry.xml_bytes, source_name=entry.source_name)
df = parser.parse()
save_to_warehouse(entry.source_name, df)
Comparar con alternativas ❯ | Planifique su migración ISO 20022 ❯ | Comenzar ❯