User KYC process

About KYC verification

Know Your Customer (KYC) is the mandatory process of identifying and verifying the customer's identity before allowing them to have an account and perform transactions. KYC standards are designed to protect financial institutions against fraud, corruption etc. KYC process helps to establish customer identity and understand the nature of customers’ activities by performing KYC risk intelligence screening in order to qualify that the source of funds is legitimate.

KYC policies for individual user

nCore platform offers KYC process on two types of individual users given below:

S No.

User Type

Policy name

Prerequisite

1

Parent user

UAE_INDIVIDUAL_PRIMARY

KYC processing must be enabled at tenant level

2

Child user

UAE_INDIVIDUAL_SECONDARY

KYC processing must be enabled at tenant level and

Parent user must be KYC verified

Please contact the NymCard representative at contact@nymcard.com to enable KYC processing.

Restrictions on user status

Following are the KYC restrictions based on user status.

When the user status is “PENDINGKYC”, “SUSPENDED” or “TERMINATED”, then operations like creating an account, creating a card and linking a card are not allowed. These operations are enabled for the user only when the user status is marked as “ACTIVE”. In addition to that, when the user status is “PENDINGKYC”, then the user can create a child user.

Note, that if KYC settings=true at the tenant level, the following parameters can not be updated for user with ACTIVE status:

How to simulate user KYC process

nCore sandbox environment provides a feature to simulate the KYC processing of user(s) and update appropriate user statuses based on the KYC result.

Once you create a request to perform a user KYC successfully by sending a POST request to /users/{id}/kyc endpoint, the platform starts a service which runs internally and performs the checks based on the policy you linked in the request. You can create more than one request. The internal service will pick all submitted KYC requests, process them and update the user and KYC statuses and give you a glance of the frictionless KYC processing which nCore platform provides in sandbox as well as in production environments. After a successful KYC processing you can create resources for the KYC verified users in a sandbox environment.

KYC Use cases

In the following ways you can simulate different KYC processing use cases.

Before creating a user, please make sure that the KYC service picks only those KYC requests when

  • The ‘require_kyc’ parameter is set as “true” at tenant level and

  • The user status is set as “PENDINGKYC” and

  • The KYC status is “SUBMITTED”

Positive use case:

To simulate a positive KYC processing case, please create a user with ‘last_name’ as “pass” as given below.

POST /users

{

"first_name": "John", "last_name": "pass"

}

Now create a ‘perform KYC’ request as given below.

POST /users/{id}/kyc

{

"kyc_policy": "UAE_INDIVIDUAL_PRIMARY"

}

Note: the KYC service will process the request and return a response as “OK”.

Negative use case:

To simulate a negative KYC processing case, please create a user with a last_name as “fail” as given below.

POST /users

{

"first_name": "John", "last_name": "fail"

}

Now create a ‘perform KYC’ request as given below.

POST /users/{id}/kyc

{

"kyc_policy": "UAE_INDIVIDUAL_PRIMARY"

}

Note: the KYC service will process the request and return a response as “FAILED”.

KYC webhooks

Once the API user submits the KYC request a webhook ‘KYC_RESULT’ is triggered and the notification is sent to the configured endpoint to notify the client.

You can create a corresponding webhook as shown in the below example.

POST /webhooks

{ "endpoint": "https://example.com/", "events": [ "KYC_RESULT" ], "config": { "basic_auth_username": "username", "basic_auth_password": "password", "custom_headers": [ { "header_name": "apikey", "header_value": "306e38e4-54be-469f-beca-4297129289d6" } ], "created": "2021-05-27T18:48:00.074Z", "modified": "2021-05-27T18:48:00.074Z" } }

Also when the user's status is changing internally based on the KYC processing, the webhook status is kept notifying the client.

You can create a corresponding webhook as shown in the below example.

POST /webhooks

{ "endpoint": "https://example.com/", "events": [ "USER_STATUS_CHANGE" ], "config": { "basic_auth_username": "username", "basic_auth_password": "password", "custom_headers": [ { "header_name": "apikey", "header_value": "306e38e4-54be-469f-beca-4297129289d6" } ], "created": "2021-05-27T18:48:00.074Z", "modified": "2021-05-27T18:48:00.074Z" } }

For further details, please refer to the Webhooks section.

KYC management

You can perform and manage KYC verification by using our APIs. Following are the APIs available at nCore platform for KYC management.

  • Perform KYC

  • Get KYC by ID

  • Search for KYC requests

Perform KYC of user

You can perform KYC on a user by sending a POST request to /users/{id}/kyc endpoint; where id is the user’s id to whom the KYC is requested. An example is given below.

POST /users/{id}/kyc

{ "kyc_policy": "UAE_INDIVIDUAL_PRIMARY" }

Get KYC by ID

You can retrieve a specific KYC by sending a GET request to /users/kyc/{id} endpoint, where id is the KYC request ID.

GET /users/kyc/{id}

Search for KYC requests

You can search for KYC requests by sending a POST request to /users/kyc:search endpoint along with the filter as shown below.

POST /users/kyc:search

{ "query": "Transfer", "sort_by": "By name", "order_by": "asc", "matcher": [ "and" ], "filters": [ { "field": "ID", "operator": "any_of", "values": [ "21" ] } ], "cursors": { "after": "John Smith", "has_more": true }, "limit": 0 }

Last updated