Ir al contenido

Desconectar Banco

Elimina una conexión bancaria y opcionalmente sus transacciones.

  1. Haz clic en “Desconectar” en tarjeta de banco
  2. Confirma acción en diálogo:
    • ⚠️ “Eliminar también transacciones importadas” (opcional)
  3. Conexión se marca como disconnected
  • Conexión: Status cambia a disconnected
  • Transacciones: Se eliminan si marcaste checkbox (⚠️ irreversible)
  • Cuentas Open Banking: Se convierten a manuales si están en business_bank_accounts
  • Tokens: Se eliminan de base de datos

⚠️ Si eliminas transacciones reconciliadas, perderás los matches con gastosSi solo desconectas (sin eliminar), puedes reconectar y recuperar acceso

ErrorCausaSolución
”No puedes desconectar banco con transacciones reconciliadas”Protección de datosMarca “Eliminar transacciones” o exporta primero
Detalles de implementación

Desconexión suave (preservar datos):

async function disconnectBank(connectionId: string, deleteTransactions: boolean) {
if (deleteTransactions) {
// Eliminar transacciones
await supabase
.from('bank_transactions')
.delete()
.eq('connection_id', connectionId);
}
// Convertir cuentas Open Banking a manuales
await supabase
.from('business_bank_accounts')
.update({
source: 'manual',
bank_connection_id: null,
truelayer_account_id: null,
})
.eq('bank_connection_id', connectionId);
// Marcar conexión como desconectada
await supabase
.from('bank_connections')
.update({
status: 'disconnected',
access_token_encrypted: null, // Eliminar tokens
refresh_token_encrypted: null,
})
.eq('id', connectionId);
}

Cascade delete alternativo (eliminar todo):

-- Si prefieres eliminar conexión completamente:
DELETE FROM bank_connections
WHERE id = '<connection_id>';
-- Gracias a ON DELETE CASCADE, se eliminan:
-- - bank_accounts (FK: connection_id)
-- - bank_transactions (FK via bank_account_id)
-- - bank_sync_history (FK: connection_id)