api · Documentación
Iniciar sesión

Validación de comprobantes electrónicos

Varias formas de verificar comprobantes, según lo que necesites: validación automática con respaldo, validación puntual rápida, validación oficial contra la API de SUNAT, validación masiva (hasta 150 filas), descarga del XML/PDF original de compras/ventas, consulta del detalle (ítems) de un comprobante, y reenvío por correo.

Descargar XML, descargar PDF, consultar el detalle/ítems y reenviar por correo son el mismo servicio (activas uno, tienes los cuatro) — todos usan la misma sesión SOL y el mismo mecanismo de SUNAT (api-cpe.sunat.gob.pe), solo cambia qué te devuelven.

Validación automática (recomendada)

POST/cpe/validar-auto

Intenta primero la vía oficial de SUNAT (OAuth2 — más estable, el token se renueva solo por código); si falla por cualquier motivo (credenciales incompletas, SUNAT no responde, error de red), cae automáticamente al buscador público (scraping), sin que tengas que implementar tu propio reintento ni elegir un método. Mismos parámetros que /cpe/validar.

curl -X POST https://mblapirest.com/api/v1/cpe/validar-auto \
  -H "Authorization: Bearer TU_API_TOKEN" \
  -d "ruc=20123456789" -d "document_type=01" -d "serie=F001" -d "numero=123" \
  -d "fecha=15/01/2025" -d "monto=118.00"
{
  "metodo": "oficial",
  "data": { "comprobante_estado_codigo": "1", "numero_comprobante": "F001-123", "..." }
}

Si tuvo que usar el respaldo, la respuesta trae "metodo": "scraper" y un aviso explicando que la vía oficial no respondió — útil para que sepas si te conviene revisar tus credenciales OAuth2. Si ambos métodos fallan, la respuesta trae "success": false con el detalle de cada intento en detalle_oficial/detalle_scraper.

Para que el respaldo automático funcione de verdad, configura ambos métodos en /configuracion (panel admin): las credenciales OAuth2 (Client ID/Secret) y el token de verificación del buscador público. Si solo configuras uno, el otro simplemente no aporta como respaldo.

Validación individual (solo buscador público)

POST/cpe/validar

Consulta el buscador público de SUNAT (sin sesión SOL) para verificar un comprobante puntual.

NombreRequeridoDescripción
rucRUC emisor.
document_typeCódigo SUNAT del tipo de comprobante (01 factura, 03 boleta, etc.).
serieSerie del comprobante.
numeroNúmero correlativo.
fechaFecha de emisión.
montoMonto total del comprobante.
curl -X POST https://mblapirest.com/api/v1/cpe/validar \
  -H "Authorization: Bearer TU_API_TOKEN" \
  -d "ruc=20123456789" -d "document_type=01" -d "serie=F001" -d "numero=123" \
  -d "fecha=15/01/2025" -d "monto=118.00"
Requiere que el negocio tenga configurado el token de verificación de SUNAT en /configuracion.

Validación oficial (API SUNAT)

POST/cpe/validar-oficial

Igual que la anterior, pero contra la API REST oficial de SUNAT (OAuth2 client-credentials) en vez del buscador público — más confiable, requiere credenciales OAuth2 propias.

Mismos parámetros que /cpe/validar.

Requiere client_id/client_secret/ruc (OAuth2 "Extranet API" de SUNAT) configurados en /configuracion.

Historial de tus validaciones

Cada validación individual (/cpe/validar, /cpe/validar-oficial o /cpe/validar-auto) queda guardada en tu historial — entra a Mi cuenta → Validaciones CPE para verlas o exportarlas a Excel. No es un endpoint de la API (es parte del panel web), pensado para que lleves tu propio registro sin tener que guardarlo tú del lado del cliente.

Validación masiva

POST/cpe/validar-masivo

Valida hasta 150 comprobantes en una sola llamada, contra SUNAT vía sesión SOL (usuario/clave SOL).

curl -X POST https://mblapirest.com/api/v1/cpe/validar-masivo \
  -H "Authorization: Bearer TU_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"data":[
    {"ruc_emisor":"20123456789","tipo_documento":"01","serie":"F001","numero":"123","fecha":"15/01/2025","total":"118.00"}
  ]}'
Usa tus credenciales SOL propias si las configuraste en tu cuenta; si no, la cuenta SOL general del negocio.

Descarga de XML (compras/ventas)

POST/cpe/descargar-xml

