Skip to main content

Sanctions Screening (Watchlist Screening)

Sanctions Screening (Watchlist Screening) checks individuals and entities against government-maintained lists of persons subject to economic sanctions. TrustGate provides comprehensive coverage across all major global sanctions regimes.

Why Sanctions Screening Matters

Conducting business with sanctioned individuals or entities is illegal in most jurisdictions. Violations can result in:

  • Civil penalties up to $311,562 per violation (OFAC)
  • Criminal penalties up to $1,000,000 and 20 years imprisonment
  • Secondary sanctions affecting non-US persons dealing with sanctioned parties
  • License revocation and debarment from government contracts
Critical Compliance Requirement

Sanctions screening is not optional. Financial institutions, money service businesses, and many other regulated entities must screen all customers at onboarding and on an ongoing basis.

Sanctions Lists Covered

TrustGate screens against all major global sanctions lists:

OFAC SDN List (Specially Designated Nationals)

The primary US sanctions list maintained by the Office of Foreign Assets Control.

AttributeDetails
JurisdictionUnited States
AdministratorUS Treasury (OFAC)
Entity Count~12,000+ entries
Update FrequencyMultiple times weekly
CoverageIndividuals, companies, vessels, aircraft

Programs included:

  • Counter Terrorism
  • Counter Narcotics
  • Non-Proliferation
  • Iran Sanctions
  • Russia/Ukraine Sanctions
  • North Korea Sanctions
  • Venezuela Sanctions

EU Consolidated Sanctions List

The unified European Union sanctions list.

AttributeDetails
JurisdictionEuropean Union (27 member states)
AdministratorEuropean Commission
Entity Count~4,500+ entries
Update FrequencyAs needed (typically weekly)
CoverageIndividuals, entities, groups

Measures included:

  • Asset freezes
  • Travel bans
  • Sectoral sanctions

UN Security Council Consolidated List

Sanctions mandated by United Nations Security Council resolutions.

AttributeDetails
JurisdictionGlobal (193 UN member states)
AdministratorUN Security Council
Entity Count~800+ entries
Update FrequencyAs resolutions passed
CoverageIndividuals, entities, groups

Sanctions regimes:

  • ISIL (Da'esh) and Al-Qaida
  • Taliban
  • North Korea (DPRK)
  • Yemen
  • South Sudan
  • Central African Republic

UK HM Treasury Sanctions List

United Kingdom's financial sanctions list.

AttributeDetails
JurisdictionUnited Kingdom
AdministratorHM Treasury (OFSI)
Entity Count~3,400+ entries
Update FrequencyAs needed
CoverageIndividuals, entities
Post-Brexit Note

Since Brexit, the UK maintains an independent sanctions regime. UK businesses must screen against both UK and applicable international lists.

Data Coverage

TrustGate normalizes data from 200+ authoritative sources into a consistent format:

{
"schema": "Person",
"id": "tg-12345",
"properties": {
"name": ["John Smith", "Jon Smith", "J. Smith"],
"birthDate": ["1975-03-15"],
"nationality": ["US", "GB"],
"topics": ["sanction"]
},
"datasets": ["us_ofac_sdn", "eu_fsf"]
}

Coverage Statistics

Source TypeApproximate Count
Sanctions lists50+ national lists
PEP databases180+ countries
Adverse mediaIntegrated with sanctions
Total entities500,000+

How Fuzzy Matching Works (Approximate Name Matching)

Sanctions evasion often involves name variations. TrustGate uses multiple matching techniques to catch them:

Matching Techniques

┌─────────────────────────────────────────────────────────────────┐
│ Fuzzy Matching Pipeline │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Input: "Mohammad Al-Rahman" │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Exact Match │ → │ Phonetic │ → │ Token-based │ │
│ │ │ │ (Soundex, │ │ (Jaccard, │ │
│ │ │ │ Metaphone) │ │ Overlap) │ │
│ └──────────────┘ └──────────────┘ └──────────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Edit Distance│ → │ Transliter- │ → │ Name Parsing │ │
│ │ (Levenshtein)│ │ ation │ │ (First/Last) │ │
│ └──────────────┘ └──────────────┘ └──────────────────┘ │
│ │
│ Matches: "Mohammed Al Rahman", "Muhammed al-Rahman", │
│ "M. Al-Rahman", "Mohammad Rahman" │
│ │
└─────────────────────────────────────────────────────────────────┘

Name Variation Examples

TechniqueInputMatches
PhoneticMohammedMuhammad, Mohamed, Mohamad
TransliterationВладимирVladimir, Wladimir
Token reorderingJohn SmithSmith, John
Initial expansionJ. SmithJohn Smith, James Smith
Alias matchingEl ChapoJoaquin Guzman
Typo toleranceHussienHussein

Matching Threshold

TrustGate uses a configurable match threshold:

# Default threshold: 0.5 (50%)
screening_result = await screening_service.check_individual(
name="John Smith",
birth_date=date(1980, 1, 15),
countries=["US"],
threshold=0.5 # Matches with 50%+ confidence returned
)
Threshold Tuning
  • Lower threshold (0.3-0.5): More hits, more false positives, better coverage
  • Higher threshold (0.7-0.9): Fewer hits, fewer false positives, may miss variations
  • Recommended: Start at 0.5, adjust based on false positive rate

Confidence Scores (Match Scores)

Every potential match includes a confidence score from 0-100 indicating match quality.

Score Calculation

Confidence scores are calculated based on multiple factors:

FactorWeightDescription
Name similarity40%How closely names match
Date of birth25%Exact match, partial match, or missing
Country15%Nationality or residence match
Identifiers20%Passport, national ID matches

Score Interpretation

┌────────────────────────────────────────────────────────────────┐
│ Confidence Score Guide │
├────────────────────────────────────────────────────────────────┤
│ │
│ 90-100 ████████████████████████████████ Very High │
│ Strong name match + DOB match + country match │
│ Action: Thorough review, likely true positive │
│ │
│ 75-89 ██████████████████████████ High │
│ Strong name match + partial DOB or country │
│ Action: Careful review, probable match │
│ │
│ 50-74 ████████████████ Medium │
│ Moderate name match, some supporting data │
│ Action: Standard review, investigate further │
│ │
│ <50 ████████ Low │
│ Weak match, likely different person │
│ Action: Quick review, likely false positive │
│ │
└────────────────────────────────────────────────────────────────┘

API Response Example

{
"hits": [
{
"id": "hit-uuid-1",
"hit_type": "sanctions",
"matched_name": "John Adam Smith",
"confidence": 92.5,
"matched_fields": ["name", "date_of_birth", "country"],
"list_source": "us_ofac_sdn",
"list_version_id": "OFAC-2025-01-15",
"match_data": {
"caption": "John Adam Smith",
"properties": {
"name": ["John Adam Smith", "J.A. Smith"],
"birthDate": ["1980-01-15"],
"nationality": ["US"],
"position": ["Narcotics Trafficker"]
},
"datasets": ["us_ofac_sdn"]
}
}
]
}

[Screenshot: Hit detail view showing confidence score breakdown]

Running Sanctions Screening

On-Demand Screening (Manual Screening)

Run screening through the dashboard or API when needed:

Via Dashboard:

  1. Navigate to Screening > New Check
  2. Select or search for an applicant
  3. Choose Sanctions check type
  4. Click Run Screening

[Screenshot: New screening check form in dashboard]

Via API:

# Screen an existing applicant
curl -X POST https://api.bytrustgate.com/v1/screening/check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"applicant_id": "applicant-uuid",
"check_types": ["sanctions"]
}'

