# SUNAT (beta)

> Consulta por API o MCP los períodos SIRE y las propuestas de compras y ventas de una empresa peruana conectada a Emisso.



Con la conexión de SUNAT, tu software o tu agente lee los datos tributarios de una empresa peruana ya
guardados en Emisso: el catálogo de períodos SIRE y las propuestas de compras (RCE) y de ventas e ingresos
(RVIE) de cada mes. Las consultas no llaman a SUNAT: responden desde la última sincronización.

## Qué datos trae [#qué-datos-trae]

| Alcance    | Herramienta                     | Qué devuelve                                                           |
| ---------- | ------------------------------- | ---------------------------------------------------------------------- |
| `periodos` | `sunat_beta.periodos.consultar` | Los períodos de RCE y RVIE con su estado en SUNAT                      |
| `compras`  | `sunat_beta.compras.consultar`  | Los comprobantes de la propuesta de compras (RCE) de un mes            |
| `ventas`   | `sunat_beta.ventas.consultar`   | Los comprobantes de la propuesta de ventas e ingresos (RVIE) de un mes |

Son las propuestas del SIRE: no acreditan un registro presentado ni una declaración tributaria. Emisso no
acepta propuestas, no presenta libros ni emite comprobantes.

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

1. **Conecta tu empresa.** El dueño o un administrador elige SUNAT en
   [Conexiones](https://connect.emisso.ai/connections/new?sistema=sunat_beta) y guarda el acceso de la empresa.
   El panel muestra «Primera sincronización en cola» mientras se preparan los datos.
2. **Consulta los datos sincronizados.** Una vez que se complete la primera sincronización, revisa
   los datos desde el detalle de la conexión.
3. **Permiso en tu clave o en tu agente.** Agrega el permiso **SUNAT (beta)** (`sunat_beta:read`) a tu
   [clave de API](https://connect.emisso.ai/api-keys) o a tu [agente](https://connect.emisso.ai/agentes).
   Conectar SUNAT no cambia los permisos de las claves y agentes que ya existen.
4. **El ID de la conexión.** Cópialo desde el detalle de la conexión: empieza con `conn_`.

## Consultar por API [#consultar-por-api]

Cada herramienta es un `POST` a `https://connect.emisso.ai/api/v1/tools/<herramienta>/execute`. La clave
va en `Authorization`, la conexión en la cabecera `X-Connect-Connection` y los argumentos dentro de `input`.
Las compras de septiembre de 2026:

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

```json
{
  "data": {
    "documentos": [
      {
        "origen": "propuesta",
        "libro": "rce",
        "periodo": "2026-09",
        "tipoIdentificadorEmisor": "6",
        "identificadorEmisor": "20000000001",
        "tipoComprobante": "01",
        "serie": "F001",
        "numero": "00000123",
        "fechaEmision": "2026-09-03",
        "tipoIdentificadorReceptor": "6",
        "identificadorReceptor": "20000000002",
        "moneda": null,
        "monedaOriginal": "PEN",
        "baseMonetaria": "contabilidad_sire",
        "tipoCambio": null,
        "total": "1180"
      }
    ],
    "cursor": null,
    "sincronizacion": {
      "sincronizadoEn": "2026-10-30T21:00:00.000Z",
      "completo": true,
      "cantidad": 1
    }
  },
  "meta": {
    "request_id": "req_…",
    "tool_id": "sunat_beta.compras.consultar",
    "plane": "action",
    "latency_ms": 31,
    "audit_status": "recorded"
  }
}
```

Para las ventas, cambia `compras` por `ventas`. Los períodos se consultan sin mes, con
`sunat_beta.periodos.consultar` y, si quieres, `{"libro":"rvie"}` o `{"libro":"rce"}`.

Cada página trae hasta `limite` filas, entre 1 y 500. Si `cursor` no viene en `null`, repite la llamada con
ese `cursor` dentro de `input`, sin modificarlo, hasta que vuelva en `null`.

## Consultar por MCP [#consultar-por-mcp]

Tu agente encuentra las herramientas de SUNAT con `search_docs` y las ejecuta con `execute`, siempre con el
`connectionId` de la empresa:

```json
{
  "tool": "sunat_beta.ventas.consultar",
  "params": { "periodo": "2026-09", "limite": 100 },
  "connectionId": "conn_…"
}
```

`search_docs` muestra las herramientas de SUNAT cuando están disponibles para tu organización. Si tu agente
las encuentra pero `execute` responde `scope_not_granted`, al agente le falta el permiso **SUNAT (beta)**.

## Cómo leer la respuesta [#cómo-leer-la-respuesta]

* **`sincronizacion` en `null`.** Todavía no hay una lectura guardada para ese mes. Una lista vacía con
  `null` no significa cero comprobantes.
* **`completo: true`.** El mes se leyó completo; `cantidad` es el total de filas antes de paginar. Una
  lectura completa con cero filas sí confirma un mes sin comprobantes.
* **Montos como texto.** `total` es un decimal en texto, en la moneda contable del SIRE. Conviértelo con
  una librería decimal si necesitas exactitud. `moneda` puede venir en `null` y `monedaOriginal` es la del
  comprobante: no sumes importes de monedas distintas o desconocidas.
* **Mes de la propuesta.** `periodo` es el mes de la propuesta y `fechaEmision` la del comprobante. En
  compras, un comprobante de un mes anterior puede figurar en la propuesta del mes siguiente.
* **Identidad del comprobante.** Un comprobante se identifica por su emisor (`tipoIdentificadorEmisor` e
  `identificadorEmisor`), `tipoComprobante`, `serie` y `numero`. En la liquidación de cobranza de aduanas
  (`54`), la serie es el código de la aduana y `anioAduana` completa la identidad, porque su número se
  reinicia cada año.

## Comprobantes incluidos [#comprobantes-incluidos]

| Tipo | Comprobante                        | Libros           |
| ---- | ---------------------------------- | ---------------- |
| `01` | Factura                            | Compras y ventas |
| `03` | Boleta de venta                    | Compras y ventas |
| `07` | Nota de crédito                    | Compras y ventas |
| `08` | Nota de débito                     | Compras y ventas |
| `54` | Liquidación de cobranza de aduanas | Compras          |

Si un mes trae un comprobante que no está en esta tabla, o boletas informadas como rango, Emisso no publica
ese libro incompleto: la consulta conserva la última lectura completa, o `sincronizacion: null` si no la
hay, y el equipo de Emisso revisa el caso para incorporarlo.

## Sincronización [#sincronización]

Emisso sincroniza cada día el mes en curso y, hasta el día 20, también el mes anterior. Si necesitas
otro mes, pídeselo al equipo de Emisso.

## Errores frecuentes [#errores-frecuentes]

| Código                 | Qué hacer                                                                                     |
| ---------------------- | --------------------------------------------------------------------------------------------- |
| `scope_not_granted`    | Agrega el permiso **SUNAT (beta)** a la clave de API o al agente que hace la llamada.         |
| `connection_not_found` | Revisa el `connectionId` o la cabecera `X-Connect-Connection`: debe ser la conexión de SUNAT. |
| `alcance_not_enabled`  | El alcance no está habilitado en esa conexión. Escríbele al equipo de Emisso.                 |

El detalle de cada herramienta está en la [referencia de SUNAT (beta)](/docs/referencia/sunat_beta).


---

Esta página es parte de la documentación de Emisso Connect. El índice completo, con cada página y su descripción, está en https://connect.emisso.ai/llms.txt. Esta misma página en HTML: https://connect.emisso.ai/docs/peru/sunat.
