> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fluz.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Volver a enlazar cuentas bancarias

Una conexión de Plaid previamente enlazada puede caerse; por ejemplo, cuando el usuario cambia sus credenciales bancarias. Mientras esté desconectada, Fluz no puede obtener saldos actualizados, por lo que debe repararse con un flujo de Link de Plaid en **update-mode** antes de que los saldos y el poder de gasto se actualicen nuevamente.

## Auth

Llama a `/api/v1/graphql` con un token Bearer de usuario de Fluz que incluya `MANAGE_PAYMENT`. La autenticación básica no está permitida en estos campos.

```http theme={null}
Authorization: Bearer <fluz-user-access-token>
```

## Detectar que se necesita volver a enlazar

Hay dos señales confiables:

1. `refreshPlaidBankConnections `**devuelve** `verifyMembers`**.** Cada entrada identifica una conexión que necesita reparación; usa su `platformItemId` para iniciar el flujo de re-enlace a continuación. (Consulta *Administrar el poder de gasto de cuentas bancarias* para esa mutación).
2. `createPlaidLinkToken `**falla** con `No active Plaid connection found for the provided platformItemId.` — la conexión almacenada ya no se puede volver a enlazar; guía al usuario a través de un enlace bancario **nuevo** en su lugar (consulta *Enlazar una cuenta bancaria de Plaid*).

## Flujo de re-enlace

Necesitarás el `platformItemId` almacenado de la conexión desconectada.

### 1. Crear un token de Link con el `platformItemId` almacenado

```graphql theme={null}
mutation CreatePlaidLinkToken($input: CreatePlaidLinkTokenInput!) {
  createPlaidLinkToken(input: $input) {
    linkToken
    expiration
    requestId
    mode
  }
}
```

```json theme={null}
{
  "input": {
    "platformItemId": "plaid-item-id"
  }
}
```

TGS usa `platformItemId` para recuperar el token de acceso de Plaid desde identity-service y luego le pide a identity-service que cree un token de Link de Plaid en modo de actualización (update-mode). El token de acceso nunca se devuelve al solicitante.

Para re-enlace **nativo**, también pasa `deviceOs` como `IOS` o `ANDROID`.

### 2. Abrir Plaid Link

Inicializa Plaid Link con el `linkToken` devuelto.

### 3. Completar el re-enlace

En `onSuccess` de Plaid Link, completa el flujo con **ambos** `publicToken` y el mismo `platformItemId`.

```graphql theme={null}
mutation CompletePlaidLink($input: CompletePlaidLinkInput!) {
  completePlaidLink(input: $input) {
    requiresAddress
    bankAccountId
    bankInstitutionAuthId
    newlyLinkedBankInstitutionAuthId
    bankInstitutionName
    platformItemId
    bankAccounts {
      bankInstitutionAuthId
      bankAccountId
      bankName
      lastFour
      type
      subtype
    }
  }
}
```

```json theme={null}
{
  "input": {
    "publicToken": "public-sandbox-...",
    "platformItemId": "plaid-item-id"
  }
}
```

### 4. Actualizar el `platformItemId` almacenado

Actualiza tu `platformItemId` almacenado desde la respuesta si cambió. Si no se devuelve, llama a `getPlaidBankAccounts` para el usuario y almacena el `platformItemId` persistido de esa respuesta.

## Usar el SDK Web para re-enlace

El helper compartido `startPlaidLink` en *Enlazar una cuenta bancaria de Plaid* maneja ambos casos. Llama `startPlaidLink(existingPlatformItemId)` para reparar una conexión desconectada; llama `startPlaidLink()` sin argumento para un enlace completamente nuevo.

## Manejo de errores

Si `createPlaidLinkToken` falla con `No active Plaid connection found for the provided platformItemId.`, trata la conexión almacenada como no reenlazable y guía al usuario a través de un nuevo enlace bancario.

Si un usuario inicia un enlace nuevo para la misma institución en lugar de elegir re-enlace, complétalo como un enlace nuevo normal: identity-service es responsable de la desduplicación y reparación de cuentas bancarias. Almacena el `platformItemId` devuelto después de la finalización.

<br />