Descarga el XML original de un comprobante (no el CDR), vía sesión SOL + la API moderna de SUNAT (api-cpe.sunat.gob.pe).

NombreRequeridoDescripción
ruc_emisorRUC emisor del comprobante.
serieSerie del comprobante.
numeroNúmero correlativo.
tipo_comprobanteOpcionalCatálogo 01 de SUNAT: 01 factura (por defecto), 03 boleta, 07 nota de crédito, 08 nota de débito.
procesoOpcionalCOMPRAS (por defecto, recibidos) o VENTAS (emitidos).
{
  "comprobante": "20123456789-F001-123",
  "data": "PHhtbCB2ZXJzaW9uPS4uLg=="
}

data es el XML codificado en base64.

Descarga de PDF (compras/ventas)

POST/cpe/descargar-pdf

Descarga la representación en PDF de un comprobante de compras/ventas. Mismos parámetros que la descarga de XML (ruc_emisor, serie, numero, tipo_comprobante opcional, proceso opcional).

curl -X POST https://mblapirest.com/api/v1/cpe/descargar-pdf \
  -H "Authorization: Bearer TU_API_TOKEN" \
  -d "ruc_emisor=20123456789" -d "serie=F001" -d "numero=123"
{
  "compra_venta": "Comprobante Electronico de Venta",
  "comprobante": "20123456789-F001-123",
  "data": "JVBERi0xLjQKJ..."
}

data es el PDF codificado en base64.

Detalle de compra (ítems)

POST/cpe/obtener-detalle-compra

Mismo servicio que la descarga de XML/PDF, pero en vez de darte el archivo, te devuelve el comprobante ya parseado: emisor, receptor, totales e ítems (descripción, cantidad, precios, IGV) — útil si solo necesitas los datos, no el archivo.

NombreRequeridoDescripción
ruc_emisorRUC emisor del comprobante.
serieSerie del comprobante.
numeroNúmero correlativo.
tipo_comprobanteOpcionalCatálogo 01 de SUNAT: 01 factura (por defecto), 03 boleta, 07 nota de crédito, 08 nota de débito.
procesoOpcionalCOMPRAS (por defecto, recibidos) o VENTAS (emitidos).
curl -X POST https://mblapirest.com/api/v1/cpe/obtener-detalle-compra \
  -H "Authorization: Bearer TU_API_TOKEN" \
  -d "ruc_emisor=20123456789" -d "serie=F001" -d "numero=123"
{
  "cpe": {
    "serie": "F001",
    "numero": "123",
    "fecha_emision": "15/01/2025",
    "moneda": "PEN",
    "proveedor": { "tipo_doc": "6", "numero_doc": "20123456789", "razon_social": "..." },
    "receptor": { "tipo_doc": "6", "numero_doc": "20614228408", "razon_social": "..." },
    "totales": { "gravada": 127.60, "igv": 13.40, "total": 141.00 },
    "items": [
      { "descripcion": "...", "codigo_interno": "...", "cantidad": 1, "unidad_medida": "NIU", "precio_unitario": 127.60, "precio_con_igv": 150.57, "id_afectacion": "10", "subtotal": 127.60, "igv": 0, "importe": 127.60 }
    ]
  }
}
Por ahora solo está confirmado con datos reales para comprobantes recibidos (compras). Para emitidos (ventas) el filtro interno es una suposición razonable, aún sin verificar contra un caso real — si te falla justo con proceso=VENTAS, avísanos.

Enviar por correo

POST/cpe/enviar-correo

Mismo servicio también: le pide a SUNAT que reenvíe el comprobante por correo a la dirección indicada (el mismo botón "correo" del buscador de comprobantes de SUNAT), sin que tengas que armar tú el envío.

NombreRequeridoDescripción
ruc_emisorRUC emisor del comprobante.
serieSerie del comprobante.
numeroNúmero correlativo.
correoDirección de destino.
tipo_comprobanteOpcionalCatálogo 01 de SUNAT: 01 factura (por defecto), 03 boleta, 07 nota de crédito, 08 nota de débito.
procesoOpcionalCOMPRAS (por defecto, recibidos) o VENTAS (emitidos).
curl -X POST https://mblapirest.com/api/v1/cpe/enviar-correo \
  -H "Authorization: Bearer TU_API_TOKEN" \
  -d "ruc_emisor=20123456789" -d "serie=F001" -d "numero=123" -d "correo=cliente@ejemplo.com"
{
  "comprobante": "20123456789-F001-123",
  "correo": "cliente@ejemplo.com"
}

Última actualización: 03/09/2026