¿Por qué mi app me sigue avisando de transacciones que ya registré?
Porque tu app está viendo la misma compra dos veces. Un pago con tarjeta genera varios registros: una autorización pendiente, una liquidación posteada y a veces una fila del extracto encima, cada uno con un monto, una fecha o un nombre de comercio apenas distinto. Cuando la app no logra emparejarlos, trata al recién llegado como gasto nuevo y te avisa otra vez. Acá están las cinco causas de las alertas duplicadas y su solución.
Yo me gano la vida manejando un rastreador de gastos, así que veo esta queja desde los dos lados: como la persona que recibe la alerta y como la persona cuyo código decide si mandarla. Las alertas duplicadas no son un bug cosmético. Cada aviso falso te enseña a ignorar la app, y una app de plata ignorada es una app muerta. Este post explica de dónde salen los gemelos, cómo frenarlos en las apps populares y cómo poner a prueba cualquier app en tres minutos. Si todavía estás eligiendo con qué llevar tus gastos, la guía de campo es el mejor bot de finanzas para Telegram en 2026.
¿Qué causa las alertas de transacciones duplicadas en una app de finanzas?
Casi todas salen de cinco cosas: un cargo pendiente y su versión liquidada que no se emparejan, una reconexión bancaria que vuelve a traer historial ya enviado, la misma cuenta vinculada dos veces, un extracto importado encima de datos sincronizados, y dos personas registrando la misma compra a mano. Las cinco comparten una raíz: la app no tiene una identidad confiable para cada transacción, así que no distingue lo nuevo de lo ya visto.
Vale la pena quedarse un rato con esa raíz, porque explica por qué el problema es tan terco. Una transacción llega como un paquete de datos sueltos: una fecha, un monto, una etiqueta de comercio. Nada de eso es un ID estable. La fecha se mueve cuando el cargo liquida, el monto se mueve con la propina o la conversión de moneda, y el texto del comercio es lo que al procesador se le ocurrió escribir ese día. Emparejar dos paquetes es adivinar, y cada app dibuja la línea de confianza en un lugar distinto. Sobre la versión silenciosa de esta falla, donde las copias se acumulan sin avisos, escribí en por qué las apps de presupuesto duplican transacciones.
¿Por qué una sola compra con tarjeta aparece como dos transacciones?
Porque una compra con tarjeta son dos eventos por diseño. En la terminal, el banco coloca una autorización pendiente por un monto estimado. Días después el comercio liquida, y el monto posteado reemplaza al pendiente. Si la propina cambió el total, la liquidación difiere de la autorización, el matcher de la app no encuentra el par y recibís una segunda alerta por plata que gastaste el martes.
Algunas categorías de comercio reinciden siempre. La estación de servicio autoriza un monto de relleno cuando cargás nafta y liquida el real. El hotel autoriza la habitación más el depósito de garantía y liquida otra cosa. El restaurante liquida con la propina sumada. Y si comprás en dólares con una tarjeta en pesos, el tipo de cambio de la liquidación casi nunca es el de la autorización, así que los montos no coinciden al centavo. El texto del comercio también muta: la fila pendiente dice una cosa y la posteada dice MERPAGO*ALGO o AMZN MKTP, y el matcher queda comparando dos desconocidos. Las cuotas agregan su propio ruido: una compra en tres cuotas aparece como un cargo por mes con el mismo nombre, y más de un matcher las confunde con repeticiones.
¿Cómo frenás las alertas duplicadas en YNAB, Monarch o Rocket Money?
Arreglá la conexión, no la alerta individual. En YNAB, usá la herramienta de match para que una transacción importada se fusione con la que cargaste, en lugar de borrar alguna. En Monarch, abrí la configuración de instituciones y fijate si la misma cuenta está conectada dos veces, que es el primer paso de soporte del propio Monarch. En Rocket Money casi no hay control manual: desvinculá el banco y volvé a conectarlo.
El hábito que empeora a las tres es borrar la copia a mano cada vez que aparece. Borrar se siente como una solución, pero en la próxima sincronización el feed puede reenviar la fila y la app, al no encontrar match, la importa de nuevo. Emparejar o fusionar es más lento una vez y permanente. Si los duplicados llegaron en bloque después de reautorizar el login del banco, eso es backfill: la conexión volvió a traer una ventana de historial. La mayoría de las apps lo deduplica en silencio; cuando fallan, seleccioná el bloque por rango de fechas y borralo una sola vez. Comparé cómo lo manejan las dos apps de sincronización más fuertes en Capi vs Monarch y Capi vs YNAB.
¿Cómo decide Capi que una transacción es un duplicado?
Capi identifica cada fila importada del extracto con un hash de su contenido, llamado source_row_hash internamente. Una fila cuyo hash ya existe se descarta, no se importa. Una fila casi igual, mismo monto con uno o dos días de diferencia y un comercio parecido, aparece como candidata para que decidas vos. Y cada importación termina con un conteo de cuántas filas salteó como duplicadas, así que el dedup se puede auditar.
Capi puede ser más estricto acá por una decisión de diseño: no hay conexión bancaria en vivo. Registrás el gasto en el momento en que pasa, escribiendo una línea en Telegram, mandando una nota de voz o sacándole una foto al ticket, y opcionalmente importás el resumen cerrado a fin de mes. Sin feed no existe la versión pendiente de nada, así que el duplicado más común de las apps de sincronización no puede ocurrir. La importación del extracto es el único lugar por donde podría colarse un duplicado, y ahí es exactamente donde está el hashing.
Una confesión, porque este post es sobre confianza. En mayo nuestro propio dedup tuvo un bug: el preview marcaba bien las filas duplicadas, pero el paso de commit ignoraba las marcas e importaba todo. El contador de salteos quedó en cero mientras las copias entraban por la puerta principal. Lo encontramos usando el producto con nuestra propia plata, arreglamos 25 filas a mano, corregimos el código y contamos la historia completa en el postmortem del dedup. El contador ahora reporta números reales, y esa es la única razón por la que dejo que esta sección presuma.
¿Cómo podés probar si tu app duplica transacciones?
Hacé el test de re-importación. Exportá un resumen cerrado de tu banco, importalo en la app y anotá el total del mes. Después importá exactamente el mismo archivo otra vez. Una app con deduplicación real muestra el mismo total; una app sin ella acaba de duplicar tu supermercado. Todo el test toma unos tres minutos y no requiere ninguna habilidad técnica.
Tengo las instrucciones paso a paso en el test de re-importación del extracto, y una versión enfocada en encontrar copias que ya se colaron en cómo verificar duplicados en tu extracto. Si tu app falla el test, no necesitás cambiar de app de inmediato; necesitás saber que cada importación de extracto exige una conciliación manual al final. Conocer el modo de falla es la mayor parte de la protección.
¿Cuándo una alerta duplicada es en realidad un cobro doble?
Cuando el resumen del banco muestra el monto dos veces. Los cobros dobles de comercios existen: una terminal se cuelga y el cajero pasa la tarjeta de nuevo, una suscripción factura en la conversión de la prueba y también en el ciclo, una tienda que despacha en partes cobra por envío. Dos montos idénticos del mismo comercio con minutos de diferencia son un error de facturación que vale reclamar, no un eco de la app.
La ironía del problema de los duplicados es que la app es justamente útil acá. Una app que nunca da falsas alarmas se convierte en la herramienta que atrapa el cobro doble verdadero, porque aprendiste que sus alertas significan algo. Por eso también importa qué app elegís: la diferencia entre un dedup que funciona y uno que no funciona es la diferencia entre un sistema de alarma y la alarma de un auto que suena en un estacionamiento donde nadie mira.
¿Cómo manejan las apps populares las transacciones duplicadas?
El panorama: las apps con sincronización pelean contra los duplicados a nivel del feed, con matchers que no podés ver, y su modo de falla es el eco de pendiente contra liquidado. Las apps de importación pelean a nivel del archivo, y su modo de falla es un extracto re-importado. Lo que separa a las herramientas no es si los duplicados aparecen, sino si podés ver qué hizo el dedup y corregirlo cuando adivina mal.
| App | De dónde salen las alertas duplicadas | Defensa integrada | ¿Se puede auditar? | Precio (2026) |
|---|---|---|---|---|
| Capi | Re-importaciones de extracto | Hash por fila, salteos reportados en cada importación | Sí, muestra el conteo de salteos | Gratis 30 tx/mes, Core US$ 69,90/año |
| YNAB | Pendiente vs liquidado, manual + importación superpuestas | Flujo de match y aprobación | En parte, aprobás cada match | US$ 14,99/mes o US$ 109/año |
| Monarch | Cuentas vinculadas dos veces, backfill al reautorizar | Matcher del feed, revisión de conexiones | Limitado, el matcher es silencioso | US$ 99,99/año |
| Rocket Money | Vínculos bancarios viejos, actualización del feed | Automática, sin fusión manual | No | Gratis, Premium ~US$ 6-12/mes |
Los precios son de julio de 2026 y se mueven seguido; tomalos como la forma del mercado y no como palabra santa. El plan Core de Capi también existe en versión mensual, US$ 9,90/mes, si preferís probar antes de comprometerte al año. La columna de auditoría es la que yo más pesaría: todo matcher adivina mal tarde o temprano, y las apps que muestran su trabajo te dejan corregir la adivinanza en vez de descubrirla en diciembre.
Una alerta tiene que significar que pasó algo.
Capi lleva tus gastos dentro de Telegram, por texto, nota de voz o foto del ticket, en cualquier moneda.
Las importaciones de extracto se deduplican fila por fila, y cada importación reporta lo que salteó. Gratis hasta 30 transacciones por mes.
Preguntas frecuentes sobre alertas de transacciones duplicadas
¿Por qué mi app de finanzas muestra la misma transacción dos veces?
Casi siempre porque una sola compra generó dos registros que no lograron emparejarse: una autorización pendiente y la liquidación posteada, una fila importada del extracto encima de una sincronizada, o la misma cuenta conectada dos veces. Los montos o los nombres del comercio difieren un poco, el matcher se rinde y las dos filas sobreviven. Arreglá la fuente y los gemelos desaparecen; borrar uno a mano solo cura ese día.
¿Una alerta duplicada significa que me cobraron dos veces?
Rara vez. La mayoría de las alertas duplicadas son ecos contables de un solo cobro que pasa de pendiente a liquidado. Revisá el resumen real del banco, no la app: si el monto aparece una sola vez, te cobraron una sola vez. Si aparecen dos cargos idénticos del mismo comercio con minutos de diferencia, eso sí es un cobro doble real y el reclamo al banco suele funcionar.
¿Borrar una transacción duplicada puede arruinar mi presupuesto?
Borrar la copia es seguro; el error común es borrar también el original. Antes de borrar nada, confirmá qué fila coincide con el resumen del banco y quedate con esa. En apps con sincronización bancaria, preferí la herramienta de match o fusión en lugar de borrar, porque una transacción sincronizada que borraste puede reimportarse en la próxima actualización y la alerta vuelve.
¿Por qué reaparecieron transacciones viejas después de reconectar mi banco?
Reconectar un banco suele disparar un backfill: la conexión nueva vuelve a traer entre 30 y 90 días de historial, y toda fila que la app no logra emparejar con una existente entra como nueva. Algunas apps deduplican esto bien, otras no. Antes de reautorizar, anotá tu saldo y la cantidad de transacciones, y comparalos después para detectar y borrar en bloque lo reimportado.
¿Capi manda alertas duplicadas?
No debería, y lo podés comprobar. Capi no tiene conexión bancaria en vivo, así que el eco de pendiente contra liquidado no puede pasar. Cada fila importada del extracto se identifica con un hash, las repeticiones exactas se descartan, las casi iguales aparecen para que decidas, y cada importación reporta cuántas filas salteó como duplicadas. Cuando rompimos esa protección nosotros mismos en mayo, publicamos el postmortem.