Connect

Consultar movimientos de BICE Empresas

Lee los movimientos ya sincronizados de esta conexión, del más reciente al más antiguo, filtrables por período (AAAA-MM), por cuenta y por 'type' (el eje credit/debit del libro del banco: 'debit' para los abonos, 'credit' para los cargos).

Tool IDbice_empresas.movimientos.consultar
Nombre MCPbice_empresas__movimientos__consultar
Conectorbice_empresas
Planoaction
Lee el alcancemovimientos (debe estar habilitado en la conexión)
Scope (permiso)bice_empresas:read
Authnone
Versión5
Sensiblesí
Deprecadono
ComportamientoreadOnly=true, destructive=false, idempotent=true, openWorld=false

Requiere conexión. Indica cuál en cada llamada: header X-Connect-Connection en REST, campo connectionId en el execute de MCP y en las opciones del SDK. No hay resolución implícita, ni siquiera con una sola conexión activa: la conexión es la empresa. El id sale de conexiones.estado.consultar.

Qué hace

Lectura pura: NO contacta al banco ni dispara una sincronización. Si el período nunca se sincronizó, devuelve una lista vacía, que NO significa que no haya movimientos. Para traer datos nuevos, usa 'bice_empresas.conexion.sincronizar' primero. Los montos vienen como NÚMERO: 'monto' es la magnitud sin signo, 'type' dice si entra ('debit') o sale ('credit') plata según el libro del banco (al revés de como se lee una cartola), y 'display' es ese monto ya formateado a la chilena con su signo. 'saldoContable' es un balance: no lleva 'type' y conserva su propio signo. Cada fila trae además 'counterparty' con el nombre, el RUT, el banco y la cuenta del otro lado cuando el banco los informa: en BICE viajan dentro de la glosa y aquí ya vienen separados, con el RUT en la misma forma que usa el SII. 'counterpartySource' en null significa que el banco NO informó contraparte en esa fila, no que Connect no la haya podido leer. Pagina con 'cursor': cuando la respuesta trae 'cursor' distinto de null hay más filas. reenvía ese valor tal cual; nunca lo construyas a mano.

Entrada

CampoTipoRequeridoDescripción
periodostring ^\d{4}-\d{2}$noFiltra por el mes (AAAA-MM) con el que se sincronizó la fila. Como la cartola de BICE corre de fin de mes a fin de mes, un período puede traer movimientos fechados en los últimos días del mes anterior. Sin él, la respuesta cruza todos los períodos guardados.
numeroCuentastringnoFiltra por una sola cuenta, escrita igual que el 'numeroCuenta' de las filas. Sin él vienen todas las cuentas de la conexión.
type"credit" · "debit"noEje crédito/débito del LIBRO DEL BANCO, no el de la cartola: 'debit' es plata que ENTRA a la cuenta (un abono) y 'credit' es plata que SALE (un cargo). Es al revés de la lectura intuitiva y está así a propósito. El campo 'monto' es la magnitud SIN signo; el signo lo lleva 'display' ('credit' → negativo). 'null' significa que el banco no informó el tipo: no asumas ninguno de los dos.
cursorstringnoPara pedir la página siguiente: el valor que la respuesta anterior devolvió en 'cursor', tal cual. Nunca lo construyas ni lo edites a mano. Omítelo para empezar por la primera página.
limitentero 1-500no · default 100Cuántas filas trae una página, entre 1 y 500. Por defecto, 100.
JSON Schema de entrada
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "periodo": {
      "description": "Filtra por el mes (AAAA-MM) con el que se sincronizó la fila. Como la cartola de BICE corre de fin de mes a fin de mes, un período puede traer movimientos fechados en los últimos días del mes anterior. Sin él, la respuesta cruza todos los períodos guardados.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}$"
    },
    "numeroCuenta": {
      "description": "Filtra por una sola cuenta, escrita igual que el 'numeroCuenta' de las filas. Sin él vienen todas las cuentas de la conexión.",
      "type": "string"
    },
    "type": {
      "description": "Eje crédito/débito del LIBRO DEL BANCO, no el de la cartola: 'debit' es plata que ENTRA a la cuenta (un abono) y 'credit' es plata que SALE (un cargo). Es al revés de la lectura intuitiva y está así a propósito. El campo 'monto' es la magnitud SIN signo; el signo lo lleva 'display' ('credit' → negativo). 'null' significa que el banco no informó el tipo: no asumas ninguno de los dos.",
      "type": "string",
      "enum": [
        "credit",
        "debit"
      ]
    },
    "cursor": {
      "description": "Para pedir la página siguiente: el valor que la respuesta anterior devolvió en 'cursor', tal cual. Nunca lo construyas ni lo edites a mano. Omítelo para empezar por la primera página.",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Cuántas filas trae una página, entre 1 y 500. Por defecto, 100.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  }
}

