Respuesta corta: Un flujo de API KYC en Colombia con Verifik combina la cédula (GET /v2/co/cedula), el certificado de vigencia de la Registraduría, la comparación facial con prueba de vida y, según el riesgo, antecedentes de Policía, Procuraduría, Contraloría y PEP. Todas usan token Bearer y se pagan con créditos de smartCHECK desde $49 al mes.
Si buscas una API KYC en Colombia, no necesitas un solo endpoint sino un flujo por capas. Esta guía, actualizada en noviembre de 2026, es el mapa: reúne las 10 verificaciones que Verifik ofrece para conocer a un cliente colombiano, explica qué fuente oficial consulta cada una y enlaza a la guía detallada de cada consulta. Si solo necesitas validar el documento, empieza por la verificación de cédula de Colombia.
Nota: este artículo resume normas oficiales con fines informativos y no constituye asesoría legal. Valida tu caso con tu oficial de cumplimiento.
Qué es KYC en Colombia y por qué importa en 2026
KYC (conoce a tu cliente) es el conjunto de controles para saber quién es tu cliente antes de darle un producto. En Colombia esos controles se apoyan en tres marcos:
- Prevención de lavado de activos. Las entidades vigiladas por la Superintendencia Financiera aplican el SARLAFT, que exige identificar y conocer al cliente con un enfoque basado en riesgos. Las sociedades vigiladas por la Supersociedades tienen un régimen equivalente (SAGRILAFT).
- Suplantación de identidad. La Ley 2573 de 2026 obliga a telcos, entidades financieras o crediticias y comercios con esa competencia a adoptar medidas “suficientes y razonables” para verificar la identidad. Lo resumimos en nuestra página de cumplimiento de la Ley 2573.
- Datos personales. Si guardas datos de la cédula, selfies o antecedentes, aplica la Ley 1581 de 2012: necesitas autorización del titular y una finalidad clara.
Las 10 verificaciones de un KYC colombiano
Cada verificación responde a una pregunta distinta. Esta tabla resume qué endpoint usar y qué devuelve según la documentación oficial de Verifik:
| Pregunta | Endpoint | Qué pides | Qué devuelve |
|---|---|---|---|
| ¿La cédula existe y a quién pertenece? | GET /v2/co/cedula | documentType (CC o PPT) y documentNumber | Nombre completo, nombres, apellidos y firma de Verifik |
| ¿La cédula está vigente ante la Registraduría Nacional del Estado Civil? | GET /v2/co/registraduria/certificado | documentNumber y date (fecha de expedición, DD/MM/AAAA) | novedad (por ejemplo VIGENTE), fecha y lugar de expedición, código de verificación y PDF |
| ¿El extranjero residente tiene una cédula de extranjería válida? | GET /v2/co/foreigner-id/ce | documentNumber y expeditionDate (DD/MM/AAAA) | Nombre, estado (por ejemplo VIGENTE) y vencimiento |
| ¿La persona frente a la cámara es el titular? | POST /v2/face-recognition/compare-with-liveness | probe (selfie), gallery y umbrales | Puntaje de comparación y resultado de prueba de vida |
| ¿Tiene asuntos pendientes con las autoridades judiciales? (Policía Nacional) | GET /v2/co/policia/consultar | documentType (CC, CE, PPT, PA, DP) y documentNumber | Nombre y texto oficial del certificado de antecedentes |
| ¿Tiene medidas correctivas pendientes? (RNMC) | GET /v2/co/policia/rnmc | documentType, documentNumber y date de expedición | Lista de medidas correctivas con estado, municipio y expediente |
| ¿Tiene sanciones disciplinarias? (Procuraduría General de la Nación) | GET /v2/co/procuraduria/antecedentes | documentType (CC, PEP, CE) y documentNumber | hasRecord, leyenda y sanciones |
| ¿Tiene responsabilidad fiscal? (Contraloría General) | GET /v2/co/contraloria/certificado | documentType (CC, CE, PA, PEP) y documentNumber | Fecha de consulta y certificado en PDF |
| ¿Es una persona expuesta políticamente (AML)? | GET /v2/co/politically-exposed-persons | documentType (CC o NIT) y documentNumber | Declaraciones con entidad, cargo y fecha de publicación; 404 si no hay coincidencia |
| ¿Puede conducir? (movilidad, delivery, alquiler) | GET /v2/co/runt/conductor | documentType (CC, CE, PA, PPT) y documentNumber | Estado del conductor, licencias, categorías y vencimientos |
Para el detalle de cada consulta tienes guías propias: verificación de identidad con cédula de ciudadanía, cédulas de extranjería, antecedentes policiales, medidas correctivas RNMC, certificado de Contraloría, registros del INPEC y licencias de conducir.
Ojo con las siglas: “PEP” aparece dos veces. En /v2/co/politically-exposed-persons es la persona expuesta políticamente (AML); como documentType=PEP en Procuraduría o Contraloría es el Permiso Especial de Permanencia, un documento migratorio.
Flujo recomendado paso a paso
Este orden reduce costos y fricción, porque cada paso solo se ejecuta si el anterior salió bien:
- Captura de datos y autorización. Pide tipo y número de documento, la fecha de expedición y registra la autorización de tratamiento de datos (Ley 1581).
- Documento. Consulta
/v2/co/cedulay comparafullNamecon lo que escribió el cliente. Si es extranjero, usa/v2/co/foreigner-id/ce. - Vigencia. Consulta
/v2/co/registraduria/certificadoy aprueba solo sinovedades VIGENTE; cualquier otro valor va a revisión manual. - Biometría. Pide una selfie y llama a
/v2/face-recognition/compare-with-liveness. - Listas y antecedentes según riesgo. PEP para productos financieros; Policía, RNMC, Procuraduría y Contraloría para contratación, crédito o proveedores.
- Decisión y evidencia. Aprueba, rechaza o envía a revisión. Guarda el
idy lasignaturede cada respuesta: te sirven para el cotejo de documentos que exige la Ley 2573.
Cómo integrarlo con la API de Verifik
Todas las llamadas van a https://api.verifik.co con tu token en el encabezado Authorization: Bearer. Los ejemplos usan datos ficticios con la forma de respuesta de la documentación oficial.
Paso 1: validar la cédula
La documentación de identidad de Colombia pide documentType (CC o PPT) y documentNumber:
curl -G "https://api.verifik.co/v2/co/cedula" \
-H "Accept: application/json" \
-H "Authorization: Bearer $VERIFIK_TOKEN" \
--data-urlencode "documentType=CC" \
--data-urlencode "documentNumber=123456789"Respuesta 200 de ejemplo:
{
"data": {
"arrayName": [
"JUAN",
"CARLOS",
"PEREZ",
"GOMEZ"
],
"documentNumber": "123456789",
"documentType": "CC",
"firstName": "JUAN CARLOS",
"fullName": "JUAN CARLOS PEREZ GOMEZ",
"lastName": "PEREZ GOMEZ"
},
"signature": {
"dateTime": "November 3, 2026 9:15 AM",
"message": "Certified by Verifik.co"
},
"id": "CC01A"
}Si envías un tipo de documento no admitido, la API responde 409:
{
"code": "MissingParameter",
"message": "documentType must be one of: [CC,PPT]"
}Paso 2: certificado de vigencia de la Registraduría
El endpoint del certificado exige la fecha de expedición de la cédula, un dato que solo el titular suele tener a mano:
import os, requests
url = "https://api.verifik.co/v2/co/registraduria/certificado"
headers = {
"Accept": "application/json",
"Authorization": f"Bearer {os.getenv('VERIFIK_TOKEN')}"
}
params = {"documentNumber": "123456789", "date": "10/10/2020"}
r = requests.get(url, headers=headers, params=params)
print(r.status_code, r.json())Respuesta 200 de ejemplo (el PDF va recortado):
{
"data": {
"codigoVerificacion": "ABC123XYZ",
"novedad": "VIGENTE",
"pdfBase64": "JVBERi0xLjQK...",
"documento": {
"cedula": "123456789",
"fechaExpedicion": "10/10/2020",
"lugarExpedicion": "BOGOTA D.C.",
"nombre": "JUAN CARLOS PEREZ GOMEZ"
}
},
"signature": {
"dateTime": "November 3, 2026 9:16 AM",
"message": "Certified by Verifik.co"
}
}Paso 3: comparación facial con prueba de vida
Comparar con detección de vitalidad compara la selfie con la galería y, si supera compare_min_score, ejecuta la prueba de vida:
import os, requests
url = "https://api.verifik.co/v2/face-recognition/compare-with-liveness"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {os.getenv('VERIFIK_TOKEN')}"
}
payload = {
"probe": "<base64>",
"gallery": ["<base64>"],
"search_mode": "FAST",
"liveness_min_score": 0.6,
"compare_min_score": 0.8
}
r = requests.post(url, json=payload, headers=headers)
print(r.json())Respuesta 200 de ejemplo:
{
"id": "CWL01",
"data": {
"comparison": {
"score": 0.88
},
"liveness": {
"liveness_score": 0.91,
"min_score": 0.6,
"passed": true
}
},
"signature": {
"message": "Certified by Verifik.co",
"dateTime": "November 3, 2026 9:25 AM"
}
}Más contexto en la guía de prueba de vida para evitar la suplantación.
Paso 4: antecedentes de Policía y Procuraduría
La consulta de la Policía Nacional no pide fecha:
curl -G "https://api.verifik.co/v2/co/policia/consultar" \
-H "Accept: application/json" \
-H "Authorization: Bearer $VERIFIK_TOKEN" \
--data-urlencode "documentType=CC" \
--data-urlencode "documentNumber=123456789"Respuesta 200 de ejemplo:
{
"data": {
"arrayName": [
"JUAN",
"CARLOS",
"PEREZ",
"GOMEZ"
],
"documentNumber": "123456789",
"documentType": "CC",
"firstName": "JUAN CARLOS",
"lastName": "PEREZ GOMEZ",
"fullName": "JUAN CARLOS PEREZ GOMEZ",
"details": "NO TIENE ASUNTOS PENDIENTES CON LAS AUTORIDADES JUDICIALES"
},
"signature": {
"dateTime": "November 3, 2026 9:20 AM",
"message": "Certified by Verifik.co"
},
"id": "POL01"
}Para la Procuraduría, revisa hasRecord antes de leer las sanciones:
import axios from "axios";
const { data } = await axios.get("https://api.verifik.co/v2/co/procuraduria/antecedentes", {
params: { documentType: "CC", documentNumber: "123456789" },
headers: {
Accept: "application/json",
Authorization: `Bearer ${process.env.VERIFIK_TOKEN}`,
},
});
console.log(data.data.hasRecord, data.data.legend);Códigos de respuesta que debes manejar
| Código | Qué significa | Qué hacer |
|---|---|---|
| 200 | Consulta exitosa con datos y firma | Guarda id y signature como evidencia |
| 404 | No hay registro (en PEP, que no hay coincidencia) | Revisa el número; en listas, trátalo como “sin resultado” |
| 409 | Parámetro faltante o inválido (MissingParameter, formato de fecha) o fuente no disponible (Endpoint_out_of_service) | Corrige el parámetro o reintenta más tarde |
| 500 | Error de la fuente o del servicio | Reintenta con espera y envía a revisión si persiste |

