> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.withverifa.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.withverifa.com/_mcp/server.

# AML Compliance

> Screen individuals against global sanctions, PEP, and adverse media databases with continuous monitoring.

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.

> **Note**
>
> 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.

### Enhanced AML pricing & access

Enhanced AML screening is sold as an **annual-only** add-on (no monthly
billing) with a minimum **\$5,000 annual contract value**, per the underlying
ComplyAdvantage commercial terms.

| Component             | Price                                    |
| --------------------- | ---------------------------------------- |
| Per screen            | \$0.75                                   |
| Continuous monitoring | \$0.058 per monitored identity per month |

Existing active add-ons before 2026-04-17 are grandfathered on their previous
terms.

## 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

```bash
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"
  }'
```

#### Python

```python
import requests

check = requests.post(
    "https://api.withverifa.com/api/v1/checks",
    headers={"X-API-Key": "vk_live_your_key_here"},
    json={
        "check_type": "sanction",
        "external_ref": "user_abc123",
        "name_first": "Jane",
        "name_last": "Doe",
        "birthdate": "1997-06-15",
    },
).json()

print(f"Match found: {check['has_match']}")
```

#### JavaScript

```javascript
const check = await fetch('https://api.withverifa.com/api/v1/checks', {
  method: 'POST',
  headers: {
    'X-API-Key': 'vk_live_your_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    check_type: 'sanction',
    external_ref: 'user_abc123',
    name_first: 'Jane',
    name_last: 'Doe',
    birthdate: '1997-06-15',
  }),
}).then(r => r.json());

console.log('Match found:', check.has_match);
```

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)

```bash
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:

```json
{
  "id": "schk_abc123",
  "check_type": "aml_screening",
  "status": "completed",
  "has_match": true,
  "hit_count": 2,
  "match_summary": {
    "sanctions": 0,
    "pep": 1,
    "adverse_media": 1
  },
  "hits": [
    {
      "id": "screenhit_abc123",
      "hit_type": "pep",
      "name_similarity": 0.92,
      "dob_match": true,
      "combined_score": 0.89,
      "is_false_positive": false
    }
  ]
}
```

### Dismiss false positives

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

```bash
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

| Event                           | When                                   |
| ------------------------------- | -------------------------------------- |
| `screening.completed`           | Initial screening finished             |
| `screening.monitoring.new_hits` | Monitoring found new matches           |
| `screening.monitoring.clear`    | Monitoring run completed — no new hits |

### Managing monitoring

```bash
# 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:

```bash
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:

```bash
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:

```bash
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

| Regulation                 | Requirement                              | Verifa capability                                  |
| -------------------------- | ---------------------------------------- | -------------------------------------------------- |
| BSA/AML (US)               | CIP, CDD, ongoing monitoring             | Document verification + AML screening + monitoring |
| 4AMLD / 5AMLD / 6AMLD (EU) | CDD, PEP screening, beneficial ownership | AML screening with PEP + adverse media             |
| MLR 2017 (UK)              | CDD, enhanced due diligence, PEP         | AML screening with UK sanctions + PEP              |
| PCMLTFA (Canada)           | Identity verification, PEP, sanctions    | Document verification + AML screening              |
| AML/CTF Act (Australia)    | CDD, ongoing monitoring                  | AML screening + continuous monitoring              |
| FATF Recommendations       | Risk-based approach, ongoing monitoring  | Risk scoring + continuous monitoring               |

## Related

* [Screening & Reports](/core-concepts/screening-reports) — Full screening API reference
* [Identities](/core-concepts/identities) — How identity records work
* [Webhooks Guide](/integration-guides/webhooks-guide) — Set up monitoring notifications
* [KYC Onboarding](/use-cases/kyc-onboarding) — Full onboarding flow with screening
* [Lists](/core-concepts/lists) — Custom allow/block/flag lists