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

# Espera los resultados usando un Webhook Endpoint

Cuando solicitas un Refresh Intent, la actualización no es inmediata. Fintoc primero necesita ir al banco a buscar nuevos movimientos y el tiempo que esto puede tomar depende del banco y su estado de conexión, pero normalmente toma entre 1 y 3 minutos. Por lo tanto, no necesitas preguntar si la actualización terminó cada 5 segundos, debes crear un Webhook Endpoint, donde te notificaremos a través de un Event cuando el Refresh Intent se haya completado.

Por cada cuenta en tu Link, te enviaremos un evento. Por ejemplo, si tu Link tiene tres cuentas, recibirás tres eventos, cada uno conteniendo el resultado de la actualización de cada cuenta. Ten en cuenta que los tres resultados podrían ser diferentes, y el Refresh Intent se marcará como exitoso solo si **cada cuenta** se actualiza exitosamente.

## Si todo sale bien

Si la actualización va según lo planeado al actualizar una cuenta, te enviaremos un evento `account.refresh_intent.succeeded` que se ve así:

```json theme={null}
{
  "id": "evt_00000000",
  "type": "account.refresh_intent.succeeded",
  "mode": "live",
  "created_at": "2021-12-07T21:43:54.343Z",
  "data": {
    "object": "refresh_intent",
    "refreshed_object": "account",
    "refreshed_object_id": "acc_00000000",
    "status": "succeeded",
    "public_error": null,
    "created_at": "2021-12-03T00:00:00.000Z",
    "type": "only_last",
    "new_movements": 5
  },
  "object": "event"
}
```

Dentro de la clave `data`, encontrarás el detalle sobre la actualización. En este caso, la cuenta con `id: acc_00000000` se actualizó exitosamente, ya que su `status` es `succeeded`. El campo `new_movements` indica cuántos movimientos nuevos se encontraron durante la actualización. Si este número es distinto de cero, deberías consultar el endpoint List Movements para obtener los nuevos movimientos. Si ese número es cero, puedes asumir que ya tienes los últimos movimientos.

<Info>
  **Bajo demanda, recurrente y el campo `new_movements`**

  El campo `new_movements` se refiere a la cantidad de movimientos nuevos después de la actualización, y no desde la última vez que llamaste a la API, así que debes tener cuidado si tu cuenta también tiene actualizaciones recurrentes, ya que `new_movements` de una actualización puede no ser la cantidad de movimientos nuevos desde la última vez que solicitaste movimientos a Fintoc.
</Info>

## Si algo sale mal

Si la actualización falla, por ejemplo si la aplicación del banco está caída, te enviaremos un evento `account.refresh_intent.failed`.

```json theme={null}
{
  "id": "evt_00000000",
  "type": "account.refresh_intent.failed",
  "mode": "test",
  "created_at": "2021-12-07T21:56:07.711Z",
  "data": {
    "object": "refresh_intent",
    "refreshed_object": "account",
    "refreshed_object_id": "acc_00000001",
    "status": "failed",
    "public_error": "retryable_error/support_required_error",
    "created_at": "2021-12-07T00:00:00.000Z",
    "type": "only_last",
    "new_movements": 0
  },
  "object": "event"
}
```

Dentro de la clave `data`, encontrarás el detalle sobre la actualización. En este caso, la cuenta con `id: acc_00000000` falló al actualizarse, ya que su `status` es `failed`. Si el `public_error` es `retryable_error`, puedes crear un nuevo Refresh Intent sin necesidad de esperar 5 minutos (el tiempo que debes esperar entre Refresh Intents). Si el `public_error` es `support_required_error`, por favor contacta a nuestro equipo de soporte.

## Si las credenciales son inválidas

Si la actualización falla porque las credenciales son inválidas, te enviaremos un evento `account.refresh_intent.rejected`:

```json theme={null}
{
  "id": "evt_00000000",
  "type": "account.refresh_intent.rejected",
  "mode": "test",
  "created_at": "2021-12-07T21:56:07.711Z",
  "data": {
    "object": "refresh_intent",
    "refreshed_object": "account",
    "refreshed_object_id": "acc_00000002",
    "status": "rejected",
    "public_error": null,
    "created_at": "2021-12-07T00:00:00.000Z",
    "type": "only_last",
    "new_movements": 0
  },
  "object": "event"
}
```

Dentro de la clave `data`, encontrarás el detalle sobre la actualización. En este caso, la cuenta con `id: acc_00000000` falló al actualizarse debido a que el banco rechazó las credenciales como inválidas, ya que su `status` es `rejected`. Si este es el caso, puedes crear un nuevo Refresh Intent sin necesidad de esperar 5 minutos (el tiempo que debes esperar entre Refresh Intents). Pero **ten cuidado**. Hacer esto demasiadas veces muy rápido podría bloquear al usuario de su cuenta. Recomendamos esperar algún tiempo entre reintentos.

<Info>
  **Credenciales inválidas**

  A veces, los bancos dicen que un conjunto de credenciales es inválido cuando no lo es. Por eso te permitimos reintentar el Refresh Intent después de un estado `rejected`. Si las credenciales son de hecho inválidas, deberías re-conectar el Link a través del widget.
</Info>
