Emisso Connect

Consultar RCV del SII

Lee el Registro de Compra-Venta ya sincronizado para esta conexión, filtrable por período, perspectiva, tipo de documento (tipoDte) y estado del registro.

Tool IDsii.rcv.consultar
Nombre MCPsii__rcv__consultar
Conectorsii
Planoaction
Lee el alcancercv (debe estar habilitado en la conexión)
Scope (permiso)sii:read
Authnone
Versión6
Sensible
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 dispara una sincronización nueva ni contacta al SII. Si el período nunca se sincronizó, devuelve una lista vacía y 'sincronizacion: null'. Para traer datos nuevos, use 'sii.conexion.sincronizar' primero. Pagina con 'cursor': cuando la respuesta trae 'cursor' distinto de null, hay más filas. reenvía ese valor tal cual en 'cursor' para pedir la página siguiente; nunca lo construyas a mano.

Entrada

CampoTipoRequeridoDescripción
periodostring ^\d{4}-\d{2}$noPeríodo tributario AAAA-MM. Sin él, la respuesta cruza períodos y 'sincronizacion' llega null.
perspectiva"compras" · "ventas"nocompras = la empresa es el receptor; ventas = la empresa es el emisor.
tipoDteenteronoTipo de DTE (33 factura electrónica, 34 exenta, 46 factura de compra, 56 nota de débito, 61 nota de crédito, …).
estado"registro" · "pendiente" · "no_incluir" · "reclamado"noEstado del documento en el RCV.
cursorstringnoPaginación: el valor que devolvió la respuesta anterior, tal cual.
limitentero 1-500no · default 100Filas por página.
JSON Schema de entrada
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "periodo": {
      "description": "Período tributario AAAA-MM. Sin él, la respuesta cruza períodos y 'sincronizacion' llega null.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}$"
    },
    "perspectiva": {
      "description": "compras = la empresa es el receptor; ventas = la empresa es el emisor.",
      "type": "string",
      "enum": [
        "compras",
        "ventas"
      ]
    },
    "tipoDte": {
      "description": "Tipo de DTE (33 factura electrónica, 34 exenta, 46 factura de compra, 56 nota de débito, 61 nota de crédito, …).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "estado": {
      "description": "Estado del documento en el RCV.",
      "type": "string",
      "enum": [
        "registro",
        "pendiente",
        "no_incluir",
        "reclamado"
      ]
    },
    "cursor": {
      "description": "Paginación: el valor que devolvió la respuesta anterior, tal cual.",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Filas por página.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  }
}

Ejemplo

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

Salida esperada (200):

{
  "data": {
    "documentos": [
      {
        "tipoDte": 33,
        "folio": "4712",
        "rutEmisor": "77123456-9",
        "rutReceptor": "76543210-3",
        "razonSocial": "Constructora Los Robles Ltda",
        "fechaEmision": "14/07/2026",
        "montoNeto": 1250000,
        "montoIva": 237500,
        "montoTotal": 1487500,
        "estado": "registro",
        "periodo": "2026-07",
        "fechaEmisionDate": "2026-07-14",
        "montoExento": 0,
        "fechaRecepcion": "2026-07-14",
        "eventoReceptor": null,
        "eventoReceptorCod": null,
        "tipoDocRef": null,
        "folioDocRef": null,
        "fechaAcuse": null,
        "fechaReclamo": null,
        "tipoTransaccion": null,
        "perspectiva": "ventas"
      },
      {
        "tipoDte": 33,
        "folio": "4718",
        "rutEmisor": "77123456-9",
        "rutReceptor": "78900400-5",
        "razonSocial": "Ferretería El Volcán SpA",
        "fechaEmision": "27/07/2026",
        "montoNeto": 480000,
        "montoIva": 91200,
        "montoTotal": 571200,
        "estado": "registro",
        "periodo": "2026-07",
        "fechaEmisionDate": "2026-07-27",
        "montoExento": 0,
        "fechaRecepcion": "2026-07-28",
        "eventoReceptor": null,
        "eventoReceptorCod": null,
        "tipoDocRef": null,
        "folioDocRef": null,
        "fechaAcuse": null,
        "fechaReclamo": null,
        "tipoTransaccion": null,
        "perspectiva": "ventas"
      }
    ],
    "cursor": null,
    "sincronizacion": {
      "sincronizadoEn": "2026-08-06T03:15:42.000Z",
      "completo": true,
      "incompletos": 0,
      "fueraDeVentana": null,
      "perspectivasFallidas": []
    }
  },
  "meta": {
    "request_id": "req_…",
    "tool_id": "sii.rcv.consultar",
    "plane": "action",
    "latency_ms": 24,
    "audit_status": "recorded"
  }
}