Más allá de la persona: vehículos y empresas
Si tu producto involucra vehículos o clientes empresariales, el mismo token cubre las consultas complementarias: RUNT por placa, propietario del vehículo por placa, SOAT y revisión técnico-mecánica y la validación RUES de empresas.
Sin código: smartCHECK
Para consultas puntuales sin programar, smartCHECK permite hacer las mismas verificaciones desde la web. Cada consulta, por API o por web, se descuenta de los créditos de tu plan, con planes desde $49 al mes. El costo por llamada de cada endpoint lo ves en tu panel al crear la cuenta.
Errores comunes en el KYC colombiano
- Validar solo el número de cédula. Confirma que el documento existe, no que quien lo presenta sea su titular. Suma la comparación facial con prueba de vida.
- Confundir fecha de expedición y de nacimiento. El certificado de la Registraduría, la CE y el RNMC piden la fecha de expedición en DD/MM/AAAA.
- Enviar una CE a
/v2/co/cedula. Ese endpoint solo acepta CC y PPT; la CE tiene su propio endpoint. - Tratar un 409 como un rechazo. Puede ser una fuente fuera de servicio. Reintenta antes de decidir.
- Guardar más datos de los necesarios. Conserva la evidencia de la verificación y define plazos de retención según la Ley 1581.
Respuestas rápidas
¿Qué se necesita para hacer KYC en Colombia por API? Como mínimo, validar la cédula con /v2/co/cedula, confirmar su vigencia con el certificado de la Registraduría y comparar el rostro con prueba de vida. Según el riesgo, se suman PEP y antecedentes.
¿Qué devuelve la consulta de cédula? Nombre completo, nombres, apellidos, número y tipo de documento, más una firma de Verifik con fecha y hora de la consulta.
¿Cómo sé si una cédula está vigente? Con /v2/co/registraduria/certificado, enviando el número y la fecha de expedición. El campo novedad indica el estado, por ejemplo VIGENTE.
¿Qué antecedentes puedo consultar por API? Policía Nacional, medidas correctivas (RNMC), Procuraduría, Contraloría e INPEC, además de la lista de personas expuestas políticamente.
¿Cómo verifico a un extranjero residente en Colombia? Con /v2/co/foreigner-id/ce para la cédula de extranjería, o con /v2/co/cedula y documentType=PPT para el Permiso por Protección Temporal.
¿Cuánto cuesta? Cada consulta consume créditos de smartCHECK, con planes desde $49 al mes.
Arma tu flujo KYC para Colombia
Con estas consultas cubres a ciudadanos, extranjeros residentes, conductores y personas con exposición política, y cada respuesta trae una firma de Verifik que puedes guardar como evidencia. Revisa la documentación de identidad para Colombia y haz tus primeras pruebas.
¿Listo para empezar? Crea tu cuenta gratis en Verifik o agenda una demo para ver cómo integrar el KYC en tu onboarding de clientes colombianos.




