# Consultar totales del mes del RCV

> Lee los totales del mes que el SII informa en el Registro de Compra-Venta sin detalle por documento: las boletas electrónicas (39), los comprobantes de pago con tarjeta (48) y otros tipos que sólo llegan como total.



{/* AUTO-GENERATED by @emisso/codegen. DO NOT EDIT. */}

|                     |                                                                    |
| ------------------- | ------------------------------------------------------------------ |
| **Tool ID**         | `sii.rcv_totales.consultar`                                        |
| **Nombre MCP**      | `sii__rcv_totales__consultar`                                      |
| **Conector**        | `sii`                                                              |
| **Plano**           | `action`                                                           |
| **Lee el alcance**  | `rcv` (debe estar habilitado en la conexión)                       |
| **Scope (permiso)** | `sii:read`                                                         |
| **Auth**            | `none`                                                             |
| **Versión**         | `2`                                                                |
| **Sensible**        | sí                                                                 |
| **Deprecado**       | no                                                                 |
| **Comportamiento**  | readOnly=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`](../conexiones/estado-consultar).

## Qué hace [#qué-hace]

Un registro por mes y tipo, con la cantidad de documentos y sus montos. Para las ventas del mes, suma los documentos de 'sii.rcv.consultar' más los totales con 'sumable: true'; los pagos con tarjeta (48) vienen con 'sumable: false' porque pueden repetir ventas que ya tienen boleta o factura. Ojo con las boletas: el alcance 'boletas' ('sii.boletas.consultar') trae las mismas boletas día por día; usa una de las dos fuentes, no ambas. Lectura pura: NO dispara una sincronización ni contacta al SII; para datos nuevos usa 'sii.conexion.sincronizar' primero. Pagina con 'cursor'.

## Entrada [#entrada]

| Campo         | Tipo                     | Requerido          | Descripción                                                                                         |
| ------------- | ------------------------ | ------------------ | --------------------------------------------------------------------------------------------------- |
| `periodo`     | string `^\d{4}-\d{2}$`   | no                 | Mes AAAA-MM. Sin él, la respuesta trae todos los meses sincronizados y 'sincronizacion' llega null. |
| `perspectiva` | `"compras"` · `"ventas"` | no                 | compras = la empresa es el receptor; ventas = la empresa es el emisor.                              |
| `tipoDte`     | entero                   | no                 | Tipo de documento: 39 boletas, 48 comprobantes de pago, …                                           |
| `cursor`      | string                   | no                 | Paginación: el valor que devolvió la respuesta anterior, tal cual.                                  |
| `limit`       | entero 1-500             | no · default `100` | Filas por página.                                                                                   |

<details>
  <summary>
    JSON Schema de entrada
  </summary>

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "periodo": {
        "description": "Mes AAAA-MM. Sin él, la respuesta trae todos los meses sincronizados 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 documento: 39 boletas, 48 comprobantes de pago, …",
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      },
      "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
      }
    }
  }
  ```
</details>

## Ejemplo [#ejemplo]

```bash title="curl"
curl -X POST https://connect.emisso.ai/api/v1/tools/sii.rcv_totales.consultar/execute \
  -H "Authorization: Bearer connect_sk_…" \
  -H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
  -H "Content-Type: application/json" \
  -d '{"input":{"periodo":"2026-09","perspectiva":"ventas"}}'
```

```ts title="SDK TypeScript"
const data = await connect.tools.sii.rcv_totales.consultar({ periodo: "2026-09", perspectiva: "ventas" }, { connectionId: "conn_9tKfR2mQx4Vb" });
```

```json title="MCP · meta-tool execute"
{
  "tool": "sii.rcv_totales.consultar",
  "params": {
    "periodo": "2026-09",
    "perspectiva": "ventas"
  },
  "connectionId": "conn_9tKfR2mQx4Vb"
}
```

**Salida esperada (200):**

