Sanctions screening means checking whether a customer, supplier or counterparty is on a sanctions list before you do business with them. In the United States the list that matters is OFAC's: the Treasury's Specially Designated Nationals (SDN) list plus its non-SDN lists, about 20,000 people, companies, vessels and aircraft.
As of today, POST /us/ofac/sanctions-screen/v1 takes the name you have, with whatever else you know, and returns the parties on those lists that may be the same one. Each comes with a score from 0 to 100 and what decided it.
Why a name search is not enough#
Names never arrive the way the list writes them. OFAC records MADURO MOROS, Nicolas. Your onboarding form says Nicholas Maduro Moros. An exact search finds nothing, and in screening, "nothing" is the most expensive wrong answer there is.
The screen matches names the way a compliance analyst reads them:
- Any word order:
Nicolas MaduroandMADURO MOROS, Nicolasare the same person. - Typos and transliterations:
NicholasfindsNicolas, andAero CarribeanfindsAERO CARIBBEAN. - Accents and punctuation:
NicolásandNicolasmatch. - Words joined or split:
Al QaidaandAlqaidamatch. - Aliases too: every primary name and every alias OFAC records is compared.
It also knows what does not make two names alike. Legal forms such as LLC or S.A. do not, so two unrelated companies that share a suffix stay apart. And two names that differ only by a number, such as two vessels in a fleet, do not match.
How it works#
The score weighs what you send. The name decides most of it, and the rest confirms or rules out the hit:
| What you send | Weight | What it does |
|---|---|---|
name | 60 | Required. Matched through typos, order, accents and aliases |
birth_date | 25 | Same day adds, same year counts in part, another year subtracts |
country | 15 | A tie to the country adds, no tie subtracts. English name or ISO code |
id_number | decides | A passport, national ID or tax number that matches one OFAC records sets the score to 100 |
A part you leave out, or that OFAC does not record for a party, is not compared, and the others share its weight. With a name alone, the name is the whole score.
Try it#
curl https://api.croma.run/us/ofac/sanctions-screen/v1 \
-H "Authorization: Bearer $CROMA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Nicolas Maduro",
"birth_date": "1962-11-23",
"country": "VE"
}'The name is written in a different order from the list and without the second surname, and it still finds the party:
{
"as_of": "2026-10-13T21:30:34.860Z",
"threshold": 85,
"matched": true,
"count": 1,
"hits": [
{
"score": 97,
"matched_name": "MADURO MOROS, Nicolas",
"matched_on": "name",
"breakdown": {
"name": { "score": 95, "weight": 0.6 },
"birth_date": { "result": "match", "score": 100, "weight": 0.25, "value": "23 Nov 1962" },
"country": { "result": "match", "score": 100, "weight": 0.15, "value": "Venezuela" },
"id_number": { "result": "not_compared", "value": null }
},
"party": {
"id": "sdn-22790",
"list": "sdn",
"name": "MADURO MOROS, Nicolas",
"party_type": "individual",
"programs": ["VENEZUELA", "IRAN-CON-ARMS-EO"]
}
}
]
}matched answers the yes or no question in one field. breakdown shows why: the name scored 95, and the date of birth and the country both matched. Without birth_date, the same name also returns his son, who shares it, which is exactly why the date is worth sending.
Tuning it#
threshold(50 to 100, default85) is how close a party must be to come back. Raise it for fewer, closer hits; lower it to review more.party_typelimits the screen toindividual,entity,vesseloraircraft.listscreens againstsdnornon_sdnalone.limit(1 to 50, default10) caps the hits.
Questions#
Does an empty hits mean the person is clear? It means no party on the lists comes close to the name at your threshold. That is a complete answer, not an error.
Is a hit a determination? No. A name match is a starting point. OFAC's own guidance is to confirm a hit against the party's other identifiers before acting on it, and the list holds many similar names. Sending a date of birth, a country or an ID number is how you tell them apart.
How current is it? The lists are brought up to date every day, and every answer carries as_of. It is a dataset endpoint, so it answers in milliseconds.
Can I screen a whole portfolio? Call it once per subject. A monitor on a screen emails you when its answer changes after a daily update, which is how you catch a customer added to the list after you onboarded them.
Can an agent use it? Yes. It is on the MCP server as ofac_sanctions_screen.
Every field is in the OFAC guide. To browse the list by words instead, there is the free OFAC search tool, and every other US source is under United States.