# Consultar propuesta de compras de SUNAT

> Lee los comprobantes de la propuesta RCE ya sincronizada para esta conexión y período.



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

|                     |                                                                    |
| ------------------- | ------------------------------------------------------------------ |
| **Tool ID**         | `sunat_beta.compras.consultar`                                     |
| **Nombre MCP**      | `sunat_beta__compras__consultar`                                   |
| **Conector**        | `sunat_beta`                                                       |
| **Plano**           | `action`                                                           |
| **Lee el alcance**  | `compras` (debe estar habilitado en la conexión)                   |
| **Scope (permiso)** | `sunat_beta:read`                                                  |
| **Auth**            | `none`                                                             |
| **Versión**         | `1`                                                                |
| **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 y campo `connectionId` en el `execute` de MCP. 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`](/docs/referencia/conexiones/estado-consultar).

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

No llama a SUNAT y no acredita un registro presentado. Lista vacía con sincronizacion null significa período no cargado, nunca cero documentos. Los importes conservan la base contable de SIRE y no se convierten a la moneda original del comprobante.

## Entrada [#entrada]

| Campo     | Tipo                     | Requerido          | Descripción                                                     |                                       |
| --------- | ------------------------ | ------------------ | --------------------------------------------------------------- | ------------------------------------- |
| `periodo` | string \`^\d{4}-(0\[1-9] | 1\[0-2])$\`        | sí                                                              | Período tributario de SUNAT, AAAA-MM. |
| `limite`  | entero 1-500             | no · default `100` | Filas por página, entre 1 y 500; 100 por defecto.               |                                       |
| `cursor`  | string                   | no                 | Cursor opaco de la respuesta anterior, reenviado sin modificar. |                                       |

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

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "periodo": {
        "type": "string",
        "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
        "description": "Período tributario de SUNAT, AAAA-MM."
      },
      "limite": {
        "default": 100,
        "description": "Filas por página, entre 1 y 500; 100 por defecto.",
        "type": "integer",
        "minimum": 1,
        "maximum": 500
      },
      "cursor": {
        "description": "Cursor opaco de la respuesta anterior, reenviado sin modificar.",
        "type": "string",
        "minLength": 1,
        "maxLength": 2048
      }
    },
    "required": [
      "periodo"
    ]
  }
  ```
</details>

## Ejemplo [#ejemplo]

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

```json title="MCP · meta-tool execute"
{
  "tool": "sunat_beta.compras.consultar",
  "params": {
    "periodo": "2026-10",
    "limite": 100
  },
  "connectionId": "conn_9tKfR2mQx4Vb"
}
```

**Salida esperada (200):**

```json
{
  "data": {
    "documentos": [],
    "cursor": null,
    "sincronizacion": null
  },
  "meta": {
    "request_id": "req_…",
    "tool_id": "sunat_beta.compras.consultar",
    "plane": "action",
    "latency_ms": 24,
    "audit_status": "recorded"
  }
}
```

## Salida [#salida]