# Ad-hoc screening (no applicant record)
curl -X POST https://api.bytrustgate.com/v1/screening/check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "John Smith",
"date_of_birth": "1980-01-15",
"country": "US",
"check_types": ["sanctions"]
}'

Automatic Screening (Workflow Integration)

Configure screening to run automatically during onboarding:

# Example workflow configuration
workflow:
name: "Standard Onboarding"
steps:
- step: identity_verification
- step: document_verification
- step: screening
config:
check_types: ["sanctions", "pep"]
auto_approve_clear: true
escalate_hits: true

Batch Screening (Bulk Screening)

Screen multiple applicants at once:

curl -X POST https://api.bytrustgate.com/v1/screening/batch \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"applicant_ids": [
"uuid-1",
"uuid-2",
"uuid-3"
],
"check_types": ["sanctions"]
}'

Handling Screening Results

Clear Results (No Match)

When no matches are found:

{
"status": "clear",
"hit_count": 0,
"hits": []
}

Recommended actions:

  • No further action required for sanctions
  • Continue with other verification steps
  • Document the clear result in applicant record

Hit Results (Potential Match)

When matches are found:

{
"status": "hit",
"hit_count": 2,
"hits": [
{
"id": "hit-uuid",
"hit_type": "sanctions",
"matched_name": "John Smith",
"confidence": 85.5,
"resolution_status": "pending"
}
]
}

Required actions:

  1. Review each hit to determine if it's a true match
  2. Gather additional information if needed
  3. Resolve the hit as confirmed_true or confirmed_false
  4. Document your decision rationale

Learn more about Hit Resolution

Error Results

When screening fails:

{
"status": "error",
"error_message": "Request timed out"
}

Recommended actions:

  • Retry the screening
  • Check API status if errors persist
  • Contact support if issues continue

Best Practices

For Developers

# Example: Proper error handling for screening
async def screen_applicant(applicant_id: str):
try:
result = await screening_client.check(
applicant_id=applicant_id,
check_types=["sanctions", "pep"]
)

if result.status == "error":
# Retry logic
await retry_screening(applicant_id)
elif result.status == "hit":
# Notify compliance team
await notify_compliance(applicant_id, result.hits)
else:
# Clear - continue workflow
await continue_onboarding(applicant_id)

except ScreeningAPIError as e:
logger.error(f"Screening failed: {e}")
raise

For Compliance Officers

  1. Review hits promptly - Unresolved hits create regulatory risk
  2. Document thoroughly - Explain why you marked something as false positive
  3. Escalate true positives - Follow your SAR filing procedures
  4. Monitor metrics - Track false positive rates and review time