PEP & Sanctions Screening Guide
This guide walks you through implementing Politically Exposed Persons (PEP) and sanctions screening using the Matchstra API.
Overview
PEP and sanctions screening helps you comply with Anti-Money Laundering (AML) and Know Your Customer (KYC) regulations by identifying individuals and entities that appear on global watchlists.
Use cases:
- Customer onboarding for financial institutions
- Vendor and supplier due diligence
- Real estate transaction screening
- Compliance with FINTRAC, OFAC, and other regulators
Quick Example
const response = await fetch('https://api.matchstra.ca/api/Screening/screen', {
method: 'POST',
headers: {
'X-API-Key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Vladimir Putin',
entityType: 'Individual',
minScore: 80
})
});
const result = await response.json();
if (result.success && result.data.hasMatch) {
console.log(`⚠️ Found ${result.data.matchCount} match(es)`);
console.log(`Highest confidence: ${result.data.highestScore}%`);
} else {
console.log('✅ No matches found - safe to proceed');
}
Understanding Entity Types
Specify the type of entity you're screening:
Individual
For screening persons (customers, vendors, beneficial owners).
{
"name": "John Smith",
"dateOfBirth": "1980-05-15",
"entityType": "Individual",
"minScore": 70
}
Organization
For screening companies, NGOs, and other entities.
{
"name": "ABC Trading Corp",
"entityType": "Organization",
"minScore": 75
}
Confidence Scoring
The minScore parameter controls the sensitivity of matching:
| Score Range | Recommendation | Use Case |
|---|---|---|
| 90-100 | High confidence | Strict compliance, low false positives |
| 70-89 | Balanced | Standard due diligence |
| 50-69 | Sensitive | Cast wider net, more review required |
| Below 50 | Very sensitive | Exploratory, many false positives |
Recommended: Start with minScore: 70 and adjust based on your risk tolerance.
Date of Birth Matching
Including date of birth significantly improves match accuracy:
{
"name": "John Smith",
"dateOfBirth": "1980-05-15T00:00:00Z",
"entityType": "Individual",
"minScore": 70
}
Benefits:
- Reduces false positives for common names
- Increases confidence in positive matches
- Helps distinguish between similarly named individuals
Format: ISO 8601 date-time string (e.g., 1980-05-15T00:00:00Z)
Understanding Results
No Matches Found
{
"success": true,
"message": "Screening completed successfully",
"data": {
"id": 12345,
"hasMatch": false,
"matchCount": 0,
"highestScore": 0,
"matches": [],
"remainingRequests": 485
}
}
Action: Safe to proceed with onboarding/transaction.
Matches Found
{
"success": true,
"message": "Screening completed successfully",
"data": {
"id": 12346,
"hasMatch": true,
"matchCount": 2,
"highestScore": 95.5,
"matches": [
{
"name": "John A. Smith",
"score": 95.5,
"entityType": "Individual",
"sources": ["OFAC SDN", "UN Sanctions"],
"dateOfBirth": "1980-05-15",
"nationality": "US"
},
{
"name": "John Anthony Smith",
"score": 78.2,
"entityType": "Individual",
"sources": ["EU Sanctions"],
"dateOfBirth": "1980-05-20",
"nationality": "GB"
}
],
"remainingRequests": 484
}
}
Action: Review matches and apply your risk policies.
Match Analysis
Each match includes:
name
The matched entity name from the watchlist.
score
Confidence score (0-100) indicating match strength. Higher = more confident.
entityType
Type of matched entity (Individual or Organization).
sources
Array of data sources where the match was found:
OFAC SDN- US Office of Foreign Assets Control Specially Designated NationalsUN Sanctions- United Nations Security Council sanctionsEU Sanctions- European Union sanctionsUK Sanctions- UK HM Treasury sanctionsCanadian Sanctions- Global Affairs CanadaInterpol- Interpol wanted personsPEP- Politically Exposed Persons databases
dateOfBirth
Date of birth from the watchlist (if available).
nationality
Country or nationality of the entity (if available).
Implementation Patterns
Basic Screening Workflow
async function screenPerson(name, dob) {
const response = await fetch('https://api.matchstra.ca/api/Screening/screen', {
method: 'POST',
headers: {
'X-API-Key': process.env.MATCHSTRA_API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: name,
dateOfBirth: dob,
entityType: 'Individual',
minScore: 70
})
});
const result = await response.json();
if (!result.success) {
throw new Error(`Screening failed: ${result.message}`);
}
return result.data;
}
// Usage
const screeningResult = await screenPerson('John Smith', '1980-05-15');
if (screeningResult.hasMatch) {
console.log('⚠️ MATCHES FOUND - Manual review required');
for (const match of screeningResult.matches) {
console.log(`- ${match.name} (${match.score}% confidence)`);
console.log(` Sources: ${match.sources.join(', ')}`);
}
} else {
console.log('✅ No matches - Proceed with onboarding');
}