Ejemplo

curl
curl -X POST https://connect.emisso.ai/api/v1/tools/bice_empresas.movimientos.consultar/execute \
  -H "Authorization: Bearer connect_sk_…" \
  -H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
  -H "Content-Type: application/json" \
  -d '{"input":{"periodo":"2026-07"}}'
SDK TypeScript
const data = await connect.tools.bice_empresas.movimientos.consultar({ periodo: "2026-07" }, { connectionId: "conn_9tKfR2mQx4Vb" });
MCP · meta-tool execute
{
  "tool": "bice_empresas.movimientos.consultar",
  "params": {
    "periodo": "2026-07"
  },
  "connectionId": "conn_9tKfR2mQx4Vb"
}

Salida esperada (200):

{
  "data": {
    "movimientos": [
      {
        "id": "9c41f2ab7d305e8812aef6c40b9d73f56a28c1e9d47b0f3685c2ea193f6d08b7",
        "numeroCuenta": "07203344",
        "currency": "CLP",
        "periodo": "2026-07",
        "fecha": "2026-07-28T00:00:00.000Z",
        "monto": 1250000,
        "type": "credit",
        "display": "-1.250.000",
        "saldoContable": 4825310,
        "descripcion": "Transf. a terceros vía Internet a cuenta 1550998009 B.Chile, Proveedores Andinos Ltda., Rut 76.543.210-3, el 28-07-2026 a las 15:42:07",
        "documento": "451208763",
        "counterparty": {
          "name": "Proveedores Andinos Ltda.",
          "rut": "76543210-3",
          "bank": "B.Chile",
          "account": "1550998009"
        },
        "counterpartySource": "descripcion"
      },
      {
        "id": "e07a5c13b98d24f641c6a0d98f3e57b22d91c8e476f0a3b5c45d19e80a72f6c3",
        "numeroCuenta": "07203344",
        "currency": "CLP",
        "periodo": "2026-07",
        "fecha": "2026-07-15T00:00:00.000Z",
        "monto": 348500,
        "type": "debit",
        "display": "348.500",
        "saldoContable": 6075310,
        "descripcion": "Abono por transferencia de INVERSIONES DEMO SPA Rut 77.987.654-3 desde BCI el 15/07/2026 a las 09:31",
        "documento": "048112954",
        "counterparty": {
          "name": "INVERSIONES DEMO SPA",
          "rut": "77987654-3",
          "bank": "BCI",
          "account": null
        },
        "counterpartySource": "descripcion"
      }
    ],
    "cursor": null
  },
  "meta": {
    "request_id": "req_…",
    "tool_id": "bice_empresas.movimientos.consultar",
    "plane": "action",
    "latency_ms": 24,
    "audit_status": "recorded"
  }
}

Recortado a dos movimientos. 'id' es la huella estable con la que se guardó el movimiento, la misma por cualquiera de las dos rutas del banco. La cartola de BICE corre de fin de mes a fin de mes: el período 2026-07 puede incluir movimientos fechados el 30 de junio. Fíjate en la asimetría de 'counterparty': el cargo trae la cuenta de destino y el banco abreviado, el abono no trae cuenta y nombra el banco corrido. Es cómo escribe el banco cada glosa, no un dato que falte. En un pago de tarjeta o un cargo de impuestos los cuatro campos vienen en null y 'counterpartySource' también: ahí el banco no informó contraparte.

Salida

