Connect

Consultar propuesta de ventas de SUNAT

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

Tool IDsunat_beta.ventas.consultar
Nombre MCPsunat_beta__ventas__consultar
Conectorsunat_beta
Planoaction
Lee el alcanceventas (debe estar habilitado en la conexión)
Scope (permiso)sunat_beta:read
Authnone
Versión1
Sensiblesí
Deprecadono
ComportamientoreadOnly=true, destructive=false, idempotent=true, openWorld=false

Requiere conexión. Indica cuál en cada llamada: header X-Connect-Connection en REST 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.

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

CampoTipoRequeridoDescripción
periodostring `^\d4-(0[1-9]1[0-2])$`sí
limiteentero 1-500no · default 100Filas por página, entre 1 y 500; 100 por defecto.
cursorstringnoCursor opaco de la respuesta anterior, reenviado sin modificar.
JSON Schema de entrada
{
  "$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"
  ]
}

Ejemplo

curl
curl -X POST https://connect.emisso.ai/api/v1/tools/sunat_beta.ventas.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}}'
MCP · meta-tool execute
{
  "tool": "sunat_beta.ventas.consultar",
  "params": {
    "periodo": "2026-10",
    "limite": 100
  },
  "connectionId": "conn_9tKfR2mQx4Vb"
}

Salida esperada (200):

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

Salida

CampoTipoRequeridoDescripción
documentoslista de objetosíComprobantes conservados de la propuesta, sin totales agregados.
documentos[].origenstringsí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[].periodostring `^\d4-(0[1-9]1[0-2])$`sí
documentos[].tipoIdentificadorEmisorstring ^[^\p{Cc}]+$síTipo de identificación del emisor informado por SUNAT.
documentos[].identificadorEmisorstring ^[^\p{Cc}]+$síIdentificación del emisor; conserva el texto y sus ceros.
documentos[].tipoComprobantestring ^[^\p{Cc}]+$síCódigo de tipo de comprobante de SUNAT.
documentos[].seriestring ^[^\p{Cc}]+$síSerie original del comprobante, parte de su identidad.
documentos[].numerostring ^[^\p{Cc}]+$síNúmero original del comprobante, como texto; nunca se convierte a un número JavaScript.
documentos[].fechaEmisionstring `^(?:(?:\d\d[2468][048]\d\d[13579][26]\d\d0[48]
documentos[].tipoIdentificadorReceptorstring ^[^\p{Cc}]+$noTipo de identificación del receptor, cuando SUNAT lo informa.
documentos[].identificadorReceptorstring ^[^\p{Cc}]+$noIdentificación del receptor, cuando SUNAT la informa.
documentos[].monedastring ^[A-Z]{3}$nullsí
documentos[].monedaOriginalstring ^[A-Z]{3}$nullsí
documentos[].baseMonetariastringsíLos importes reflejan la base contable de SIRE, sin conversión adicional de Connect.
documentos[].tipoCambiostring ^-?\d+(?:\.\d+)?$nullno
documentos[].totalstring ^-?\d+(?:\.\d+)?$síImporte total decimal como texto, en moneda de contabilidad SIRE. No sumar con monedas distintas o desconocidas.
documentos[].baseImponiblestring ^-?\d+(?:\.\d+)?$noBase imponible decimal de SIRE; ausente cuando no consta, distinto de cero.
documentos[].igvstring ^-?\d+(?:\.\d+)?$noIGV decimal de SIRE; ausente cuando no consta, distinto de cero.
documentos[].carSunatstring ^[^\p{Cc}]+$noCAR informado por SUNAT. No se fabrica ni se usa como identidad canónica del documento.
cursorstringnullsí
sincronizacionobjetonullsí
sincronizacion.sincronizadoEnstring `^(?:(?:\d\d[2468][048]\d\d[13579][26]\d\d0[48]
sincronizacion.completobooleanosítrue sólo si se descargó y validó todo el alcance. false no acredita ausencia de documentos.
sincronizacion.cantidadenterosí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.
JSON Schema de salida
{
  "$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
}

Errores de esta tool

CódigoHTTPReintentableQué hacer
connection_disabled403noReactívala en /connections o usa otra conexión del mismo sistema.
connection_not_found404noUsa uno de los connectionId que lista el error, o revisa la conexión en /connections. No hace falta reactivar nada.
alcance_not_enabled403noHabilita el alcance en /connections o quítalo del input de la sincronización.

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

Próximos pasos

En esta página