AML Check

The AML Check product allows you to perform due diligence on your customers by screening them against global watchlists, politically exposed persons lists, and adverse media publications. The product returns whether the screened customers are found on any of these lists and the corresponding details, which can be used to assess the customers’ associated risks.

Integration Options

Currently only available via the Rest API.

Endpoint

Request type: POST

Environment
Endpoint

Sandbox

https://testapi.smileidentity.com/v1/aml

Production

https://api.smileidentity.com/v1/aml

Request Values

The AML Check product requires the following input parameters which should be contained in a JSON body object submitted to the endpoint

Name

Type

Required

Description

partner_id

string

Yes

A unique number assigned by Smile ID to your account. Can be found in the portal here

source_sdk

string

No

The integration option you are using. For rest api send the value as rest_api

source_sdk_version

string

No

The version of the integration option you are using. Send value as 1.0.0

signature

string

Yes

The outgoing signature to authenticate the request from you to Smile ID. You can read more about calculating the signature here

timestamp

string

Yes

The timestamp used to calculate the signature in ISO date/time format

user_id

string

Yes

A value generated by you, so you can track users on your end. This value must be unique, can be any string and can follow your identifier convention

Note: If you intend to enhance your due diligence and perform KYC on the customer e.g. Biometric KYC or Document Verification, you can re-use the user_id by setting the search_existing_user key to true. A unique job_id is still required.

job_id

string

Yes

A value generated by you, so you can track jobs on your end. This value must be unique, can be any string and can follow your identifier convention.

countries

array

Yes

An array that takes the customer’s known nationalities e.g. Nigeria is NG, Kenya is KE, etc.

full_name

string

Yes

The full name of the customer

birth_year*

string

No

The customer’s year of birth, in the format yyyy.

strict_match

boolean

No

The key provides flexibility in matching logic, allowing partners to specify whether they prefer strict or more lenient matching criteria per job search. Default value of the key is true.

search_existing_user

string

No

If you intend to re-use the name and year of birth of a user’s previous KYC job, you can pass the string with the value set to True.

Note: You can only re-use name and year of birth from a user’s previously successful Biometric KYC or Document Verification, you are still required to pass the nationality in the countries field

*we highly recommend sending the birth_year to reduce the number of false matches

Example JSON Body

{
  "birth_year": "1984",
  "countries": ["US"],
  "full_name": "John Leo Doe",
  "job_id": "3ba0e15e-1a56-4799-a94d-b0e084f50256",
  "partner_id": "023",
  "search_existing_user": false,
  "strict_match": true,
  "signature": "...",
  "timestamp": "2021-08-12T17:57:00.614879",
  "user_id": "4cb0f26-2b567-5800-b05e-c0f095g6036"
}

Return Values

The AML Check product returns details of the customer screening and additional basic information about the user such as aliases, addresses, date of births, etc. whenever available.\

Name

Type

Description

Return Values

SmileJobID

string

The Smile internal reference number for the job. Please include this when contacting support on a job related issue

signature

string

The incoming signature, you can use this to verify that the response is from Smile ID

timestamp

string

The incoming timestamp in ISO date/time format, use this to calculate the incoming signature

ResultCode

string

Numeric value of the outcome of the AML Check job

For the list of potential result codes, check Result Code and Result Texts below

ResultText

string

Textual value of the job outcome. Human readable value for the result

For the list of potential result texts, check Result Code and Result Texts below

Actions

object

A JSON object containing the actions performed in the job. Currently only states whether the screened customer matched at least one record in our global watchlists, politically exposed persons list or an adverse article has been published about the person

Actions.Listed

string

Does the screened customer match any list or have had any adverse media published about them

Listed

or

Not Listed

PartnerParams

object

A JSON object containing the job references and any additional key-value pair you sent with the request

StrictMatch

boolean

Providing partners with clear visibility into the matching logic applied to their request.

True or False

PartnerParams.user_id

string

The unique user reference that was included in the request

PartnerParams.job_id

string

The unique job reference that was included in the request

PartnerParams.job_type

string

The numerical representation of the product you performed

10

