# OFAC Sanctions API

> **You are on:** `https://api.beta.paywithlocus.com/api` | [llms.txt](https://beta.paywithlocus.com/llms.txt)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API |
> |---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Screen individuals, entities, vessels, and crypto wallets against 25+ global sanctions lists including OFAC SDN, EU, UN, INTERPOL, and PEP databases. Fuzzy matching designed with US Treasury guidelines.

**Category:** Compliance / KYC | **Website:** [ofac-api.com](https://ofac-api.com) | **Docs:** [docs.ofac-api.com](https://docs.ofac-api.com)

## Access Methods

| Method | Base URL | Auth |
|--------|----------|------|
| **MPP (Tempo)** | `https://ofac.mpp.paywithlocus.com/ofac/` | HTTP 402 auto-payment |
| **Wrapped API** | `https://api.beta.paywithlocus.com/api/wrapped/ofac/` | `Authorization: Bearer <LOCUS_API_KEY>` |

**OpenAPI discovery:** `GET https://ofac.mpp.paywithlocus.com/openapi.json`

## Endpoints

### Sanctions Screening

Screen individuals, entities, vessels, aircraft, IDs, and crypto wallets against global sanctions lists using fuzzy matching logic designed with US Treasury guidelines. Supports batch screening up to 500 cases.

**Estimated cost:** $0.012/case

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `minScore` | integer | No | Minimum similarity score for matches (80-100, default 95). Lower values return more results |
| `sources` | string[] | No | Sanction list codes to screen against (e.g. ["SDN", "EU", "UN"]). Defaults to all available lists |
| `types` | string[] | No | Filter results to these entity types: "person", "organization", "vessel", "aircraft" |
| `cases` | array | Yes | Array of case objects to screen (max 500). Each case must have a "name" field. See additional case fields below. |
| `cases[].name` | string | Yes | Full name of the individual or entity being screened |
| `cases[].id` | string | No | Unique ID to map results back to this case (recommended for batch) |
| `cases[].type` | enum | No | Entity type: "person", "organization", "vessel", or "aircraft". Enables enhanced matching logic |
| `cases[].dob` | string | No | Date of birth (YYYY-MM-DD) |
| `cases[].gender` | string | No | Gender: "m", "f", "male", or "female" |
| `cases[].citizenship` | string | No | Citizenship |
| `cases[].nationality` | string | No | Nationality |
| `cases[].phoneNumber` | string | No | Phone number |
| `cases[].emailAddress` | string | No | Email address |
| `cases[].cryptoId` | string | No | Crypto wallet address |
| `cases[].address` | object | No | Address object with fields: address1, address2, city, stateOrProvince, postalCode, country |
| `cases[].identification` | array | No | Array of ID objects (passport, TIN, etc.) with fields: idNumber (string), type (string), country (string) |

```bash
curl -X POST https://ofac.mpp.paywithlocus.com/ofac/screen \
  -H "Content-Type: application/json" \
  -d '{"minScore":"<integer>","sources":"<string[]>","types":"<string[]>","cases":"<array>","cases[].name":"<string>","cases[].id":"<string>","cases[].type":"<enum>","cases[].dob":"<string>","cases[].gender":"<string>","cases[].citizenship":"<string>","cases[].nationality":"<string>","cases[].phoneNumber":"<string>","cases[].emailAddress":"<string>","cases[].cryptoId":"<string>","cases[].address":"<object>","cases[].identification":"<array>"}'
```

### Sanctions Search

Search global sanctions and risk databases for names, addresses, IDs, and crypto wallets. Returns broader results than screening — matches on any similar field. Supports batch search up to 500 cases.

**Estimated cost:** $0.012/case

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `sources` | string[] | No | Sanction list codes to search (e.g. ["SDN", "EU", "UN"]). Defaults to all available lists |
| `types` | string[] | No | Filter results to these entity types: "person", "organization", "vessel", "aircraft" |
| `cases` | array | Yes | Array of case objects to screen (max 500). Each case must have a "name" field. See additional case fields below. |
| `cases[].name` | string | Yes | Full name of the individual or entity being screened |
| `cases[].id` | string | No | Unique ID to map results back to this case (recommended for batch) |
| `cases[].type` | enum | No | Entity type: "person", "organization", "vessel", or "aircraft". Enables enhanced matching logic |
| `cases[].dob` | string | No | Date of birth (YYYY-MM-DD) |
| `cases[].gender` | string | No | Gender: "m", "f", "male", or "female" |
| `cases[].citizenship` | string | No | Citizenship |
| `cases[].nationality` | string | No | Nationality |
| `cases[].phoneNumber` | string | No | Phone number |
| `cases[].emailAddress` | string | No | Email address |
| `cases[].cryptoId` | string | No | Crypto wallet address |
| `cases[].address` | object | No | Address object with fields: address1, address2, city, stateOrProvince, postalCode, country |
| `cases[].identification` | array | No | Array of ID objects (passport, TIN, etc.) with fields: idNumber (string), type (string), country (string) |

```bash
curl -X POST https://ofac.mpp.paywithlocus.com/ofac/search \
  -H "Content-Type: application/json" \
  -d '{"sources":"<string[]>","types":"<string[]>","cases":"<array>","cases[].name":"<string>","cases[].id":"<string>","cases[].type":"<enum>","cases[].dob":"<string>","cases[].gender":"<string>","cases[].citizenship":"<string>","cases[].nationality":"<string>","cases[].phoneNumber":"<string>","cases[].emailAddress":"<string>","cases[].cryptoId":"<string>","cases[].address":"<object>","cases[].identification":"<array>"}'
```
