Consultas eFact Documentación Ingresar

Documentación de la API

API compatible con apiperu.dev para consultas de RUC y DNI. La fuente es el padrón reducido público de SUNAT, que se actualiza a diario de madrugada.

Base URL: https://consultas.efact.si

Autenticación: cabecera Authorization: Bearer <token>. Pide tu token al administrador.

Límite: 60 consultas por minuto por token (salvo que el token tenga otro límite). Las cabeceras X-RateLimit-Limit y X-RateLimit-Remaining indican tu consumo.

Consultar RUC

POST /api/ruc con cuerpo JSON {"ruc": "20100047218"}, o GET /api/ruc/{ruc}.

curl -X POST https://consultas.efact.si/api/ruc \
  -H "Authorization: Bearer TU_TOKEN" -H "Content-Type: application/json" \
  -d '{"ruc":"20100047218"}'
{
  "success": true,
  "code": "found",
  "retryable": false,
  "data": {
    "ruc": "20100047218",
    "nombre_o_razon_social": "BANCO DE CREDITO DEL PERU",
    "direccion": "JR. CENTENARIO NRO. 156 URB. LAS LADERAS DE MELGAREJO",
    "direccion_completa": "JR. CENTENARIO NRO. 156 URB. LAS LADERAS DE MELGAREJO, LIMA - LIMA - LA MOLINA",
    "estado": "ACTIVO",
    "condicion": "HABIDO",
    "departamento": "LIMA",
    "provincia": "LIMA",
    "distrito": "LA MOLINA",
    "ubigeo_sunat": "150114",
    "ubigeo": ["15", "1501", "150114"]
  },
  "source": "consultas.efact.si",
  "time": 0.012
}

Si no hay ubigeo: ubigeo_sunat: "" y ubigeo: [null, null, null]. El padrón reducido no incluye agentes de retención, así que el campo es_agente_de_retencion no se envía.

Consultar DNI

POST /api/dni con cuerpo JSON {"dni": "45215942"}, o GET /api/dni/{dni}.

Se busca el RUC de persona natural 10 + DNI + dígito verificador. Solo se encuentran las personas que tienen RUC. Los apellidos y nombres se separan a partir del texto del padrón ("APELLIDO_PATERNO APELLIDO_MATERNO NOMBRES"), así que esa separación es una aproximación.

{
  "success": true,
  "code": "found",
  "retryable": false,
  "data": {
    "numero": "45215942",
    "nombre_completo": "GARCIA CHANCO CARLOS AUGUSTO",
    "nombres": "CARLOS AUGUSTO",
    "apellido_paterno": "GARCIA",
    "apellido_materno": "CHANCO",
    "codigo_verificacion": 8,
    "direccion": "", "direccion_completa": "",
    "departamento": null, "provincia": null, "distrito": null,
    "ubigeo_sunat": "", "ubigeo": [null, null, null]
  },
  "source": "consultas.efact.si",
  "time": 0.010
}

Errores

Todos los errores usan el mismo formato: {"success": false, "code": "...", "retryable": bool, "message": "...", "source": "...", "time": n}

HTTPcoderetryableCuándo
400invalid_inputfalseRUC sin 11 dígitos o con dígito verificador inválido; DNI sin 8 dígitos
401unauthorizedfalseToken ausente, inválido o revocado
404document_not_foundfalseEl documento no figura en el padrón
429rate_limitedtrueSuperaste el límite por minuto (ver cabecera Retry-After)
503upstream_unavailabletrueEl padrón no está disponible (BD caída o aún no importado)

Uso desde efact

En la configuración de efact (admin o empresa), en el campo de URL de apiperu, poner https://consultas.efact.si y como token el que generes aquí. No hace falta cambiar código: efact usa GET /api/ruc/{numero} y GET /api/dni/{numero}, que esta API soporta.