# Validar un pago por transferencia

> Confirma contra la cuenta de BCI de la empresa que una transferencia llegó, con el monto, el día y el RUT de quien pagó. Devuelve los movimientos candidatos con un nivel de confianza y sus motivos.



Un comprobante de transferencia se puede editar o reenviar. La forma segura de saber que un pago llegó
es mirar la cuenta que lo recibe. [`bci_pyme.transferencias.buscar`](/docs/referencia/bci_pyme/transferencias-buscar)
hace esa comprobación: le das el **monto**, el **día** y, si lo tienes, el **RUT de quien pagó**, y
devuelve los movimientos de la cuenta de BCI que pueden ser ese pago, cada uno con un nivel de confianza.

Por ahora funciona con **Banco BCI Empresas** (`bci_pyme`).

<Callout type="warn" title="En beta">
  Cualquier conexión de BCI Empresas puede usarla, sin pedir activación. Mientras la probamos con clientes,
  la forma de calcular la confianza y la respuesta pueden ajustarse; cada cambio queda anotado en el
  [changelog](/docs/changelog). Todavía estamos midiendo con qué frecuencia BCI informa el RUT de quien
  paga: cuando no lo informa, la mejor confianza posible es `media`.
</Callout>

## Antes de empezar [#antes-de-empezar]

* Una conexión de BCI con el alcance **movimientos** habilitado. Si la empresa todavía no está
  conectada, sigue las [guías para conectar](/docs/como-conectar).
* Una clave de API de Connect con el permiso `bci_pyme:read`, y el `connectionId` de la conexión. La
  [guía de la API](/docs/como-consultar/api) muestra cómo obtener los dos.

## Buscar la transferencia [#buscar-la-transferencia]

```bash title="curl"
curl -X POST https://connect.emisso.ai/api/v1/tools/bci_pyme.transferencias.buscar/execute \
  -H "Authorization: Bearer connect_sk_…" \
  -H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
  -H "Content-Type: application/json" \
  -d '{"input":{"monto":1450000,"fecha":"2026-07-15","rutContraparte":"76.543.210-3"}}'
```

| Campo            | Requerido | Qué es                                                                          |
| ---------------- | --------- | ------------------------------------------------------------------------------- |
| `monto`          | sí        | El monto del pago, sin signo. Se compara exacto, al peso.                       |
| `fecha`          | sí        | El día de la transferencia (`AAAA-MM-DD`), según quien pagó.                    |
| `rutContraparte` | no        | El RUT de quien pagó, con o sin puntos. Sin él, la confianza máxima es `media`. |
| `toleranciaDias` | no        | Cuántos días antes y después de `fecha` se busca, de 0 a 7. Por defecto, 1.     |

Por defecto se buscan abonos (plata que entró) en las cuentas en pesos. La
[referencia](/docs/referencia/bci_pyme/transferencias-buscar) describe los demás campos: `sentido`,
`moneda` y `numeroCuenta`.

## Leer la respuesta [#leer-la-respuesta]

```json
{
  "data": {
    "candidatas": [
      {
        "confianza": "alta",
        "motivos": ["rut_coincide", "monto_coincide", "fecha_exacta"],
        "diferenciaDias": 0,
        "movimiento": {
          "numeroCuenta": "78012345",
          "fechaMovimiento": "2026-07-15T00:00:00.000Z",
          "monto": 1450000,
          "type": "debit",
          "counterparty": { "name": "Distribuidora Andina Ltda", "rut": "76543210-3", "bank": "Banco de Chile", "account": null }
        }
      }
    ],
    "ambigua": false,
    "ultimaLecturaEn": "2026-07-15T17:02:11.904Z",
    "completo": true
  }
}
```

El ejemplo muestra solo algunos campos del movimiento; la respuesta real lo trae completo.

Cada candidata trae una **confianza** y los **motivos** que la explican:

| Confianza | Cuándo                                                                                                          |
| --------- | --------------------------------------------------------------------------------------------------------------- |
| `alta`    | Coinciden el RUT y el monto.                                                                                    |
| `media`   | Coincide el monto, pero no hay RUT con qué comparar: no lo enviaste o el banco no lo informó en ese movimiento. |
| `baja`    | Coincide el monto, pero pagó otro RUT; o pagó el mismo RUT, por otro monto.                                     |

Las candidatas vienen ordenadas, la más probable primero. Además:

* **`ambigua: true`** significa que hay más de una candidata con la mejor confianza. Por ejemplo, el
  mismo cliente pagó dos veces el mismo monto ese día. No des el pago por validado sin otro dato que
  las distinga.
* **Un movimiento valida un solo pago.** Connect no sabe qué movimientos ya usaste: guarda tú la
  relación entre el pago y el movimiento, y descarta los ya asignados.
* **Una lista vacía no prueba que el pago no exista.** Revisa los dos campos de la sección siguiente.

## Hasta dónde mira la búsqueda [#hasta-dónde-mira-la-búsqueda]

La búsqueda lee los movimientos que Connect ya sincronizó desde BCI; no entra al banco en ese momento.
Connect sincroniza cada conexión de forma automática cada pocas horas.

* **`ultimaLecturaEn`** es el último momento en que Connect leyó movimientos de la cuenta. Una
  transferencia posterior todavía no puede aparecer.
* **`completo`** es `false` si BCI entregó la cartola cortada para algún mes de la búsqueda, y `null` si
  no se sabe. En esos casos, una búsqueda vacía tampoco es concluyente.

Si el pago es más reciente que `ultimaLecturaEn`, pide una sincronización con
[`bci_pyme.conexion.sincronizar`](/docs/referencia/bci_pyme/conexion-sincronizar) y vuelve a buscar
cuando llegue el [webhook](/docs/operar/webhooks) `sync.succeeded` de esa conexión. Una sola
sincronización sirve para todos los pagos pendientes: agrúpalos en vez de pedir una por cada pago.

BCI permite una sola sesión activa por usuario. Cada sincronización inicia sesión en el banco y cierra
la que esa persona tenga abierta en el portal.

## Con un agente de IA [#con-un-agente-de-ia]

Un agente conectado a Connect por MCP usa la misma búsqueda. Puedes pedírselo con tus palabras, por
ejemplo: «¿Llegó a BCI la transferencia de 1.450.000 del RUT 76.543.210-3 del 15 de julio?».
