Schedule a demo with an expertSchedule demo
Back to documentation
Guide15 min

Consultation PLD/AML

Configure automatic inquiries to control lists to meet anti-washing regulations.

Available lists

PEP Mexico

Politically exposed persons in Mexico: public officials, families and close partners.

OFAC NSA

U.S. Treasury Special Designated Nationals list

UN sanctions

Consolidated list of Security Council sanctions.

EU Penalties

Consolidated list of restrictive measures by the European Union.

List 69-B SAT

Contributors issuing invoices for nonexistent operations.

Local lists

Company's own lists or internal blacklists.

1. Individual consultation

Consultation an individual or an undertaking against all monitoring lists:

POST / v1 / aml / screen
// 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"
// }
Consultation of a moral person
// 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. Coincidences management

When there are potential coincidences, the answer includes details:

{
  "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"
}

Important: The matching with PEP they are not automatically rejected. They require increased due diligence as LFPIORPI.

3. Mass consultations

To check multiple logs at once:

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. Continuous monitoring

Configure automatic monitoring to get alerts as your customers appear on lists:

// 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');
Webhook: aml.alert
{
  "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"
  }
}

Integration into onboarding flow

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 };
}