no_of_persons_found

integer

The numbers of persons that matched with the customer based on the search parameters

people

array of objects

A JSON array containing JSON objects of each person that matches the customer based on the search parameters

people[].name

string

The name of the person that matches the customer based on the search parameters

people[].addresses

array of strings

A JSON array containing all the known addresses of the person that matches the customer based on the search parameters

people[].aliases

array of strings

A JSON array containing all the known aliases of the person that matches the customer based on the search parameters

people[].dates_of_birth

array of strings

A JSON array containing all the known dates of birth of the person that matches the customer based on the search parameters

people[].nationalities

array of strings

A JSON array containing all the known nationalities of the person that matches the customer based on the search parameters

people[].sanctions

array of objects

A JSON array containing JSON objects of each sanctions listing of the person that matches the customer based on the search parameters

people[].sanctions[].date_of_birth

string

The date of birth in the sanctions listing

people[].sanctions[].nationality

string

The nationality in the sanctions listing

people[].sanctions[].source_details

object

The source details of the sanctions listing

people[].sanctions[].source_details.listed_date

string

The date the sanction was listed

people[].sanctions[].source_details.source_link

array of strings

Links to the source of the sanctions listing

people[].sanctions[].source_details.source_name

string

Name of the source of the sanctions listing

people[].sanctions[].source_details.source_type

string

The type of source

Sanctions

people[].enforcement_action

array of objects

A JSON array containing JSON objects of each enforcement action of the person that matches the customer based on the search parameters

people[].enforcement_action[].description

string

Details of the enforcement action

people[].enforcement_action[].date

string

The date the enforcement action was enacted

people[].enforcement_action[].source_details

object

The source details of the enforcement action

people[].enforcement_action[].source_details.source_name

string

Name of the source of the enforcement action

people[].enforcement_action[].source_details.source_link

string

Link to the source of the enforcement action

people[].pep

object

A JSON objects containing details of the political positions of the person that matches the customer based on the search parameters

people[].pep.pep_level

integer

The level of political influence the person that matches the customer based on the search parameters holds or held in a country

1 - high

or

2 - medium

or

3 - low

people[].pep.politcal_positions

array of objects

A JSON array containing JSON objects of all the political positions the person that matches the customer based on the search parameters holds or held in a country

people[].pep.politcal_positions[].country

string

The country where the political position is/was held. Note, this might be different from the person’s nationality

people[].pep.politcal_positions[].position

string

The actual political position held

people[].pep.politcal_positions[].from

string

The date the person commenced holding the political position

people[].pep.politcal_positions[].to

string

The date the person stopped holding the political position (if applicable)

people[].pep.sources

array of objects

A JSON array containing JSON objects of all the sources of the political positions

people[].pep.sources[].source_link

string

Link to the source of the political position

people[].pep.sources[].source_name

string

Link to the source name of the political position

people[].associations

array of objects

A JSON array containing JSON objects of all sanctioned or politically exposed affiliates of the person that matches the customer based on the search parameters

people[].associations[].association_type

string

The association type to the affiliate

PEP

or

SANCTIONS

people[].associations[].name

string

Name of the affiliate

people[].associations[].relationship

string

The relationship between the affiliate and the person that matches the customer based on the search parameters

people[].adverse_media

array of objects

A JSON array containing JSON objects of all adverse media publications written about the person that matches the customer based on the search parameters

people[].adverse_media[].date_published

string

The date the article was published

people[].adverse_media[].publisher

string

The media outlet that published the article

people[].adverse_media[].source_link

string

Link to the source of the article

people[].adverse_media[].title

string

Title of the article

people[].news_summary[].newsCategory

string

The name of the news category eg Financial Crime

people[].news_summary[].numberOfArticles

integer

The total number of articles published under this category for the person

Example JSON Response

