> ## 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.

# Responder una solicitud de información con un enlace bancario

> Responde una pregunta de RFI sobre extracto bancario o comprobante de domicilio vinculando una cuenta bancaria con Plaid, mediante completeRfiPlaidLink.

## Descripción general

Dos tipos de pregunta pueden responderse vinculando una cuenta bancaria en lugar de subir un documento:

| Tipo de pregunta | Un enlace bancario la responde cuando |
| - | - |
| `BANK_LINK_OR_STATEMENT` | El banco se vincula correctamente |
| `ADDRESS_VERIFICATION_OR_DOCUMENT` | El banco se vincula **y** confirma el domicilio del cliente |

La mutación **completeRfiPlaidLink** intercambia el token público de Plaid Link, vincula el banco a la cuenta Fluz del cliente y guarda el enlace como respuesta de la pregunta.

No envía el RFI. Llama después a [submitRfi](https://docs.fluz.app/submit-rfi) para enviarlo a revisión.

## Scopes requeridos

| Propiedad | Valor |
| - | - |
| Endpoint | API GraphQL |
| Autenticación | Token Bearer de OAuth. No se acepta autenticación básica |
| Scopes requeridos | `MANAGE_RFI` y `MANAGE_PAYMENT` |

`MANAGE_PAYMENT` es obligatorio porque el banco también se agrega a la cuenta del cliente como fuente de fondos. `createPlaidLinkToken` también lo requiere.

## Flujo

**1. Crear un token de Link**

Llama a `createPlaidLinkToken` con el token del cliente. Consulta [Vincular una cuenta bancaria mediante Plaid](https://docs.fluz.app/features/link-via-plaid.md).

**2. Abrir Plaid Link**

Abre Plaid Link con ese token. Cuando el cliente termina, Plaid devuelve un `public_token`.

**3. Llamar a completeRfiPlaidLink**

Envía el `rfiId`, el `questionId` y el `public_token`. El banco se vincula y la respuesta se guarda.

**4. Enviar el RFI**

Llama a [submitRfi](https://docs.fluz.app/submit-rfi). Deja fuera de `answers` la pregunta vinculada: el enlace guardado ya la responde.

## Estructura básica de la mutación

```graphql theme={null}
mutation CompleteRfiPlaidLink($input: CompleteRfiPlaidLinkInput!) {
  completeRfiPlaidLink(input: $input) {
    rfiId
    status
    requiresAddress
    bankAccountId
    bankInstitutionAuthId
    newlyLinkedBankInstitutionAuthId
    bankInstitutionName
    platformItemId
    bankAccounts {
      bankInstitutionAuthId
      bankAccountId
      bankName
      lastFour
      type
      subtype
    }
  }
}
```

## Parámetros

### CompleteRfiPlaidLinkInput

| Campo | Tipo | Requerido | Descripción |
| - | - | - | - |
| `rfiId` | `UUID!` | Sí | El RFI que se va a responder |
| `questionId` | `String!` | Sí | Una pregunta `BANK_LINK_OR_STATEMENT` o `ADDRESS_VERIFICATION_OR_DOCUMENT`. De 1 a 200 caracteres |
| `publicToken` | `String!` | Sí | El `public_token` que devolvió Plaid Link. Empieza con `public-`, hasta 256 caracteres |

## Ejemplo con cURL

```bash theme={null}
curl -X POST https://transactional-graph.staging.fluzapp.com/api/v1/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -d '{
    "query": "mutation CompleteRfiPlaidLink($input: CompleteRfiPlaidLinkInput!) { completeRfiPlaidLink(input: $input) { rfiId status bankInstitutionName bankAccounts { bankAccountId bankName lastFour type subtype } } }",
    "variables": {
      "input": {
        "rfiId": "7c1e2a90-4b3d-4f6e-9a18-3d5b2c7e8f01",
        "questionId": "q_address",
        "publicToken": "public-sandbox-5c224a01-8314-4491-a06f-39e193d5cddc"
      }
    }
  }'
```

## Detalles de la respuesta

### CompleteRfiPlaidLinkResponse

| Campo | Tipo | Descripción |
| - | - | - |
| `rfiId` | `UUID!` | El RFI del input |
| `status` | `RfiStatus!` | Permanece en `PENDING_DOCUMENTS`. Envía el RFI a revisión con `submitRfi` |
| `requiresAddress` | `Boolean!` | Igual que en `completePlaidLink`: cuando es `true`, adjunta un domicilio con `createPlaidLinkAddress`. Consulta [Administrar cuentas bancarias vinculadas](https://docs.fluz.app/features/link-external-bank-accounts.md) |
| `bankAccountId` | `UUID` | La cuenta bancaria vinculada |
| `bankInstitutionAuthId` | `UUID` | La conexión bancaria vinculada |
| `newlyLinkedBankInstitutionAuthId` | `UUID` | Se establece cuando esta llamada creó una nueva conexión bancaria |
| `bankInstitutionName` | `String` | El nombre del banco |
| `platformItemId` | `String` | Referencia del item de Plaid, usada para reparar la conexión más adelante |
| `bankAccounts` | `[PlaidLinkedBankAccount!]!` | Las cuentas vinculadas bajo esta conexión |

### PlaidLinkedBankAccount

| Campo | Tipo | Descripción |
| - | - | - |
| `bankInstitutionAuthId` | `UUID` | La conexión bancaria |
| `bankAccountId` | `UUID` | La cuenta |
| `bankName` | `String` | Nombre del banco |
| `lastFour` | `String` | Últimos cuatro dígitos del número de cuenta |
| `type` | `String` | Tipo de cuenta de Plaid, por ejemplo `depository` |
| `subtype` | `String` | Subtipo de cuenta de Plaid, por ejemplo `checking` |

```json theme={null}
{
  "data": {
    "completeRfiPlaidLink": {
      "rfiId": "7c1e2a90-4b3d-4f6e-9a18-3d5b2c7e8f01",
      "status": "PENDING_DOCUMENTS",
      "bankInstitutionName": "Chase",
      "bankAccounts": [
        {
          "bankAccountId": "4a8d2f61-9c3e-4b7a-a215-6e0f8b9c1d32",
          "bankName": "Chase",
          "lastFour": "4417",
          "type": "depository",
          "subtype": "checking"
        }
      ]
    }
  }
}
```

Después de esta llamada, la pregunta se lee con `isSubmitted: true` y una `answer` de tipo `PLAID_BANK_LINK`.

## Preguntas de domicilio

Para una pregunta `ADDRESS_VERIFICATION_OR_DOCUMENT`, el banco debe confirmar el domicilio del cliente. Si no lo hace:

* la llamada falla con `ADDRESS_NOT_VERIFIED` y no se guarda ninguna respuesta,
* el banco **permanece vinculado** a la cuenta del cliente, y
* el cliente puede vincular otro banco, o tú puedes [subir](https://docs.fluz.app/upload-rfi-document) un comprobante de domicilio y responder la pregunta en `submitRfi`.

## Reemplazar un enlace

Llamar de nuevo a `completeRfiPlaidLink` para la misma pregunta reemplaza el enlace guardado, siempre que el RFI siga en `PENDING_DOCUMENTS`. Una pregunta que ya se respondió con documentos no puede cambiarse a un enlace bancario.

## Códigos de error

Los fallos se devuelven en el arreglo `errors` de nivel superior. Los errores de RFI incluyen `extensions.rfiErrorCode`.

| Código | `rfiErrorCode` | Descripción | Cómo resolverlo |
| - | - | - | - |
| `AUTH-0002` | — | Se usó autenticación básica | Llama con un token de usuario Bearer |
| `AUTH-0008` | — | El token Bearer no tiene `userId` ni `accountId` | Genera el token para un usuario y una cuenta |
| `AUTH-0031` | — | Al token le falta `MANAGE_RFI` o `MANAGE_PAYMENT` | Agrega ambos scopes y vuelve a generar el token |
| `G-0003` | `ACCESS_DENIED` | El RFI no existe, o no está dirigido al usuario y la cuenta del token | Usa el token con el que leíste el RFI |
| `ARG-0001` | `INVALID_INPUT` | `rfiId`, `questionId` o `publicToken` tiene un formato incorrecto | Revisa el input |
| `ARG-0001` | `RFI_NOT_OPEN` | El RFI no está esperando respuestas | Lee el RFI para ver su estado |
| `ARG-0001` | `RFI_EXPIRED` | El RFI ha expirado | Dirige al cliente a soporte |
| `ARG-0001` | `UNKNOWN_QUESTION` | No hay ninguna pregunta respondible con este `questionId` | Usa un `questionId` de las preguntas actuales del RFI |
| `ARG-0001` | `NOT_A_LINK_QUESTION` | La pregunta no es de enlace bancario ni de domicilio | Respóndela en `submitRfi` |
| `ARG-0001` | `ALREADY_SUBMITTED` | La pregunta ya tiene documentos guardados | No hay nada que hacer. La pregunta ya está respondida |
| `ARG-0001` | `ADDRESS_NOT_VERIFIED` | El banco no confirmó el domicilio del cliente. `extensions.identityMatchStatus` indica el resultado. El banco permanece vinculado | Vincula otro banco, o sube un comprobante de domicilio |
| `ARG-0001` | `PLAID_LINK_FAILED` | No se pudo completar el enlace bancario | Pide al cliente que intente Plaid Link de nuevo |
| `ARG-0001` o `G-0001` | — | Plaid no pudo intercambiar el token público | Comienza de nuevo con un nuevo token de Link |

## Páginas relacionadas

> [card] [Enviar un RFI](https://docs.fluz.app/submit-rfi)
>
> Envía el RFI a revisión después de vincular.

> [card] [Vincular una cuenta bancaria mediante Plaid](https://docs.fluz.app/features/link-via-plaid.md)
>
> `createPlaidLinkToken` y el flujo de Plaid Link.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.