Código abierto · v0.3.0

Tus estados de cuenta, listos para la IA. Sin tus datos personales.

mxbank lee estados de cuenta de bancos mexicanos en PDF en tu computadora, extrae saldos y movimientos, elimina todo lo que te identifica y entrega un JSON que ya puedes compartir con cualquier asistente.

100 % localCifras conciliadasFalla cerrado ante la dudaApache 2.0

Subir el PDF expone mucho más que tus gastos

Un estado de cuenta trae tu identidad completa y datos de otras personas. Para entender tus finanzas, una IA solo necesita los movimientos.

Lo que trae el PDF y mxbank elimina

NombreDomicilioRFC y CURP Número de tarjetaCLABENúmero de cliente Sucursal y ejecutivoNombres de a quién transfieres Cuentas de tercerosClaves de rastreoFolio fiscal y sellos

Lo que recibe la IA

FechaComercioMontoTipo de movimiento Saldos del periodoPago mínimo y fecha límiteMeses sin intereses Compras en dólaresSeudónimos estables

Cómo funciona

Todo ocurre en memoria, en tu equipo. Si cualquier paso tiene dudas, no se emite nada.

Lee el PDF

Extrae el texto con sus coordenadas. Sin red y sin archivos temporales.

Detecta el banco

Reconoce el formato por sus huellas; si no lo conoce, lo rechaza.

Extrae

Saldos, movimientos, meses sin intereses y datos de la tarjeta.

Concilia

Verifica que todo cuadre con los saldos y totales del propio banco.

Redacta

Construye la salida campo por campo y quita o seudonimiza cada dato personal.

Escaneo final

Revisa el JSON completo; ante cualquier sospecha sale con código 40.

Pensado para finanzas personales con IA

Una herramienta de línea de comandos predecible, que un agente puede usar sin ver nunca el documento original.

100 % local

Sin red, sin telemetría y sin archivos temporales. El PDF nunca sale de tu máquina.

Falla cerrado

Un escáner final revisa el JSON; si detecta algo sospechoso, no entrega nada.

Cifras verificadas

Cada estado se concilia contra sus saldos y contra los totales que reporta el banco.

Hecho para agentes

JSON en stdout, errores en JSON, códigos de salida estables y JSON Schema publicado.

Tarjetas de crédito

Pago mínimo, pago para no generar intereses, CAT, meses sin intereses y compras en dólares.

Seudónimos estables

La misma cuenta o contraparte recibe el mismo alias cada mes, sin revelar quién es.

Bancos soportados

Cada formato se valida con estados de cuenta reales antes de publicarse. Si un PDF no corresponde a un formato conocido, mxbank lo rechaza en lugar de adivinar.

BancoProductoValidación
BBVA MéxicoCuenta de débito4 estados reales · conciliación, totales y saldo por día exactos
BBVA MéxicoTarjeta de crédito4 estados reales · conciliación y totales exactos
BanCoppelCuenta de débito digital1 estado real · conciliación, totales y saldo por movimiento exactos

¿Quieres otro banco? La guía para agregar uno explica cómo estudiar el formato sin exponer datos.

Qué pasa con cada dato

La salida se construye a partir de una lista cerrada de campos: el encabezado del estado de cuenta no tiene a dónde ir.

DatoTratamiento
Nombre, domicilio, RFC, CURP, número de cliente, sucursalSe elimina
Tarjeta completa, CLABE, «Tarjeta Digital ***1234»Se elimina
Claves de rastreo y referenciasSe elimina
Número de cuenta propiaSeudónimo + últimos 4 dígitos (se omiten en modo estricto)
Personas y cuentas a las que transfieresSeudónimo nunca el nombre ni la cuenta
Conceptos libres de transferenciasSe omiten o se incluyen redactados con --include-concepts
Comercio, monto y fecha de cada movimientoSe conserva

Si tu nombre o tu colonia aparecen dentro de un movimiento (por ejemplo en el nombre de una sucursal), se reemplazan por [DATO]. Y si después de todo el escáner final sospecha de algo, mxbank no emite el JSON y te dice qué campo revisar, nunca el valor.

Para agentes de IA

El agente invoca mxbank como herramienta, lee el JSON y razona sobre tus movimientos sin ver nunca el PDF.

  • Resultado en stdout, diagnósticos en stderr.
  • Códigos de salida documentados: 0 éxito, 11 contraseña, 20 banco no soportado, 40 PII detectada.
  • mxbank schema publica el JSON Schema completo.
  • Reglas listas para copiar en AGENT.md.
conversación con un agente
Usuario: ¿en qué gasté más este mes?

Agente:  mxbank extract tarjeta_sep.pdf   # exit 0
         agrupa los movimientos con amount < 0,
         excluye pagos a la tarjeta,
         responde con las 5 categorías principales.

¿Usas Claude Code? Instala el skill mxbank

Claude Code lo carga solo cuando le pides revisar, resumir o graficar un estado de cuenta. Así la sesión sabe usar mxbank en lugar de abrir el PDF, qué movimientos no son gasto (pagos a la tarjeta, traslados a meses), cómo detectar cargos recurrentes y cómo verificar las sumas contra el banco. Dentro de un clon del repositorio ya está disponible; para tenerlo en todas tus sesiones:

macOS / Linux
mkdir -p ~/.claude/skills/mxbank && curl -fsSL https://raw.githubusercontent.com/howware/mx-bank-statement-reader/main/.claude/skills/mxbank/SKILL.md -o ~/.claude/skills/mxbank/SKILL.md
Windows (PowerShell)
New-Item -ItemType Directory -Force "$HOME\.claude\skills\mxbank" | Out-Null; Invoke-WebRequest https://raw.githubusercontent.com/howware/mx-bank-statement-reader/main/.claude/skills/mxbank/SKILL.md -OutFile "$HOME\.claude\skills\mxbank\SKILL.md"

Reinicia Claude Code y pide, por ejemplo: «analiza mis gastos del estado de cuenta tarjeta_sep.pdf». Para actualizarlo, vuelve a ejecutar el mismo comando. Ver el skill

Instalación

Requiere Python 3.12 o superior y uv.

Clonar e instalar
git clone https://github.com/howware/mx-bank-statement-reader.git
cd mx-bank-statement-reader
uv tool install .
Verificar
mxbank banks

Uso

Los secretos se pasan por variable de entorno, nunca como argumento.

Un estado de cuenta
mxbank extract estado.pdf --pretty
Toda una carpeta
mxbank extract carpeta/ --ndjson > movimientos.jsonl
PDF con contraseña y alias estables entre meses
mxbank extract estado.pdf --password-env MXBANK_PDF_PASSWORD --pseudonym-key-env MXBANK_KEY