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 |
source_sdk_version | string | No | The version of the integration option you are using. Send value as |
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 |
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 |
full_name | string | Yes | The full name of the customer |
birth_year* | string | No | The customer’s year of birth, in the format |
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 |
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
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 |
or
|
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. |
|
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 |
|
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 |
|
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 |
or
or
|
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 |
or
|
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
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 |
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 |
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 |
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