```json
{
  "data": {
    "totales": [
      {
        "perspectiva": "ventas",
        "periodo": "2026-09",
        "estado": "registro",
        "tipoDte": 48,
        "nombreTipo": "Total mes Comprobantes Pago Electrónico",
        "cantidad": 85,
        "montoNeto": 2000000,
        "montoIva": 380000,
        "montoExento": 0,
        "montoTotal": 2380000,
        "sumable": false,
        "fuente": "resumen",
        "sincronizadoEn": "2026-09-27T12:36:13.000Z"
      },
      {
        "perspectiva": "ventas",
        "periodo": "2026-09",
        "estado": "registro",
        "tipoDte": 39,
        "nombreTipo": "Boleta Electrónica",
        "cantidad": 996,
        "montoNeto": 15504202,
        "montoIva": 2945798,
        "montoExento": 0,
        "montoTotal": 18450000,
        "sumable": true,
        "fuente": "resumen",
        "sincronizadoEn": "2026-09-27T12:36:13.000Z"
      }
    ],
    "cursor": null,
    "sincronizacion": {
      "sincronizadoEn": "2026-09-27T12:36:13.000Z",
      "completo": true,
      "incompletos": 0,
      "fueraDeVentana": null,
      "perspectivasFallidas": []
    }
  },
  "meta": {
    "request_id": "req_…",
    "tool_id": "sii.rcv_totales.consultar",
    "plane": "action",
    "latency_ms": 24,
    "audit_status": "recorded"
  }
}
```

> Las ventas del mes son los documentos de venta de 'sii.rcv.consultar' (las notas de crédito restan) más estos totales con 'sumable: true'. Los pagos con tarjeta (48) dependen del caso: el procesador del pago los informa aparte y pueden repetir ventas con boleta o factura. Súmalos si la empresa no emite otro documento por esas ventas o si corrigió la duplicidad con una nota de crédito; no, si no corrigió nada. 'cantidad' es cuántas boletas o pagos suma el total, no un folio. El total del mes en curso crece en cada sincronización; nunca aparece dos veces.

## Salida [#salida]

