TIC

Screening checks people and organisations against politically exposed person (PEP) lists and sanctions lists. Adverse media is not screened. There are three ways in:

  • Screen a company together with its board, management and beneficial owners, from the company’s ID. The people and their identity numbers come from the registers.
  • Screen a person by their person ID.
  • Search for subjects you supply yourself, by name and/or identity number, without them existing as records in the platform.

Every screening is stored: hits are marked as new or already seen, and decisions you record on hits follow the person into later screenings.

Screen a company POST /screening/companies/{companyId} Pro+ tier
Screen a person POST /screening/persons/{personId} Enterprise+ tier
Search POST /screening/search Enterprise+ tier
Review, decisions and history Reviewing hits Pro+ tier
Authentication x-api-key header with the pep scope, see Authentication
Engine trapets (the default) or tic, per request. Same request, same response. See Engines.
Subjects per call Search: 1 to 50. Company: up to 250 people and companies.
Billing Every screening places an order; a company screening is billed per screened person or company. The same screening asked again within 24 hours returns the stored result free of charge. On the tic engine every screening is billed per screened person or company. Test mode is free.

These pages cover what the endpoint reference cannot: company and person screening, how matching works, what a search result contains, reviewing hits, which lists are screened, the two engines, and how to test.

Quick start

curl -X POST https://lens-api.tic.io/screening/search \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "testMode": true,
    "subjects": [
      { "reference": "cust-1001", "name": "Anna Exempelsson", "birthDate": "1975-04-12", "countries": ["SWE"] },
      { "reference": "cust-1002", "identityNumber": "5560000000" }
    ]
  }'

The response contains one entry per subject under results, each with its own list of hits. A subject with no hits is still returned, with hitCount 0. See Results for the full data model and an example response.

To screen a company with everyone behind it, only its ID is needed:

curl -X POST https://lens-api.tic.io/screening/companies/3508351 \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "testMode": true }'

See Company and person screening.

Request essentials

The full request schema is on the endpoint page. The properties that shape the outcome are:

Property Description
subjects[].name The name to match. At most 8 name parts. Required unless identityNumber is set.
subjects[].identityNumber Personal identity number (10 or 12 digits) for a person, organisation number (10 digits) for an organisation. Matched exactly. Required unless name is set.
subjects[].birthDate yyyy-MM-dd, yyyy-MM or yyyy. Filters hits by birth date.
subjects[].countries ISO 3166-1 alpha-3 codes, for example ["SWE", "NOR"]. Filters hits by country.
subjects[].reference Your own reference, echoed back on the result and used in warning and error messages.
serviceScope Which lists to screen: a group (SANCTION, PEP), a single list name, or a comma-separated combination. Omit for every sanctions and PEP list. See Lists.
nameMatching Regular (default) or Phonetic.
minimumNameMatchScore 0.6 to 0.99. Required with phonetic matching, ignored otherwise.
fuzzyBirthDateMatching Accept near matches on the birth date.
testMode Run against the test environment. See Test mode.
engine trapets (the default) or tic. See Engines.

How matching works

Understanding the matching rules is the key to useful results and few false positives. The rules below are those of the default engine; the tic engine scores names instead, see Matching with tic.

Identity number first. A list entry carrying the same identity number is the strongest possible match and outranks everything else. A list entry carrying a different identity number is left out, also from name matching. Entries without an identity number of their own are matched on the name. So when a person’s personal identity number has changed, an entry under the old number is only found with the old number; company and person screening sends every number the person has had.

Every word of the name must be on the entry. Words are compared in any order, with case and accents ignored. Anna Exempelsson finds an entry listed as Anna Maria Exempelsson, but Anna Maria Kristina Exempelsson does not find an entry listed as Anna Exempelsson. Send the given name the person uses and the family name, or the family name alone together with birthDate. For an organisation, leave out the legal form: Exempel Holding finds Exempel Holding AB, but Exempel Holding Group AB does not.

Identity number. Matched exactly against the identifiers registered on the list entry. Some PEP list entries carry a country prefix on the identity number, for example SE198202029878. A prefix is not required to get an exact match, but if you include one you will only be matched against entries with the same prefix. Use a prefix only when screening specifically against the PEP_Edge list.

Birth date. Supplying birthDate filters out entries whose birth date does not match. Entries with no known birth date are always returned, since they cannot be ruled out. Use fuzzyBirthDateMatching to accept near matches.

Countries. Supplying countries filters out entries registered to other countries. Entries with no country data at all are always returned. Country data on PEP lists is generally reliable, country data on sanctions lists less so, so a country filter cuts false positives but can also exclude a true hit whose list entry has poor country data.

Regular versus phonetic name matching. Regular matching compares the name against the exact aliases stored on each entry. Phonetic matching also matches names that sound alike and is the right choice when spelling is uncertain, for example transliterated names. It must be combined with minimumNameMatchScore, and a low score combined with phonetic matching produces a very large number of hits. Start at 0.85 and adjust.

Hit rating

Every hit has a hitRating from 1 to 5 that states what the entry matched on. The higher the rating, the more certain the match.

hitRating Person matched on Organisation matched on
5 Identity number Organisation number
4 Name and year or date of birth Name and registration date
2 Name and country Name and country
1 Name only Name only

The tic engine rates 5, 4 or 1. A rating of 1 means only the name matched. Whether that is the same person needs to be established from the other data on the hit: birth date, countries, roles and aliases.

Name match score

nameMatchScore is a value between 0 and 1 that states how closely the subject’s name matched the best alias on the entry, where 1.0 is an exact match. It is only populated when minimumNameMatchScore was set on the request.

Recommendations

  • Screen companies by ID. Company screening finds the board, management and owners, sends every identity number they have had and the right name forms, and stores the result.
  • Screen in batches. Up to 50 subjects can be searched in one call. When screening a customer base, fill each call rather than sending one subject per call.
  • Always send a reference. It is the only reliable way to pair results with subjects when you screen several at once, and it is what warning and error messages refer to.
  • Prefer identity numbers. An identity number gives a hitRating of 5 and removes name ambiguity entirely. Send the name as well when you have it, since some lists lack identity numbers.
  • Keep names short. Every word you send must be on the entry: send the given name the person uses and the family name, not every given name.
  • Narrow with birth date and countries. They remove most false positives on common names. Remember that entries lacking that data still match.
  • Treat rating 1 hits as candidates, not confirmations. Use the birth date, countries, aliases and roles on the hit to decide.
  • Keep the phonetic threshold high. Start at 0.85 and lower it only if true hits are being missed.
  • Check notScreenedReason and servicesQueried. A subject that was not screened, or a list that was not queried, looks like a clean result if you only count hits.
  • Use isNew and decisions. Every screening is stored; isNew tells a new hit from one already reviewed, and decisions carry into later screenings. See Reviewing hits. externalId identifies a list entry over time if you keep your own records.