Consultas PLD/AML
Configura consultas automáticas a listas de control para cumplir con regulación antilavado.
Listas disponibles
PEP México
Personas Políticamente Expuestas en México: funcionarios públicos, familiares y asociados cercanos.
OFAC SDN
Lista de Nacionales Especialmente Designados del Departamento del Tesoro de EE.UU.
Sanciones ONU
Lista consolidada de sanciones del Consejo de Seguridad de Naciones Unidas.
UE Sanciones
Lista consolidada de medidas restrictivas de la Unión Europea.
Lista 69-B SAT
Contribuyentes que emiten facturas por operaciones inexistentes.
Listas locales
Listas propias de la empresa o listas negras internas.
1. Consulta individual
Consulta una persona o empresa contra todas las listas de control:
// Consulta de persona física
const result = await jaak.aml.screen({
type: 'individual',
data: {
name: 'Juan Pérez García',
dateOfBirth: '1985-03-15',
nationality: 'MX',
curp: 'PEGJ850315HDFRRL09', // Opcional
country: 'MX'
},
lists: ['pep_mx', 'ofac', 'un', 'eu', 'sat_69b'],
matchThreshold: 0.85 // Umbral de coincidencia (0-1)
});
console.log(result);
// {
// "screeningId": "scr_abc123",
// "status": "clear", // clear, potential_match, confirmed_match
// "matchCount": 0,
// "matches": [],
// "checkedLists": ["pep_mx", "ofac", "un", "eu", "sat_69b"],
// "timestamp": "2025-01-09T10:30:00Z"
// }// Consulta de empresa
const result = await jaak.aml.screen({
type: 'company',
data: {
legalName: 'Empresa Ejemplo SA de CV',
rfc: 'EEJ201015ABC',
country: 'MX'
},
lists: ['ofac', 'un', 'eu', 'sat_69b']
});2. Manejo de coincidencias
Cuando hay coincidencias potenciales, la respuesta incluye detalles:
{
"screeningId": "scr_xyz789",
"status": "potential_match",
"matchCount": 1,
"matches": [
{
"list": "pep_mx",
"matchScore": 0.92,
"matchedName": "Juan Pérez García",
"listEntry": {
"name": "Juan Pérez García",
"position": "Subsecretario de Hacienda",
"institution": "SHCP",
"startDate": "2020-01-01",
"endDate": null,
"category": "current_pep",
"level": "federal"
},
"matchedFields": ["name", "country"],
"requiresReview": true
}
],
"recommendation": "manual_review"
}Importante: Las coincidencias con PEP no son automáticamente rechazos. Requieren due diligence reforzado según LFPIORPI.
3. Consultas masivas
Para verificar múltiples registros de una vez:
const batchResult = await jaak.aml.screenBatch({
records: [
{
id: 'customer_001',
type: 'individual',
data: { name: 'Juan Pérez', dateOfBirth: '1985-03-15' }
},
{
id: 'customer_002',
type: 'individual',
data: { name: 'María García', dateOfBirth: '1990-07-22' }
},
// ... hasta 1000 registros por batch
],
lists: ['pep_mx', 'ofac', 'un'],
webhookUrl: 'https://tuapp.com/webhooks/aml-batch'
});
// El resultado se envía vía webhook cuando termina
console.log(batchResult.batchId); // batch_abc123
console.log(batchResult.estimatedTime); // "~5 minutes"4. Monitoreo continuo
Configura monitoreo automático para recibir alertas cuando tus clientes aparezcan en listas:
// Agregar persona al monitoreo continuo
await jaak.aml.monitor.add({
entityId: 'customer_001', // Tu ID interno
type: 'individual',
data: {
name: 'Juan Pérez García',
dateOfBirth: '1985-03-15',
curp: 'PEGJ850315HDFRRL09'
},
lists: ['pep_mx', 'ofac', 'un', 'eu'],
notifyOn: ['new_match', 'status_change'], // Cuándo notificar
metadata: {
segment: 'premium',
riskLevel: 'medium'
}
});
// Listar entidades monitoreadas
const monitored = await jaak.aml.monitor.list({
limit: 100,
status: 'active'
});
// Remover del monitoreo
await jaak.aml.monitor.remove('customer_001');{
"event": "aml.alert",
"timestamp": "2025-01-15T08:00:00Z",
"data": {
"alertId": "alert_xyz",
"entityId": "customer_001",
"alertType": "new_match",
"list": "pep_mx",
"match": {
"name": "Juan Pérez García",
"position": "Director General de PEMEX",
"effectiveDate": "2025-01-14"
},
"previousStatus": "clear",
"newStatus": "potential_match",
"recommendedAction": "enhanced_due_diligence"
}
}Integración en flujo de onboarding
async function onboardCustomer(customerData) {
// 1. Verificar en listas AML
const amlResult = await jaak.aml.screen({
type: 'individual',
data: customerData,
lists: ['pep_mx', 'ofac', 'un']
});
if (amlResult.status === 'confirmed_match') {
// Rechazar automáticamente
return { approved: false, reason: 'aml_match' };
}
if (amlResult.status === 'potential_match') {
// Marcar para revisión manual
await createReviewTask(customerData, amlResult);
return { approved: false, reason: 'pending_review' };
}
// 2. Continuar con verificación KYC
const kycResult = await jaak.verification.create({...});
// 3. Agregar a monitoreo continuo
await jaak.aml.monitor.add({
entityId: customerData.id,
type: 'individual',
data: customerData
});
return { approved: true };
}