Ir al contenido

RUC en lote

Consulta múltiples RUCs en una sola llamada. Útil para enriquecer listas (proveedores, cartera de clientes, padrones internos).

POST /v1/ruc/batch
Host: api.chequea.pe
Authorization: Bearer ak_live_...
Content-Type: application/json
MétodoPOST
Scope requeridoruc:read
Frecuencia (RPM)1 request, sin importar el tamaño del lote
CuotaN unidades por lote de N RUCs
Cache HTTPNo cacheado (respuestas variables por lote)

El máximo absoluto del schema es 100 RUCs. Tu plan puede tener un cap menor:

PlanTamaño máximo de lote
Free10
Starter50
Pro200 (limitado a 100 por el schema)
Business / Enterprise500 (limitado a 100 por el schema)

Si tu lote supera el cap del plan, recibes 403 forbidden_plan.

{
"rucs": [
"20100070970",
"20131312955",
"20512906510"
]
}
CampoTipoValidación
rucsstring[]1 a 100 elementos, cada uno 11 dígitos
Ventana de terminal
curl --request POST \
--url https://api.chequea.pe/api/v1/ruc/batch \
--header 'Authorization: Bearer ak_live_TU_CLAVE' \
--header 'Content-Type: application/json' \
--data '{"rucs":["20100070970","20131312955","99999999999"]}'
{
"total": 3,
"ok": 2,
"errors": 1,
"results": [
{
"ruc": "20100070970",
"status": "ok",
"data": {
"ruc": "20100070970",
"razonSocial": "BANCO DE CREDITO DEL PERU",
"estado": "ACTIVO",
"condicion": "HABIDO",
"tipo": "SOCIEDAD ANONIMA",
"ubigeo": "150101",
"direccion": "CAL. CENTENARIO NRO. 156",
"ciiu": "64190",
"actualizado": "2026-05-19T03:14:22.881Z"
}
},
{
"ruc": "20131312955",
"status": "ok",
"data": {
"ruc": "20131312955",
"razonSocial": "SUPERINTENDENCIA NACIONAL DE ADUANAS Y DE ADMINISTRACION TRIBUTARIA - SUNAT",
"estado": "ACTIVO",
"condicion": "HABIDO",
"tipo": "INSTITUCIONES PUBLICAS",
"ubigeo": "150115",
"direccion": "AV. GARCILASO DE LA VEGA NRO. 1472",
"ciiu": "84112",
"actualizado": "2026-05-19T03:14:22.881Z"
}
},
{
"ruc": "99999999999",
"status": "error",
"error": {
"type": "not_found",
"status": 404,
"detail": "RUC no encontrado en el padrón"
}
}
]
}
CampoTipoNotas
totalnumberCantidad de RUCs enviados
oknumberCuántos resolvieron con éxito
errorsnumberCuántos terminaron con error individual
results[]arrayUna entrada por cada RUC, en el mismo orden del request
results[].status"ok" | "error"Discriminador del resultado
results[].dataobjeto RUCSólo si status: "ok"; mismo shape que GET /v1/ruc/{ruc}
results[].errorobjetoSólo si status: "error"; subset de Problem Details
CódigotypeCuándo ocurre
400validation_errorBody no es JSON válido, rucs está vacío o trae elementos mal formados
401unauthorizedFalta clave o es inválida
403forbidden_scopeLa clave no tiene ruc:read
403forbidden_planEl tamaño del lote supera el cap de tu plan
429rate_limited / quota_exceededPlan excedido