Apariencia
Compatibilidad con facturadores
Si usas un facturador que ya trae la consulta de DNI y RUC «estilo apiperu.dev» (QPOS, Smart, Pro7, Pro8 y similares), no tienes que programar nada: en su configuración cambia la URL base y el token.
| Campo del facturador | Valor |
|---|---|
| URL base / dominio de la API | https://api.consultape.pro |
| Token | Tu token cp_... (créalo en tu cuenta) |
Estas rutas usan el mismo plan, cuota y límites que /v1: cada consulta exitosa consume 1 consulta del módulo indicado en cada una.
El token se acepta en la cabecera Authorization: Bearer cp_... o en la URL como ?api_token=cp_....
TIP
Si estás integrando un sistema propio, usa la API oficial /v1: trae más datos y más consultas.
DNI
GET /api/dni/{numero} · POST /api/dni con { "dni": "12345678" } · Módulo dni
bash
curl "https://api.consultape.pro/api/dni/12345678" \
-H "Authorization: Bearer $CONSULTAPE_TOKEN"Respuesta:
json
{
"success": true,
"data": {
"numero": "12345678",
"nombre_completo": "PEREZ GARCIA, JUAN CARLOS",
"nombres": "JUAN CARLOS",
"apellido_paterno": "PEREZ",
"apellido_materno": "GARCIA",
"codigo_verificacion": 1,
"direccion": "",
"direccion_completa": "",
"ubigeo_reniec": "",
"ubigeo_sunat": "",
"ubigeo": [null, null, null]
}
}RUC
GET /api/ruc/{numero} · POST /api/ruc con { "ruc": "20100070970" } · Módulo ruc
bash
curl "https://api.consultape.pro/api/ruc/20100070970" \
-H "Authorization: Bearer $CONSULTAPE_TOKEN"Respuesta:
json
{
"success": true,
"data": {
"ruc": "20100070970",
"nombre_o_razon_social": "SUPERMERCADOS PERUANOS SOCIEDAD ANONIMA",
"direccion": "CAL. MORELLI NRO. 181 INT. P-2",
"direccion_completa": "CAL. MORELLI NRO. 181 INT. P-2, LIMA - LIMA - SAN BORJA",
"estado": "ACTIVO",
"condicion": "HABIDO",
"departamento": "LIMA",
"provincia": "LIMA",
"distrito": "SAN BORJA",
"ubigeo_sunat": "150130",
"ubigeo": ["15", "1501", "150130"],
"es_agente_de_retencion": "SI",
"es_agente_de_percepcion": "NO",
"es_agente_de_percepcion_combustible": "NO",
"es_buen_contribuyente": "NO"
}
}Establecimientos y domicilio fiscal
POST /api/ruc_establecimientos_anexos con { "ruc": "20100070970" } · Módulo ruc.establecimientos
POST /api/ruc_domicilio_fiscal con { "ruc": "20100070970" } · Módulo ruc
Los facturadores los usan para las direcciones de partida y llegada de las guías de remisión. Establecimientos devuelve una lista; domicilio fiscal, un solo objeto con el mismo formato y código 0000.
json
{
"success": true,
"data": [
{
"codigo": "0236",
"tipo_de_establecimiento": "LO. L. COMERCIAL",
"actividad_economica": "",
"direccion": "MZA. A LOTE. 13 P.J. VILLA EL SALVADOR",
"direccion_completa": "MZA. A LOTE. 13 P.J. VILLA EL SALVADOR LIMA - LIMA - VILLA EL SALVADOR",
"departamento": "LIMA",
"provincia": "LIMA",
"distrito": "VILLA EL SALVADOR",
"ubigeo_sunat": "150142",
"ubigeo": ["15", "1501", "150142"]
}
]
}Tipo de cambio
POST /api/tipo_de_cambio con { "fecha": "2026-10-01" } · GET /api/tipo_de_cambio?fecha=2026-10-01 · Módulo tipo_cambio
Tipo de cambio oficial de SUNAT para la fecha indicada (AAAA-MM-DD). Sin fecha devuelve el de hoy. Si ese día no hubo publicación se usa el último publicado (fecha_sunat).
bash
curl -X POST "https://api.consultape.pro/api/tipo_de_cambio" \
-H "Authorization: Bearer $CONSULTAPE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"fecha":"2026-10-04"}'Respuesta:
json
{
"success": true,
"data": {
"fecha_busqueda": "2026-10-04",
"fecha_sunat": "2026-10-03",
"venta": 3.482,
"compra": 3.474,
"origen": "SUNAT",
"moneda": "USD",
"date": "2026-10-04",
"sale": 3.482,
"purchase": 3.474
}
}Validez de comprobantes
POST /api/cpe · Módulo cpe.validez
json
{
"ruc_emisor": "20100070970",
"codigo_tipo_documento": "01",
"serie_documento": "F001",
"numero_documento": "123",
"fecha_de_emision": "2026-09-01",
"total": "118.00"
}La respuesta repite los datos enviados (total como número) y agrega el estado en SUNAT:
json
{
"success": true,
"data": {
"ruc_emisor": "20100070970",
"codigo_tipo_documento": "01",
"serie_documento": "F001",
"numero_documento": "123",
"fecha_de_emision": "2026-09-01",
"total": 118,
"comprobante_estado_codigo": "1",
"comprobante_estado_descripcion": "ACEPTADO",
"empresa_estado_codigo": "00",
"empresa_estado_descripcion": "ACTIVO",
"empresa_condicion_codigo": "00",
"empresa_condicion_descripcion": "HABIDO",
"observaciones": []
}
}comprobante_estado_codigo | Significado |
|---|---|
0 | No existe en SUNAT |
1 | Aceptado |
2 | Anulado (comunicado de baja) |
3 | Autorizado (imprenta) |
4 | No autorizado |
- | No se pudo validar (el motivo va en comprobante_estado_descripcion) |
Validez masiva
Hasta 100 comprobantes por llamada; la respuesta llega cuando terminan todos. Módulo cpe.validez_masiva: la llamada consume 1 consulta, pero tu plan debe tener disponibles al menos tantas consultas como comprobantes envíes. Cada llamada queda en tu historial de validez masiva.
POST /api/validacion_multiple_cpe con los comprobantes como objetos (mismos campos que /api/cpe):
json
{ "comprobantes": [ { "ruc_emisor": "20100070970", "codigo_tipo_documento": "01", "serie_documento": "F001", "numero_documento": "123", "fecha_de_emision": "2026-09-01", "total": "118.00" } ] }Responde data.cantidad_de_comprobantes y data.comprobantes, cada uno con el mismo formato que /api/cpe (en la masiva, los datos de empresa que SUNAT no devuelve vienen como -).
POST /api/validacion-multiple-cpe-v2 con los comprobantes como texto RUC|TIPO|SERIE|NUMERO|FECHA|TOTAL:
json
{ "comprobantes": ["20100070970|01|F001|123|2026-09-01|118.00"] }Responde igual que /api/validacion_multiple_cpe: cada comprobante como objeto.
Errores
Cuando la consulta no se puede completar, la respuesta trae success: false y el motivo en message:
json
{
"success": false,
"message": "El número de RUC no es válido."
}Los códigos HTTP son los mismos de la API oficial: ver Códigos de error.