api · Documentación
Iniciar sesión

SIRE — Registro de Ventas (RVIE) y Compras (RCE)

Descarga la propuesta que SUNAT ya arma automáticamente a partir de tus comprobantes electrónicos: el RVIE (Registro de Ventas e Ingresos Electrónico) y el RCE (Registro de Compras Electrónico), ambos parte del sistema SIRE. Es la misma información que verías entrando tú mismo a SUNAT Operaciones en Línea (SOL) y generando el reporte — esta API automatiza esos mismos pasos y te devuelve el resultado ya en JSON, curado a los campos que de verdad se usan (no las ~50-80 columnas crudas que expone SUNAT).

Habla directo con la API oficial de SUNAT (api-sire.sunat.gob.pe), no con ningún intermediario. Por eso el login es distinto al resto de esta API: SIRE exige la Clave SOL del propio RUC consultado (OAuth2 grant_type=password) — no existe una cuenta SOL general de respaldo como sí la hay para DNI/RUC/CDR. Cada cliente debe registrar sus propias 5 credenciales antes de poder usar SIRE (ver siguiente sección).

1. Antes de empezar: 5 credenciales obligatorias

SIRE necesita los 5 datos juntos — no son credenciales independientes, son un solo login OAuth2 armado con datos de dos orígenes distintos:

DatoDe dónde sale
RUCEl RUC del contribuyente que vas a consultar.
Usuario SOLTu usuario de SUNAT Operaciones en Línea (principal o secundario).
Clave SOLLa clave de ese mismo usuario SOL.
Client IDSe generan dentro de SOL, en Empresas → Credenciales de API SUNAT, creando una credencial para la URI "MIGE RCE y RVIE - SIRE".
Client Secret

Como cliente de esta API, cargas los 5 datos tú mismo en mblapirest.com/api/mi-cuenta → pestaña "Credenciales SUNAT". Si nos administras la cuenta de otro cliente, el mismo formulario existe en el panel admin, en /clientes/{id}/editar.

Sin estos 5 datos completos, cualquiera de los 4 endpoints de abajo responde success: false con el mensaje "No hay credenciales SOL configuradas..." o similar — no hay fallback silencioso a otra cuenta.

2. El flujo tiene 4 pasos (siempre en este orden)

PasoEndpointQué hace
1. PeriodosGET /v1/sire/{ventas|compras}/periodosLista los periodos tributarios (meses) que SUNAT tiene habilitados para tu cuenta.
2. TicketPOST /v1/sire/{ventas|compras}/ticketLe pide a SUNAT que empiece a generar el reporte de un periodo. SUNAT lo procesa de forma asíncrona y devuelve un num_ticket para hacerle seguimiento.
3. PropuestaPOST /v1/sire/{ventas|compras}/propuestaConsulta si el ticket ya terminó; si sí, descarga el archivo, lo procesa y lo guarda en tu cuenta. Si SUNAT todavía lo está generando, responde listo: false — hay que reintentar en unos minutos.
4. DetalleGET /v1/sire/{ventas|compras}/detalleLee lo ya guardado en el paso 3 y te lo devuelve paginado en JSON. Se puede llamar todas las veces que quieras, no vuelve a golpear a SUNAT.

Sustituye {ventas|compras} por ventas (RVIE) o compras (RCE) según el registro que necesites — la forma de los 4 endpoints es idéntica para ambos, solo cambian algunos campos del detalle curado (ver sección 4). Un cliente puede tener contratado solo uno de los dos servicios, o ambos, de forma independiente.

¿Prefieres probarlo sin escribir código? El panel admin tiene un asistente visual paso a paso en Probar API Desk (/probar/sire) que hace exactamente este flujo por ti, contra la API real.

3. Los 4 endpoints en detalle

Paso 1 — Periodos disponibles

GET/v1/sire/ventas/periodos (o /v1/sire/compras/periodos)

No recibe parámetros. La respuesta se cachea por cuenta durante el mes en curso, así que llamarlo varias veces el mismo mes no vuelve a consultar a SUNAT.

curl https://mblapirest.com/api/v1/sire/ventas/periodos \
  -H "Authorization: Bearer TU_API_TOKEN"
{
  "success": true,
  "data": [ /* periodos tal como los devuelve SUNAT */ ]
}

Paso 2 — Solicitar ticket

POST/v1/sire/ventas/ticket (o /v1/sire/compras/ticket)

NombreRequeridoDescripción
periodoFormato AAAAMM (p. ej. 202501 para enero 2025). SIRE no existe antes de 2023.

Si ya pediste un ticket para ese mismo periodo hoy (hace menos de 1 hora), se reutiliza el mismo num_ticket en vez de pedirle otro a SUNAT.

curl -X POST https://mblapirest.com/api/v1/sire/ventas/ticket \
  -H "Authorization: Bearer TU_API_TOKEN" \
  -d "periodo=202501"
{
  "success": true,
  "num_ticket": "20260101..."
}

Paso 3 — Consultar y descargar la propuesta

POST/v1/sire/ventas/propuesta (o /v1/sire/compras/propuesta)

NombreRequeridoDescripción
num_ticketEl ticket obtenido en el paso 2.
curl -X POST https://mblapirest.com/api/v1/sire/ventas/propuesta \
  -H "Authorization: Bearer TU_API_TOKEN" \
  -d "num_ticket=20260101..."

Mientras SUNAT sigue procesando:

{ "success": true, "listo": false, "message": "El ticket aun esta en proceso en SUNAT, consulte mas tarde." }

Cuando ya terminó (aquí es cuando se guardan las filas en tu cuenta):

{ "success": true, "listo": true, "filas_procesadas": 134 }

Paso 4 — Leer el detalle

GET/v1/sire/ventas/detalle (o /v1/sire/compras/detalle)

NombreRequeridoDescripción
periodoFormato AAAAMM, el mismo que usaste en el paso 2.
paginaOpcionalPor defecto 1.
por_paginaOpcionalPor defecto 100, máximo 500.
curl "https://mblapirest.com/api/v1/sire/ventas/detalle?periodo=202501&pagina=1&por_pagina=100" \
  -H "Authorization: Bearer TU_API_TOKEN"
{
  "success": true,
  "periodo": "202501",
  "total": 134,
  "pagina": 1,
  "por_pagina": 100,
  "data": [
    {
      "car_sunat": "...",
      "tipo_comprobante": "01",
      "serie": "F001",
      "numero": "123",
      "numero_final": "123",
      "fecha_emision": "2025-01-15",
      "tipo_documento_identidad": "6",
      "numero_documento_identidad": "20123456789",
      "cliente": "EMPRESA EJEMPLO SAC",
      "moneda": "PEN",
      "total": 1180.00,
      "bi_gravada": 1000.00,
      "igv": 180.00,
      "tipo_operacion": "01",
      "tipo_de_nota": "",
      "estado_comprobante": "1"
    }
  ]
}

4. Diferencias entre Ventas y Compras en el detalle

Los campos son casi los mismos; solo tres cambian de nombre o de presencia según el tipo:

CampoVentas (RVIE)Compras (RCE)
Contraparteclienteproveedor
Base imponiblebi_gravadabi_gravado
tipo_operacionPresenteNo aplica (no viene en la respuesta)

Referencia oficial

Basado en el "Manual de servicios Web Api SIRE Ventas/Compras" publicado por SUNAT. Los códigos de libro internos son 140000 (RVIE) y 080000 (RCE) — no se necesitan para usar esta API, SUNAT los infiere de la URL que se usa internamente.

Última actualización: 03/09/2026