Sanctions screening is the one check in this certification where the main risk is not fraud. A disposable email costs you a trial account. A stolen card costs you a chargeback. Paying a sanctioned person or company can be a violation of law for your business, regardless of whether anyone intended harm, and regulators tend to ask a simple question afterwards: did you check, and can you show it?
That makes this lesson different in tone. The API call is the easy part. Most of the work is deciding what a fuzzy match means, who looks at it, what you record, and what you are actually obliged to do. Those obligations depend on where you operate, what you sell and who you pay, and this lesson cannot tell you what yours are. It can show you how to build screening that a compliance person would recognise as reasonable, and how to avoid the engineering mistakes that make it worthless.
What a sanctions list is
Governments publish lists of people, companies, vessels and organisations that residents and businesses under their jurisdiction are restricted from dealing with. The best known is the US Treasury's OFAC Specially Designated Nationals (SDN) list. The UN Security Council, the EU and the UK each publish their own. They overlap but are not identical, and they change often, sometimes daily.
Each entry has a primary name, usually a set of aliases ("also known as"), and whatever identifying details the authority has: dates and places of birth, nationalities, addresses, passport numbers, and the sanctions programs it falls under. Those details matter, because the name alone is often not enough to tell two people apart.
The call
Sanctions Screening (sanctionscreening) takes a name (at least three characters) and returns scored matches. It costs 20 credits per call, which is the most expensive check in this course, so you will want to be deliberate about when you run it.
curl "https://api.apiverve.com/v1/sanctionscreening?name=Banco+Nacional+de+Cuba" \
-H "x-api-key: YOUR_API_KEY"An exact hit on the primary name. verdict summarises the best match; results holds every candidate.
The top-level fields are the ones your code branches on:
| Field | Meaning |
|---|---|
matched | At least one candidate scored at or above the threshold |
matchCount | How many candidates came back |
verdict | Summary of the best match: exact, high, possible or none |
topScore | The best candidate's score, 0 to 1 |
matchedLists | Which lists produced the matches |
lists | Which lists were screened, with each list's publishDate, recordCount and lastUpdated |
Each item in results has name, type (individual, entity and so on), score, confidence, programs, source (the list code) and sourceId. Paid plans add the detail you need to resolve a match: matchedOn (the exact name or alias that matched), matchedVia (primary or aka), isWeakAlias, aka, dateOfBirth, nationalities, addresses and ids. The threshold, limit and type parameters are also paid-plan options. lists is available on every plan and takes a comma-separated set of codes: ofac_sdn, ofac_cons, un, eu, uk.
Fuzzy matching is the point, and the problem
Exact matching would be useless. Names are transliterated from other alphabets in several ways, people drop or reorder parts of their names, and anyone trying to evade a screen will misspell on purpose. So screening is fuzzy by design. Try a misspelling:
curl "https://api.apiverve.com/v1/sanctionscreening?name=Banko+Nacional+de+Kuba" \
-H "x-api-key: YOUR_API_KEY"Two letters wrong, and the bank still matches with verdict high and a score around 0.93.
That is what you want. Now the cost of it. Screen a common name:
curl "https://api.apiverve.com/v1/sanctionscreening?name=Mohammed+Ali" \
-H "x-api-key: YOUR_API_KEY"Several different listed individuals match through their aliases, each with a high score.
At the default threshold of 0.85, Mohammed Ali returns several unrelated listed individuals, each scoring 0.96, each matched through an alias that contains both names. Millions of people share that name. Almost every one of them is not on any list. If your system blocks every customer who produces a high verdict, it will discriminate against people with common names from particular regions, and it will do it confidently.
This is the false positive problem, and it is the central fact of sanctions screening. The screen is a filter that hands candidates to a human. It does not make the decision.
Reading a match
When a screen returns a candidate, a reviewer asks whether the person in front of them is the person on the list. The useful evidence is everything other than the name:
- Type. An
entitymatch against an individual customer, or the reverse, is usually a false positive. - Date of birth. A listed person born in 1965 is not your 24-year-old customer.
- Nationality and addresses. Weak on their own, strong together.
- Which name matched. A hit via a weak alias (
isWeakAlias: true), such as a nickname or a single common word, is much less meaningful than a hit on the primary name.
This is why you collect date of birth and country at onboarding if you are going to screen individuals. Without them, a reviewer has nothing to resolve a match with, and every common name becomes a stuck case.
Screening a new individual customer returns verdict: high, topScore 0.96, matched through an alias of a listed individual whose recorded year of birth is 1965. Your customer's verified date of birth is 1999. What is the right handling?
Answer the check above to continue.
What screening does and does not satisfy
A name screen is one control. Depending on your business, the obligations around it can include knowing who your customers are, identifying the owners behind business customers, monitoring transactions, filing reports, and restricting business with sanctioned countries and regions as well as listed parties. Country-based restrictions are a reason to look at the IP and BIN signals from earlier lessons, but those signals are evidence for review, not proof of location.
What a well-built screen gives you is a defensible process: you checked the right names, at the right moments, against current lists, sent every candidate to a person, and kept a record. That is the part engineering owns. The rest is a conversation with whoever owns compliance in your business.
The last lesson pulls everything in this certification together: contact checks, network signals, card and bank checks, and sanctions results, combined into one score with reasons attached. Continue to Build an explainable risk score.