Recortado a dos documentos; una respuesta real trae hasta 'limit' filas por página. En 'ventas' el emisor es la empresa de la conexión y 'razonSocial' nombra a la contraparte (el cliente).

Salida

CampoTipoRequeridoDescripción
documentoslista de objetoLos documentos del RCV que calzan con el filtro, uno por fila. Sale de la caché ya sincronizada, nunca de una consulta en vivo al SII.
documentos[].tipoDteenteroCódigo del tipo de DTE: 33 factura electrónica, 34 exenta, 46 factura de compra, 56 nota de débito, 61 nota de crédito. Es un NÚMERO, a diferencia de 'folio': es un código de un vocabulario cerrado, no un identificador.
documentos[].foliostringEl folio del documento, en TEXTO decimal canónico (sin ceros a la izquierda). Junto con 'tipoDte' y 'rutEmisor' lo identifica de forma única. Es texto y no un número a propósito: un folio es un identificador con el que no se hace aritmética, y hay folios reales que no caben en un entero de 32 bits. Compáralo como cadena y no lo conviertas a número para ordenar ni para volver a mandarlo.
documentos[].rutEmisorstringQuien EMITIÓ el documento: en 'ventas' es la empresa de esta conexión, en 'compras' es la contraparte.
documentos[].rutReceptorstringQuien RECIBIÓ el documento: en 'compras' es la empresa de esta conexión, en 'ventas' es la contraparte.
documentos[].razonSocialstringLa razón social de la CONTRAPARTE, nunca la de la empresa de esta conexión, tal como la informó el SII.
documentos[].fechaEmisionstringLa fecha de emisión tal cual la manda el SII, en formato DD/MM/AAAA. Para ordenar o comparar usa 'fechaEmisionDate'.
documentos[].montoNetoenteroMonto neto en pesos chilenos, entero. Un 0 no distingue 'el documento no tiene neto' (uno sólo exento) de 'el SII no informó el campo': las dos formas llegan igual.
documentos[].montoIvaenteroIVA en pesos chilenos, entero. Un 0 es ambiguo por el mismo motivo que en 'montoNeto'.
documentos[].montoTotalenteroMonto total del documento en pesos chilenos, entero.
documentos[].estadostringLa casilla del Registro de Compras donde el SII tiene el documento: 'registro', 'pendiente', 'no_incluir' o 'reclamado'. Las ventas son siempre 'registro'.
documentos[].periodostringnull
documentos[].fechaEmisionDatestringnull
documentos[].montoExentoenteroMonto exento de IVA en pesos chilenos, entero.
documentos[].fechaRecepcionstringnull
documentos[].eventoReceptorstringnull
documentos[].eventoReceptorCodstringnull
documentos[].tipoDocRefenteronull
documentos[].folioDocRefstringnull
documentos[].fechaAcusestringnull
documentos[].fechaReclamostringnull
documentos[].tipoTransaccionstringnull
documentos[].perspectiva"compras" · "ventas"compras = tú eres el receptor; ventas = tú eres el emisor
cursorstringnull
sincronizacionobjetonull
sincronizacion.sincronizadoEnstringCuándo terminó la última sincronización de este período, en ISO 8601 UTC. Es la frescura del dato que estás leyendo.
sincronizacion.completobooleanonull
sincronizacion.incompletosenteronull
sincronizacion.fueraDeVentanaenteronull
sincronizacion.perspectivasFallidaslista de objetoQué direcciones fallaron enteras en esa sincronización, con su código de error. Hoy sólo la puebla el alcance de boletas de honorarios; para los demás llega vacía.
sincronizacion.perspectivasFallidas[].perspectiva"emitidas" · "recibidas"Qué lado falló: 'emitidas' son las que emitió esta empresa y 'recibidas' las que le emitieron.
sincronizacion.perspectivasFallidas[].codestringEl código del catálogo de errores que explica por qué falló ese lado. Decide por el código, nunca por el texto.
JSON Schema de salida
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "documentos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "tipoDte": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Código del tipo de DTE: 33 factura electrónica, 34 exenta, 46 factura de compra, 56 nota de débito, 61 nota de crédito. Es un NÚMERO, a diferencia de 'folio': es un código de un vocabulario cerrado, no un identificador."
          },
          "folio": {
            "type": "string",
            "description": "El folio del documento, en TEXTO decimal canónico (sin ceros a la izquierda). Junto con 'tipoDte' y 'rutEmisor' lo identifica de forma única. Es texto y no un número a propósito: un folio es un identificador con el que no se hace aritmética, y hay folios reales que no caben en un entero de 32 bits. Compáralo como cadena y no lo conviertas a número para ordenar ni para volver a mandarlo."
          },
          "rutEmisor": {
            "type": "string",
            "description": "Quien EMITIÓ el documento: en 'ventas' es la empresa de esta conexión, en 'compras' es la contraparte."
          },
          "rutReceptor": {
            "type": "string",
            "description": "Quien RECIBIÓ el documento: en 'compras' es la empresa de esta conexión, en 'ventas' es la contraparte."
          },
          "razonSocial": {
            "type": "string",
            "description": "La razón social de la CONTRAPARTE, nunca la de la empresa de esta conexión, tal como la informó el SII."
          },
          "fechaEmision": {
            "type": "string",
            "description": "La fecha de emisión tal cual la manda el SII, en formato DD/MM/AAAA. Para ordenar o comparar usa 'fechaEmisionDate'."
          },
          "montoNeto": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Monto neto en pesos chilenos, entero. Un 0 no distingue 'el documento no tiene neto' (uno sólo exento) de 'el SII no informó el campo': las dos formas llegan igual."
          },
          "montoIva": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "IVA en pesos chilenos, entero. Un 0 es ambiguo por el mismo motivo que en 'montoNeto'."
          },
          "montoTotal": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Monto total del documento en pesos chilenos, entero."
          },
          "estado": {
            "type": "string",
            "description": "La casilla del Registro de Compras donde el SII tiene el documento: 'registro', 'pendiente', 'no_incluir' o 'reclamado'. Las ventas son siempre 'registro'."
          },
          "periodo": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "El período tributario con que se sincronizó el documento, en formato AAAA-MM. 'null' en filas viejas que no lo guardaron."
          },
          "fechaEmisionDate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "La misma fecha de emisión en formato AAAA-MM-DD, o 'null' si no se pudo parsear. Es la que conviene usar para ordenar."
          },
          "montoExento": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Monto exento de IVA en pesos chilenos, entero."
          },
          "fechaRecepcion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cuándo el SII recibió el documento, en formato AAAA-MM-DD. 'null' si no vino."
          },
          "eventoReceptor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "La leyenda del evento que registró el receptor (un acuse, un reclamo). 'null' cuando no hubo evento."
          },
          "eventoReceptorCod": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "El código de ese mismo evento. Decide por el código, nunca por la leyenda. 'null' cuando no hubo evento."
          },
          "tipoDocRef": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "Tipo del documento que este corrige o referencia (una nota de crédito sobre una factura 33). 'null' cuando no referencia a ninguno. Es un NÚMERO, a diferencia de 'folioDocRef': código de vocabulario cerrado contra identificador."
          },
          "folioDocRef": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Folio del documento referenciado, en TEXTO decimal canónico igual que 'folio', o 'null' cuando no hay referencia. Es el campo más expuesto del conector porque sale de lo que tipeó el emisor en el DTE, así que trátalo como cadena y no lo conviertas a número."
          },
          "fechaAcuse": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Fecha del acuse de recibo, en formato AAAA-MM-DD. 'null' si no se acusó."
          },
          "fechaReclamo": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Fecha del reclamo, en formato AAAA-MM-DD. 'null' si no se reclamó."
          },
          "tipoTransaccion": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Con qué tipo de transacción quedó clasificado el documento en el RCV, tal cual lo manda el SII. 'null' si no vino."
          },
          "perspectiva": {
            "type": "string",
            "enum": [
              "compras",
              "ventas"
            ],
            "description": "compras = tú eres el receptor; ventas = tú eres el emisor"
          }
        },
        "required": [
          "tipoDte",
          "folio",
          "rutEmisor",
          "rutReceptor",
          "razonSocial",
          "fechaEmision",
          "montoNeto",
          "montoIva",
          "montoTotal",
          "estado",
          "periodo",
          "fechaEmisionDate",
          "montoExento",
          "fechaRecepcion",
          "eventoReceptor",
          "eventoReceptorCod",
          "tipoDocRef",
          "folioDocRef",
          "fechaAcuse",
          "fechaReclamo",
          "tipoTransaccion",
          "perspectiva"
        ],
        "additionalProperties": false
      },
      "description": "Los documentos del RCV que calzan con el filtro, uno por fila. Sale de la caché ya sincronizada, nunca de una consulta en vivo al SII."
    },
    "cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "El cursor de la página siguiente, opaco. 'null' significa que no hay más filas; cualquier otro valor se reenvía tal cual en 'cursor' de la próxima llamada y nunca se construye a mano."
    },
    "sincronizacion": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "sincronizadoEn": {
              "type": "string",
              "description": "Cuándo terminó la última sincronización de este período, en ISO 8601 UTC. Es la frescura del dato que estás leyendo."
            },
            "completo": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "'true' = el período se sincronizó entero. 'false' = quedaron casillas sin traer, así que puede faltar información. 'null' = no se puede saber, porque no hay registro de ese intento."
            },
            "incompletos": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ],
              "description": "Cuántas casillas quedaron sin traer en esa sincronización. 'null' cuando no se puede saber."
            },
            "fueraDeVentana": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sólo aplica a guías: cuántas direcciones cayeron fuera de la ventana de 6 meses que el SII conserva. Un 0 dice que se verificó y no aplicó; 'null', que no aplica o no se conoce."
            },
            "perspectivasFallidas": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "perspectiva": {
                    "type": "string",
                    "enum": [
                      "emitidas",
                      "recibidas"
                    ],
                    "description": "Qué lado falló: 'emitidas' son las que emitió esta empresa y 'recibidas' las que le emitieron."
                  },
                  "code": {
                    "type": "string",
                    "description": "El código del catálogo de errores que explica por qué falló ese lado. Decide por el código, nunca por el texto."
                  }
                },
                "required": [
                  "perspectiva",
                  "code"
                ],
                "additionalProperties": false
              },
              "description": "Qué direcciones fallaron enteras en esa sincronización, con su código de error. Hoy sólo la puebla el alcance de boletas de honorarios; para los demás llega vacía."
            }
          },
          "required": [
            "sincronizadoEn",
            "completo",
            "incompletos",
            "fueraDeVentana",
            "perspectivasFallidas"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Completitud del último sync del período consultado. Es 'null' por DOS motivos distintos, y ninguno significa que las filas devueltas sean inválidas: (a) la consulta no filtró por 'periodo', así que no hay un sync único al que mirar (pide un 'periodo' concreto para obtener el bloque); o (b) ese período nunca se sincronizó. Un 'null' junto a una lista CON documentos es siempre el caso (a)."
    }
  },
  "required": [
    "documentos",
    "cursor",
    "sincronizacion"
  ],
  "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

On this page