{
  "Actions": {
    "Listed": "Listed"
  },
  "PartnerParams": {
    "job_type": 10,
    "user_id": "4cb0f26-2b567-5800-b05e-c0f095g6036",
    "job_id": "3ba0e15e-1a56-4799-a94d-b0e084f50256"
  },
  "SmileJobID": "0000000411",
  "no_of_persons_found": 1,
  "people": [
    {
      "addresses": ["Burbank"],
      "adverse_media": [
        {
          "date_published": "2021-09-24",
          "publisher": "Regulatory Times",
          "source_link": "https:regulatorytimes.com/article",
          "title": "Jon Doe angered regulators"
        }
      ],
      "aliases": ["John Doe"],
      "associations": [
        {
          "association_type": "PEP",
          "name": "Bob Smith",
          "relationship": "Bob Smith is an associate of John Leo Doe"
        }
      ],
      "dates_of_birth": ["1984-07-16"],
      "name": "John Leo Doe",
      "nationalities": ["American"],
      "pep": {
        "pep_level": 1,
        "political_positions": [
          {
            "country": "United States",
            "from": "2020-01-05",
            "position": "Representative",
            "to": "2022-01-05"
          },
          {
            "country": "United States",
            "from": "2022-01-05",
            "position": "Senator",
            "to": null
          }
        ],
        "sources": [
          {
            "source_link": "https://www.senate.gov/senators/",
            "source_name": "senate.gov"
          }
        ]
      },
      "sanctions": [
        {
          "date_of_birth": "",
          "nationality": "American",
          "source_details": {
            "listed_date": "2020-01-05",
            "source_link": ["https://sanctionslist.com"],
            "source_name": "Office of Foreign Assets Control (OFAC)",
            "source_type": "Sanctions"
          }
        }
      ]
    }
  ],
  "ResultCode": "1030",
  "ResultText": "Found on list",
  "signature": "...",
  "StrictMatch": true,
  "timestamp": "2023-02-17T16:24:16.835Z"
}

Error Codes

Error codes occur when there is a general failure that prevents the system from processing the job. AML Check jobs that return errors do not show up in the job list page of the portal.\

Code

Text

Description

2205

You are not authorized to do that.

An invalid signature/timestamp was used to sign the request. You can troubleshoot the error here.

2210

No enrolled user found

You attempted to re-use KYC from a previous Biometric KYC or Document Verification job but the user id was not found in the system. Check the user id or remove the search_existing_user key and re-run the job

2210

No KYC data found for this user

You attempted to re-use KYC of a previous user, however the user does not have any personal information e.g. a SmartSelfieTM Registration job was performed on the user. Remove the search_existing_user key, then send the user’s full name, nationality and year of birth with a new job_id but the same user_id

2210

No name found in prior KYC

You attempted to re-use the KYC of a previous user, however the user’s Biometric KYC or Document Verification job did not return a name. This can happen in rare cases where there is a bug in the ID authority database. Remove the search_existing_user key, then send the user’s full name, nationality and year of birth with a new job_id but the same user_id

2210

No date of birth found in prior KYC

You attempted to re-use the KYC of a previous user, however the user’s Biometric KYC or Document Verification job did not return a date of birth. Remove the search_existing_user key, then send the user’s full name, nationality and year of birth with a new job_id but the same user_id

2223

User KYC data is beyond the data retention expiration date

You attempted to re-use KYC from a previous Biometric KYC or Document Verification job but the job is past its data retention period and all personal information of the user has been deleted

2401

System Error

2403

Invalid JSON

The JSON is wrongly formatted or has an invalid structure

2413

<key> is required

The required key <key> is missing in the request body. Add the key and run the request again.

2414

This feature requires you to activate ID Validation for your Smile ID account

The AML Check product is not activated for your account. You can contact support to activate the product

2420

Production is not enabled for this account. Please complete your KYC with Smile ID.

You have not completed your KYC. You can read about our KYC requirement here.

Result Codes and Result Texts

AML check jobs that are processed successfully can have the following result codes

Code

Text

Description

1030

Listed

The search parameters matched at least one person in our system

1031

Not found on list

The search parameters did not match any persons in our system

1017

Not found on list - warning

The search parameters matched at least one person in our system but only returns news media

1023

No match found

Refine your query by adding strict_match or birth_year

1015

Database Unavailable

The AML Check database is currently unavailable

Last updated