CampoTipoRequeridoDescripción
movimientoslista de objetosíLos movimientos guardados, del más reciente al más antiguo. Una lista vacía significa que ese período todavía no se sincronizó, no que no haya movimientos.
movimientos[].idstringsíLa identidad estable del movimiento: la huella con la que se guardó. El mismo movimiento llega por dos rutas del banco con formatos distintos y por las dos trae este mismo 'id', así que sirve para deduplicar el día que comparten dos cartolas sin comparar campos de presentación.
movimientos[].numeroCuentastringsíEl identificador ESTABLE de la cuenta a la que pertenece esta fila. No es la máscara que muestra el portal en pantalla, que cambia en cada sesión: es el mismo valor en saldos y movimientos, y el que espera el filtro 'numeroCuenta'.
movimientos[].currencystringsíLa moneda de la cuenta, en código de tres letras (por ejemplo 'CLP'). BICE la manda a veces como código numérico y aquí ya viene traducida a las tres letras.
movimientos[].periodostringsíEl mes (AAAA-MM) con el que se sincronizó esta fila. Es la ventana con que se pidió, no una propiedad del movimiento: la cartola de BICE corre de fin de mes a fin de mes, así que el período '2026-07' incluye movimientos fechados el 30 de junio. La fecha vive en 'fecha'.
movimientos[].fechastringnullsí
movimientos[].montonúmeronullsí
movimientos[].type"credit" · "debit"nullsí
movimientos[].displaystringnullsí
movimientos[].saldoContablenúmeronullsí
movimientos[].descripcionstringsíLa glosa del movimiento, tal como la escribe el banco. Cadena vacía cuando el banco no la trae.
movimientos[].documentostringsíEl número de documento del movimiento, tal como lo entrega el banco. Ojo al compararlo: una ruta del banco lo manda con nueve dígitos y la otra truncado a los últimos ocho, así que dos textos distintos pueden ser el mismo documento. Para saber si dos filas son el mismo movimiento usa 'id'. Cadena vacía cuando el banco no lo trae.
movimientos[].counterpartyobjetosíLa contraparte del movimiento, extraída de la glosa que escribe el banco. QUÉ LADO ES depende de 'type': en un abono ('debit', plata que entra) es el origen; en un cargo ('credit', plata que sale) es el destinatario. Los cuatro campos vienen en 'null' cuando el banco no informó contraparte, que es lo normal en pagos de tarjeta, comisiones y cargos de impuestos. Revisa 'counterpartySource' antes de concluir que falta un dato. Son datos personales de terceros: trátalos como tales.
movimientos[].counterparty.namestringnullsí
movimientos[].counterparty.rutstringnullsí
movimientos[].counterparty.bankstringnullsí
movimientos[].counterparty.accountstringnullsí
movimientos[].counterpartySourcestringnullsí
cursorstringnullsí
JSON Schema de salida
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "movimientos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "La identidad estable del movimiento: la huella con la que se guardó. El mismo movimiento llega por dos rutas del banco con formatos distintos y por las dos trae este mismo 'id', así que sirve para deduplicar el día que comparten dos cartolas sin comparar campos de presentación."
          },
          "numeroCuenta": {
            "type": "string",
            "description": "El identificador ESTABLE de la cuenta a la que pertenece esta fila. No es la máscara que muestra el portal en pantalla, que cambia en cada sesión: es el mismo valor en saldos y movimientos, y el que espera el filtro 'numeroCuenta'."
          },
          "currency": {
            "type": "string",
            "description": "La moneda de la cuenta, en código de tres letras (por ejemplo 'CLP'). BICE la manda a veces como código numérico y aquí ya viene traducida a las tres letras."
          },
          "periodo": {
            "type": "string",
            "description": "El mes (AAAA-MM) con el que se sincronizó esta fila. Es la ventana con que se pidió, no una propiedad del movimiento: la cartola de BICE corre de fin de mes a fin de mes, así que el período '2026-07' incluye movimientos fechados el 30 de junio. La fecha vive en 'fecha'."
          },
          "fecha": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "La fecha del movimiento (ISO 8601), tal como la entrega el banco. Puede caer en el mes anterior al de 'periodo', porque la cartola de BICE corre de fin de mes a fin de mes. 'null' cuando el banco no la trajo en una forma reconocible."
          },
          "monto": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "La magnitud del movimiento SIN signo. El sentido lo da 'type' y el signo visible, 'display'. 'null' cuando ni el débito ni el crédito traen un valor distinto de cero: el banco manda las dos celdas siempre y escribe 0 en la que no aplica, así que ese 0 no es un movimiento de cero."
          },
          "type": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "credit",
                  "debit"
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "Eje crédito/débito del LIBRO DEL BANCO, no el de la cartola: 'debit' es plata que ENTRA a la cuenta (un abono) y 'credit' es plata que SALE (un cargo). Es al revés de la lectura intuitiva y está así a propósito. El campo 'monto' es la magnitud SIN signo; el signo lo lleva 'display' ('credit' → negativo). 'null' significa que el banco no informó el tipo: no asumas ninguno de los dos."
          },
          "display": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "El monto ya formateado a la chilena y CON signo, derivado de 'type' ('credit', plata que sale, se muestra negativo). Es una comodidad de presentación: se calcula en la lectura y no se persiste. Para operar con el número usa 'monto' (magnitud sin signo) junto con 'type'."
          },
          "saldoContable": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "El saldo de la cuenta después de este movimiento. Es un balance: no lleva 'type' y conserva su propio signo, así que un sobregiro es negativo."
          },
          "descripcion": {
            "type": "string",
            "description": "La glosa del movimiento, tal como la escribe el banco. Cadena vacía cuando el banco no la trae."
          },
          "documento": {
            "type": "string",
            "description": "El número de documento del movimiento, tal como lo entrega el banco. Ojo al compararlo: una ruta del banco lo manda con nueve dígitos y la otra truncado a los últimos ocho, así que dos textos distintos pueden ser el mismo documento. Para saber si dos filas son el mismo movimiento usa 'id'. Cadena vacía cuando el banco no lo trae."
          },
          "counterparty": {
            "type": "object",
            "properties": {
              "name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "El nombre o razón social de la contraparte, tal como lo escribe el banco (MAYÚSCULAS y sin tildes en muchas filas: es el texto del portal, no un dato normalizado). 'null' cuando la glosa no lo trae."
              },
              "rut": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "El RUT de la contraparte, sin puntos y con guión (por ejemplo '76123456-0'): el banco lo escribe con puntos dentro de la glosa y aquí ya viene canonizado, en la MISMA forma con que el SII identifica a sus contrapartes, para que las dos fuentes crucen. No se valida el dígito verificador; si llegó en una forma que no se reconoce, viaja tal cual y nunca convertido a la fuerza. 'null' cuando la glosa no lo trae."
              },
              "bank": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "El banco de LA CONTRAPARTE, no el tuyo. Ojo con el formato, que depende de la dirección: en un cargo el banco lo escribe abreviado y TRUNCADO a diez caracteres ('B.Santande', 'B.Scotiaba', 'B.Chile'), y en un abono lo escribe corrido ('Security', 'BCI'). Viaja tal como lo manda el banco, sin completar lo truncado: adivinar el resto sería inventar. 'null' cuando la glosa no lo trae."
              },
              "account": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "El número de cuenta de la contraparte, tal como lo escribe el banco dentro de la glosa, que es el único lugar donde la manda: su respuesta no trae ningún campo de contraparte aparte. Solo la traen los cargos: un abono nombra a quién y desde qué institución, nunca la cuenta de origen. 'null' en todo abono y cuando la glosa no lo trae."
              }
            },
            "required": [
              "name",
              "rut",
              "bank",
              "account"
            ],
            "additionalProperties": false,
            "description": "La contraparte del movimiento, extraída de la glosa que escribe el banco. QUÉ LADO ES depende de 'type': en un abono ('debit', plata que entra) es el origen; en un cargo ('credit', plata que sale) es el destinatario. Los cuatro campos vienen en 'null' cuando el banco no informó contraparte, que es lo normal en pagos de tarjeta, comisiones y cargos de impuestos. Revisa 'counterpartySource' antes de concluir que falta un dato. Son datos personales de terceros: trátalos como tales."
          },
          "counterpartySource": {
            "anyOf": [
              {
                "type": "string",
                "const": "descripcion"
              },
              {
                "type": "null"
              }
            ],
            "description": "De dónde salió 'counterparty', para no tener que adivinarlo. 'descripcion': lo extrajimos de la glosa, que en BICE es el único lugar donde viaja la contraparte, porque el banco no adjunta un detalle estructurado como sí hacen otros. 'null': EL BANCO NO INFORMÓ CONTRAPARTE en esta fila, que es lo normal en pagos de la tarjeta propia, comisiones, cargos automáticos y pagos de impuestos; no es un dato que falte por un problema de Connect. El texto completo sigue en 'descripcion'."
          }
        },
        "required": [
          "id",
          "numeroCuenta",
          "currency",
          "periodo",
          "fecha",
          "monto",
          "type",
          "display",
          "saldoContable",
          "descripcion",
          "documento",
          "counterparty",
          "counterpartySource"
        ],
        "additionalProperties": false
      },
      "description": "Los movimientos guardados, del más reciente al más antiguo. Una lista vacía significa que ese período todavía no se sincronizó, no que no haya movimientos."
    },
    "cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "El cursor de la página siguiente. Distinto de null significa que quedan más filas: reenvíalo tal cual en 'cursor'. 'null' significa que esta es la última página."
    }
  },
  "required": [
    "movimientos",
    "cursor"
  ],
  "additionalProperties": false
}

Errores de esta tool

CódigoHTTPReintentableQué hacer
connection_disabled403noReactívala en /connections o usa otra conexión del mismo sistema.
alcance_not_enabled403noHabilita el alcance en /connections o quítalo del input de la sincronización.

Toda llamada puede devolver además los códigos transversales (validation_error, unauthorized, scope_not_granted, rate_limited, entre otros): el detalle vive en el catálogo de errores.

Próximos pasos

En esta página