AML Compliance

Anti-Money Laundering (AML) regulations require businesses to screen customers against sanctions lists, politically exposed persons (PEP) databases, and adverse media sources — both at onboarding and on an ongoing basis. Verifa handles both with a single API.

Two tiers of screening

Basic watchlist screening (all plans)

Runs automatically on every verification session. Screens against:

  • OFAC SDN — U.S. Office of Foreign Assets Control
  • EU Sanctions — European Union consolidated list
  • UN Sanctions — United Nations Security Council
  • UK Sanctions — HM Treasury

You don’t need to add this to your workflow — Verifa inserts it automatically after document OCR, using the name extracted from the ID. Uses trigram similarity matching with a configurable threshold (default 0.6).

Enhanced AML screening (Professional + Enterprise)

A separate check you add to your workflow for deeper screening against 6,000+ global watchlists including:

  • Government sanctions lists (200+ countries)
  • PEP databases (current and former officials)
  • Adverse media sources
  • Law enforcement watchlists
  • Regulatory enforcement actions

Includes continuous monitoring — Verifa automatically re-screens when watchlists are updated and sends you a webhook when new matches are found.

Enhanced AML screening is a paid add-on available on Professional and Enterprise plans. Basic watchlist screening (OFAC, EU, UN, UK) is free and runs on every session automatically.

Screening as part of a workflow

When you add aml_screening to your workflow, it uses the data extracted from the ID document — no manual data entry required:

Capture → Document Scan → Face Match → AML Screening → Auto-Approve

The aml_screening check receives the name, date of birth, and nationality from the document_ocr step automatically. Add it to your workflow using the dashboard workflow builder or via the API.

Standalone screening

Screen a person without a verification session — useful for batch onboarding, periodic re-screening, or screening existing customers:

Single check

$curl -X POST https://api.withverifa.com/api/v1/checks \
> -H "X-API-Key: vk_live_your_key_here" \
> -H "Content-Type: application/json" \
> -d '{
> "check_type": "sanction",
> "external_ref": "user_abc123",
> "name_first": "Jane",
> "name_last": "Doe",
> "birthdate": "1997-06-15"
> }'

When you pass an external_ref, Verifa automatically creates a lightweight identity record to track the person across future checks.

Full screening (sanctions + PEP + adverse media)

$curl -X POST https://api.withverifa.com/api/v1/checks/full \
> -H "X-API-Key: vk_live_your_key_here" \
> -H "Content-Type: application/json" \
> -d '{
> "check_types": ["sanction", "pep", "adverse_media"],
> "external_ref": "user_abc123",
> "name_first": "Jane",
> "name_last": "Doe",
> "birthdate": "1997-06-15"
> }'

Handling matches

When screening finds potential matches, each hit includes a similarity score and match details:

1{
2 "id": "schk_abc123",
3 "check_type": "aml_screening",
4 "status": "completed",
5 "has_match": true,
6 "hit_count": 2,
7 "match_summary": {
8 "sanctions": 0,
9 "pep": 1,
10 "adverse_media": 1
11 },
12 "hits": [
13 {
14 "id": "screenhit_abc123",
15 "hit_type": "pep",
16 "name_similarity": 0.92,
17 "dob_match": true,
18 "combined_score": 0.89,
19 "is_false_positive": false
20 }
21 ]
22}

Dismiss false positives

Common names frequently trigger false matches. Dismiss them via the API:

$curl -X POST https://api.withverifa.com/api/v1/checks/schk_abc123/dismiss-matches \
> -H "X-API-Key: vk_live_your_key_here" \
> -H "Content-Type: application/json" \
> -d '{
> "hit_ids": ["screenhit_abc123"],
> "reason": "Different person — confirmed by date of birth mismatch."
> }'

Dismissed hits are excluded from future monitoring alerts.

Continuous monitoring

Enhanced AML screening includes ongoing monitoring. When a monitored watchlist is updated, Verifa automatically re-screens and notifies you via webhook if new matches are found.

Webhook events

EventWhen
screening.completedInitial screening finished
screening.monitoring.new_hitsMonitoring found new matches
screening.monitoring.clearMonitoring run completed — no new hits

Managing monitoring

$# Pause monitoring for a check
$curl -X POST https://api.withverifa.com/api/v1/checks/schk_abc123/pause-monitoring \
> -H "X-API-Key: vk_live_your_key_here"
$
$# Resume monitoring
$curl -X POST https://api.withverifa.com/api/v1/checks/schk_abc123/resume-monitoring \
> -H "X-API-Key: vk_live_your_key_here"

Monitoring history

View the audit trail of all monitoring runs:

$curl https://api.withverifa.com/api/v1/checks/schk_abc123/history \
> -H "X-API-Key: vk_live_your_key_here"

PDF reports

Generate compliance-ready PDF reports for auditors:

$curl https://api.withverifa.com/api/v1/checks/schk_abc123/report.pdf \
> -H "X-API-Key: vk_live_your_key_here" \
> -o screening_report.pdf

GDPR redaction

When a customer exercises their right to be forgotten:

$curl -X POST https://api.withverifa.com/api/v1/checks/schk_abc123/redact \
> -H "X-API-Key: vk_live_your_key_here"

This removes all PII from the check record while preserving the audit trail.

Regulatory mapping

RegulationRequirementVerifa capability
BSA/AML (US)CIP, CDD, ongoing monitoringDocument verification + AML screening + monitoring
4AMLD / 5AMLD / 6AMLD (EU)CDD, PEP screening, beneficial ownershipAML screening with PEP + adverse media
MLR 2017 (UK)CDD, enhanced due diligence, PEPAML screening with UK sanctions + PEP
PCMLTFA (Canada)Identity verification, PEP, sanctionsDocument verification + AML screening
AML/CTF Act (Australia)CDD, ongoing monitoringAML screening + continuous monitoring
FATF RecommendationsRisk-based approach, ongoing monitoringRisk scoring + continuous monitoring