| Campo                                               | Tipo                                                          | Requerido | Descripción                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |                                                                                                                                                                                                                                                                                                    |
| --------------------------------------------------- | ------------------------------------------------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `totales`                                           | lista de objeto                                               | sí        | Un total por mes, perspectiva, estado y tipo. Cada total se actualiza cuando se sincroniza su período: el del mes en curso crece hasta que el mes cierra, y el de un mes cerrado cambia sólo si el SII lo corrige y ese período se vuelve a sincronizar. Nunca se repite un mismo total en dos filas.                                                                                                                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                    |
| `totales[].perspectiva`                             | `"compras"` · `"ventas"`                                      | sí        | compras = la empresa es el receptor; ventas = la empresa es el emisor.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |                                                                                                                                                                                                                                                                                                    |
| `totales[].periodo`                                 | string `^\d{4}-\d{2}$`                                        | sí        | El mes del total, en formato AAAA-MM.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                    |
| `totales[].estado`                                  | `"registro"` · `"pendiente"` · `"no_incluir"` · `"reclamado"` | sí        | La casilla del registro a la que pertenece el total. En ventas es siempre 'registro'.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                    |
| `totales[].tipoDte`                                 | entero                                                        | sí        | Tipo de documento: 39 boleta electrónica, 48 comprobante de pago electrónico (pagos con tarjeta), entre otros que el SII informa sólo como total.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                                                                                                                                                                                                                                                    |
| `totales[].nombreTipo`                              | string                                                        | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | El nombre del tipo tal como lo escribe el SII. 'null' si no vino.                                                                                                                                                                                                                                  |
| `totales[].cantidad`                                | entero                                                        | sí        | Cuántos documentos suma el total del mes (por ejemplo, cuántas boletas). Es un conteo, no un folio.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |                                                                                                                                                                                                                                                                                                    |
| `totales[].montoNeto`                               | entero                                                        | sí        | Monto neto del mes, en pesos chilenos.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |                                                                                                                                                                                                                                                                                                    |
| `totales[].montoIva`                                | entero                                                        | sí        | IVA del mes, en pesos chilenos.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                    |
| `totales[].montoExento`                             | entero                                                        | sí        | Monto exento del mes, en pesos chilenos.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |                                                                                                                                                                                                                                                                                                    |
| `totales[].montoTotal`                              | entero                                                        | sí        | Total del mes tal como lo informa el SII, en pesos chilenos. Úsalo tal cual: en los comprobantes de pago no siempre es la suma de neto, IVA y exento.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                    |
| `totales[].sumable`                                 | booleano                                                      | sí        | 'true' si el total es una venta del mes que no repite ningún documento y se suma a las ventas de 'sii.rcv.consultar': hoy, las boletas (39) de ventas. 'false' en los comprobantes de pago con tarjeta (48): los informa el procesador del pago y pueden repetir ventas por las que la empresa también emitió boleta o factura, así que depende del caso: súmalos si la empresa no emite otro documento por esas ventas o si corrigió la duplicidad con una nota de crédito (la nota ya resta lo repetido); no los sumes si emitió boleta o factura y no corrigió nada. También 'false' en compras, en 'Otros aumenta/disminuye débito' (920 y 922) y en cualquier tipo que Connect todavía no ha medido: no los sumes sin revisar. |                                                                                                                                                                                                                                                                                                    |
| `totales[].fuente`                                  | `"resumen"` · `"historico"`                                   | sí        | 'resumen' = leído del resumen del RCV en la última sincronización; 'historico' = recuperado de un sync anterior al 2026-09-27.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                                                                                    |
| `totales[].sincronizadoEn`                          | string                                                        | sí        | Cuándo se leyó este total del SII por última vez, en ISO 8601 UTC.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                    |
| `cursor`                                            | string                                                        | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 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`                                    | objeto                                                        | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Completitud del último sync del período consultado. Con 'periodo', 'null' y una lista vacía significa que ese mes no está cargado: dilo, no lo informes como cero (revisa 'historico' en 'conexiones.estado.consultar'). Sin 'periodo' siempre es 'null': usa ese bloque para saber qué meses hay. |
| `sincronizacion.sincronizadoEn`                     | string                                                        | sí        | Cuándo terminó la última sincronización de este período, en ISO 8601 UTC. Es la frescura del dato que estás leyendo.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |                                                                                                                                                                                                                                                                                                    |
| `sincronizacion.completo`                           | booleano                                                      | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 'true' = el período se cargó entero. 'false' = quedaron casillas sin traer. 'null' = se está cargando o no hay registro de ese intento.                                                                                                                                                            |
| `sincronizacion.incompletos`                        | entero                                                        | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Cuántas casillas quedaron sin traer en esa sincronización. 'null' cuando no se puede saber.                                                                                                                                                                                                        |
| `sincronizacion.fueraDeVentana`                     | entero                                                        | null      | sí                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 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.                                                                                                                  |
| `sincronizacion.perspectivasFallidas`               | lista de objeto                                               | sí        | Qué direcciones fallaron en esa sincronización, con su código de error. La pueblan las guías de despacho y las boletas de honorarios; para los demás llega vacía.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                                                                                                                                                                                                                                                    |
| `sincronizacion.perspectivasFallidas[].perspectiva` | `"emitidas"` · `"recibidas"`                                  | sí        | Qué lado falló: 'emitidas' son las que emitió esta empresa y 'recibidas' las que le emitieron.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |                                                                                                                                                                                                                                                                                                    |
| `sincronizacion.perspectivasFallidas[].code`        | string                                                        | sí        | El código del catálogo de errores que explica por qué falló ese lado. Decide por el código, nunca por el texto.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                    |

<details>
  <summary>
    JSON Schema de salida
  </summary>

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "totales": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "perspectiva": {
              "type": "string",
              "enum": [
                "compras",
                "ventas"
              ],
              "description": "compras = la empresa es el receptor; ventas = la empresa es el emisor."
            },
            "periodo": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}$",
              "description": "El mes del total, en formato AAAA-MM."
            },
            "estado": {
              "type": "string",
              "enum": [
                "registro",
                "pendiente",
                "no_incluir",
                "reclamado"
              ],
              "description": "La casilla del registro a la que pertenece el total. En ventas es siempre 'registro'."
            },
            "tipoDte": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "Tipo de documento: 39 boleta electrónica, 48 comprobante de pago electrónico (pagos con tarjeta), entre otros que el SII informa sólo como total."
            },
            "nombreTipo": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "El nombre del tipo tal como lo escribe el SII. 'null' si no vino."
            },
            "cantidad": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "Cuántos documentos suma el total del mes (por ejemplo, cuántas boletas). Es un conteo, no un folio."
            },
            "montoNeto": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "Monto neto del mes, en pesos chilenos."
            },
            "montoIva": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "IVA del mes, en pesos chilenos."
            },
            "montoExento": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "Monto exento del mes, en pesos chilenos."
            },
            "montoTotal": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "Total del mes tal como lo informa el SII, en pesos chilenos. Úsalo tal cual: en los comprobantes de pago no siempre es la suma de neto, IVA y exento."
            },
            "sumable": {
              "type": "boolean",
              "description": "'true' si el total es una venta del mes que no repite ningún documento y se suma a las ventas de 'sii.rcv.consultar': hoy, las boletas (39) de ventas. 'false' en los comprobantes de pago con tarjeta (48): los informa el procesador del pago y pueden repetir ventas por las que la empresa también emitió boleta o factura, así que depende del caso: súmalos si la empresa no emite otro documento por esas ventas o si corrigió la duplicidad con una nota de crédito (la nota ya resta lo repetido); no los sumes si emitió boleta o factura y no corrigió nada. También 'false' en compras, en 'Otros aumenta/disminuye débito' (920 y 922) y en cualquier tipo que Connect todavía no ha medido: no los sumes sin revisar."
            },
            "fuente": {
              "type": "string",
              "enum": [
                "resumen",
                "historico"
              ],
              "description": "'resumen' = leído del resumen del RCV en la última sincronización; 'historico' = recuperado de un sync anterior al 2026-09-27."
            },
            "sincronizadoEn": {
              "type": "string",
              "description": "Cuándo se leyó este total del SII por última vez, en ISO 8601 UTC."
            }
          },
          "required": [
            "perspectiva",
            "periodo",
            "estado",
            "tipoDte",
            "nombreTipo",
            "cantidad",
            "montoNeto",
            "montoIva",
            "montoExento",
            "montoTotal",
            "sumable",
            "fuente",
            "sincronizadoEn"
          ],
          "additionalProperties": false
        },
        "description": "Un total por mes, perspectiva, estado y tipo. Cada total se actualiza cuando se sincroniza su período: el del mes en curso crece hasta que el mes cierra, y el de un mes cerrado cambia sólo si el SII lo corrige y ese período se vuelve a sincronizar. Nunca se repite un mismo total en dos filas."
      },
      "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 cargó entero. 'false' = quedaron casillas sin traer. 'null' = se está cargando o 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 en esa sincronización, con su código de error. La pueblan las guías de despacho y las 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. Con 'periodo', 'null' y una lista vacía significa que ese mes no está cargado: dilo, no lo informes como cero (revisa 'historico' en 'conexiones.estado.consultar'). Sin 'periodo' siempre es 'null': usa ese bloque para saber qué meses hay."
      }
    },
    "required": [
      "totales",
      "cursor",
      "sincronizacion"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Errores de esta tool [#errores-de-esta-tool]

| Código                | HTTP | Reintentable | Qué hacer                                                                     |
| --------------------- | ---- | ------------ | ----------------------------------------------------------------------------- |
| `connection_disabled` | 403  | no           | Reactívala en /connections o usa otra conexión del mismo sistema.             |
| `alcance_not_enabled` | 403  | no           | Habilita 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](../errores).

## Próximos pasos [#próximos-pasos]

* [`sii.conexion.sincronizar`](./conexion-sincronizar): la tool que escribe los datos que esta lectura devuelve.
* [Sincronizar y consultar](/docs/conceptos/sincronizar-consultar): por qué leer datos reales son dos pasos.