| Campo                                    | Tipo                              | Requerido         | Descripción                                                                                                                                          |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| ---------------------------------------- | --------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------- | --------------------- | ------------------ | ------- | ------- | ---------- | -------------- | ------- | --- | ----------------- | --- | ------------------------ | ------------------------------------------------- | ------------------------------------------------------- | --------------------------------------------- |
| `documentos`                             | lista de objeto                   | sí                | Comprobantes conservados de la propuesta, sin totales agregados.                                                                                     |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].origen`                    | string                            | sí                | Propuesta de SIRE. No es un registro presentado ni una declaración tributaria.                                                                       |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].libro`                     | `"rvie"` · `"rce"`                | sí                | rvie: ventas e ingresos; rce: compras.                                                                                                               |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].periodo`                   | string \`^\d{4}-(0\[1-9]          | 1\[0-2])$\`       | sí                                                                                                                                                   | Período tributario de SUNAT, AAAA-MM.                                                                    |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].tipoIdentificadorEmisor`   | string `^[^\p{Cc}]+$`             | sí                | Tipo de identificación del emisor informado por SUNAT.                                                                                               |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].identificadorEmisor`       | string `^[^\p{Cc}]+$`             | sí                | Identificación del emisor; conserva el texto y sus ceros.                                                                                            |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].tipoComprobante`           | string `^[^\p{Cc}]+$`             | sí                | Código de tipo de comprobante de SUNAT.                                                                                                              |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].serie`                     | string `^[^\p{Cc}]+$`             | sí                | Serie original del comprobante, parte de su identidad.                                                                                               |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].numero`                    | string `^[^\p{Cc}]+$`             | sí                | Número original del comprobante, como texto; nunca se convierte a un número JavaScript.                                                              |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].fechaEmision`              | string \`^(?:(?:\d\d\[2468]\[048] | \d\d\[13579]\[26] | \d\d0\[48]                                                                                                                                           | \[02468]\[048]00                                                                                         | \[13579]\[26]00)-02-29 | \d{4}-(?:(?:0\[13578] | 1\[02])-(?:0\[1-9] | \[12]\d | 3\[01]) | (?:0\[469] | 11)-(?:0\[1-9] | \[12]\d | 30) | (?:02)-(?:0\[1-9] | 1\d | 2\[0-8])))$\`            | sí                                                | Fecha de emisión, AAAA-MM-DD, sin hora ni zona horaria. |                                               |
| `documentos[].tipoIdentificadorReceptor` | string `^[^\p{Cc}]+$`             | no                | Tipo de identificación del receptor, cuando SUNAT lo informa.                                                                                        |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].identificadorReceptor`     | string `^[^\p{Cc}]+$`             | no                | Identificación del receptor, cuando SUNAT la informa.                                                                                                |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].moneda`                    | string `^[A-Z]{3}$`               | null              | sí                                                                                                                                                   | Moneda de los importes en la contabilidad SIRE. null si no se pudo determinar; no se infiere PEN.        |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].monedaOriginal`            | string `^[A-Z]{3}$`               | null              | sí                                                                                                                                                   | Moneda original del comprobante. Puede diferir de la moneda de los importes; null si es desconocida.     |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].baseMonetaria`             | string                            | sí                | Los importes reflejan la base contable de SIRE, sin conversión adicional de Connect.                                                                 |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].tipoCambio`                | string `^-?\d+(?:\.\d+)?$`        | null              | no                                                                                                                                                   | Tipo de cambio informado por SIRE, sin recalcular importes. Ausente o null si no consta.                 |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].total`                     | string `^-?\d+(?:\.\d+)?$`        | sí                | Importe total decimal como texto, en moneda de contabilidad SIRE. No sumar con monedas distintas o desconocidas.                                     |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].baseImponible`             | string `^-?\d+(?:\.\d+)?$`        | no                | Base imponible decimal de SIRE; ausente cuando no consta, distinto de cero.                                                                          |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].igv`                       | string `^-?\d+(?:\.\d+)?$`        | no                | IGV decimal de SIRE; ausente cuando no consta, distinto de cero.                                                                                     |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `documentos[].carSunat`                  | string `^[^\p{Cc}]+$`             | no                | CAR informado por SUNAT. No se fabrica ni se usa como identidad canónica del documento.                                                              |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `cursor`                                 | string                            | null              | sí                                                                                                                                                   | Cursor para la página siguiente. null significa que no hay más filas.                                    |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `sincronizacion`                         | objeto                            | null              | sí                                                                                                                                                   | null: no hay evidencia de una lectura conservada. Una lista vacía con null no significa cero documentos. |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `sincronizacion.sincronizadoEn`          | string \`^(?:(?:\d\d\[2468]\[048] | \d\d\[13579]\[26] | \d\d0\[48]                                                                                                                                           | \[02468]\[048]00                                                                                         | \[13579]\[26]00)-02-29 | \d{4}-(?:(?:0\[13578] | 1\[02])-(?:0\[1-9] | \[12]\d | 3\[01]) | (?:0\[469] | 11)-(?:0\[1-9] | \[12]\d | 30) | (?:02)-(?:0\[1-9] | 1\d | 2\[0-8])))T(?:(?:\[01]\d | 2\[0-3]):\[0-5]\d(?::\[0-5]\d(?:.\d+)?)?(?:Z))$\` | sí                                                      | Instante UTC de la última lectura conservada. |
| `sincronizacion.completo`                | booleano                          | sí                | true sólo si se descargó y validó todo el alcance. false no acredita ausencia de documentos.                                                         |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |
| `sincronizacion.cantidad`                | entero                            | sí                | Registros de la última lectura conservada, antes de paginar. Si completo es false, esta cantidad histórica no acredita el total vigente del período. |                                                                                                          |                        |                       |                    |         |         |            |                |         |     |                   |     |                          |                                                   |                                                         |                                               |

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

  ```json
  {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "documentos": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "origen": {
              "type": "string",
              "const": "propuesta",
              "description": "Propuesta de SIRE. No es un registro presentado ni una declaración tributaria."
            },
            "libro": {
              "type": "string",
              "enum": [
                "rvie",
                "rce"
              ],
              "description": "rvie: ventas e ingresos; rce: compras."
            },
            "periodo": {
              "type": "string",
              "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
              "description": "Período tributario de SUNAT, AAAA-MM."
            },
            "tipoIdentificadorEmisor": {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^[^\\p{Cc}]+$",
              "description": "Tipo de identificación del emisor informado por SUNAT."
            },
            "identificadorEmisor": {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^[^\\p{Cc}]+$",
              "description": "Identificación del emisor; conserva el texto y sus ceros."
            },
            "tipoComprobante": {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^[^\\p{Cc}]+$",
              "description": "Código de tipo de comprobante de SUNAT."
            },
            "serie": {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^[^\\p{Cc}]+$",
              "description": "Serie original del comprobante, parte de su identidad."
            },
            "numero": {
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^[^\\p{Cc}]+$",
              "description": "Número original del comprobante, como texto; nunca se convierte a un número JavaScript."
            },
            "fechaEmision": {
              "type": "string",
              "format": "date",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
              "description": "Fecha de emisión, AAAA-MM-DD, sin hora ni zona horaria."
            },
            "tipoIdentificadorReceptor": {
              "description": "Tipo de identificación del receptor, cuando SUNAT lo informa.",
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^[^\\p{Cc}]+$"
            },
            "identificadorReceptor": {
              "description": "Identificación del receptor, cuando SUNAT la informa.",
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^[^\\p{Cc}]+$"
            },
            "moneda": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[A-Z]{3}$"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Moneda de los importes en la contabilidad SIRE. null si no se pudo determinar; no se infiere PEN."
            },
            "monedaOriginal": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[A-Z]{3}$"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Moneda original del comprobante. Puede diferir de la moneda de los importes; null si es desconocida."
            },
            "baseMonetaria": {
              "type": "string",
              "const": "contabilidad_sire",
              "description": "Los importes reflejan la base contable de SIRE, sin conversión adicional de Connect."
            },
            "tipoCambio": {
              "description": "Tipo de cambio informado por SIRE, sin recalcular importes. Ausente o null si no consta.",
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 80,
                  "pattern": "^-?\\d+(?:\\.\\d+)?$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "total": {
              "type": "string",
              "maxLength": 80,
              "pattern": "^-?\\d+(?:\\.\\d+)?$",
              "description": "Importe total decimal como texto, en moneda de contabilidad SIRE. No sumar con monedas distintas o desconocidas."
            },
            "baseImponible": {
              "description": "Base imponible decimal de SIRE; ausente cuando no consta, distinto de cero.",
              "type": "string",
              "maxLength": 80,
              "pattern": "^-?\\d+(?:\\.\\d+)?$"
            },
            "igv": {
              "description": "IGV decimal de SIRE; ausente cuando no consta, distinto de cero.",
              "type": "string",
              "maxLength": 80,
              "pattern": "^-?\\d+(?:\\.\\d+)?$"
            },
            "carSunat": {
              "description": "CAR informado por SUNAT. No se fabrica ni se usa como identidad canónica del documento.",
              "type": "string",
              "minLength": 1,
              "maxLength": 512,
              "pattern": "^[^\\p{Cc}]+$"
            }
          },
          "required": [
            "origen",
            "libro",
            "periodo",
            "tipoIdentificadorEmisor",
            "identificadorEmisor",
            "tipoComprobante",
            "serie",
            "numero",
            "fechaEmision",
            "moneda",
            "monedaOriginal",
            "baseMonetaria",
            "total"
          ],
          "additionalProperties": false
        },
        "description": "Comprobantes conservados de la propuesta, sin totales agregados."
      },
      "cursor": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "Cursor para la página siguiente. null significa que no hay más filas."
      },
      "sincronizacion": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "sincronizadoEn": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                "description": "Instante UTC de la última lectura conservada."
              },
              "completo": {
                "type": "boolean",
                "description": "true sólo si se descargó y validó todo el alcance. false no acredita ausencia de documentos."
              },
              "cantidad": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991,
                "description": "Registros de la última lectura conservada, antes de paginar. Si completo es false, esta cantidad histórica no acredita el total vigente del período."
              }
            },
            "required": [
              "sincronizadoEn",
              "completo",
              "cantidad"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ],
        "description": "null: no hay evidencia de una lectura conservada. Una lista vacía con null no significa cero documentos."
      }
    },
    "required": [
      "documentos",
      "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.                                                   |
| `connection_not_found` | 404  | no           | Usa uno de los connectionId que lista el error, o revisa la conexión en /connections. No hace falta reactivar nada. |
| `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](/docs/referencia/errores).

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

* [`sunat_beta.conexion.sincronizar`](/docs/referencia/sunat_beta/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.
