Partner Onboarding Service (without eKYC flow)

Partner Onboarding Service (without eKYC flow)

 

Version History:

Version

Description

Author

Date

(dd/mm/yyyy)

 1.0.0

 DRAP Onboarding Service (without eKYC flow) Document

 Ajai Antony

07/06/2024

 1.0.1

 Customer updation failure response

Ajai Antony

14/06/2024

1.0.2

AML Alert Closure CallBack API updates

Ajai Antony

15/10/2024

1.0.3

Customer Onboarding Status details

Ajai Antony

14/10/2025

CLASSIFICATION: PUBLIC

 

 

The partner will conduct e-KYC or KYC procedures autonomously and employ the listed APIs to enroll customers onto the Customer Data Platform (CDP). They will supply essential customer details obtained from a trusted data source (such as an e-KYC provider or government database), additional information based on country requirements, along with customer documents, including front and back images of the customer's ID, a facial image, and any e-KYC verification or confirmation reports if applicable using the customer onboard API.

Access Token API

An access token is a key to the gateway to access any other API. The API will return the access token if the user is successfully authenticated and have the authorization to access these services. Every access token is tagged with validity and the expiry duration is echoed in the response for the calling application to manage the state accordingly. Token if used after its validity period restrict access to any services and a new token to be generated in this case.

API

https://{{baseUrl}}/auth/realms/cdp/protocol/openid-connect/token

Method

POST

Headers

Content-Type : application/x-www-form-urlencoded

Access Token Payload

--data-urlencode 'grant_type=password' \ --data-urlencode 'scope=api://3a3f52a1-1b64-4c27-81f0-50a6ca01324d/customer' \ --data-urlencode 'client_id=<<client_id>>' \ --data-urlencode 'client_secret=<<secret>>' \ --data-urlencode 'grant_type=password' \ --data-urlencode 'username=<<username>>' \ --data-urlencode 'password=<<password>>'

Refresh Token Payload

--data-urlencode 'grant_type=password' \ --data-urlencode 'client_id=<<client_id>>' \ --data-urlencode 'client_secret=<<secret>>' \ --data-urlencode 'grant_type=refresh_token' \ --data-urlencode 'refresh_token=<<refreshToken>>' \

Response

{ "token_type": "bearer", "access_token": "<<access_token_value>>", "expires_in": 7199, "refresh_expires_in": 7199, "refresh_token": "<<refresh_token_value>>", "scope": "----", "not-before-policy": 0, "session_state": "<<session_state>>" }

Header

Name

Data Type

Max Length

Mandatory

Description

Name

Data Type

Max Length

Mandatory

Description

Content-Type

String

36

MANDATORY

Content type

 

Payload

Name

Data Type

Max Length

Mandatory

Description

Name

Data Type

Max Length

Mandatory

Description

grant_type

String

10

MANDATORY

Grant type. Will up provided

scope

String

60

MANDATORY

Scope name. Will be provided

client_id

String

60

MANDATORY

Client Id. Will be provided

client_secret

String

60

MANDATORY

Client secret. Will be provided

username

String

60

MANDATORY

Admin user name

password

String

60

MANDATORY

Admin password

 

Response

Name

Data Type

Max Length

Mandatory

Description

Name

Data Type

Max Length

Mandatory

Description

token_type

String

-

MANDATORY

Token type

scope

String

-

MANDATORY

Scope details

access_token

String

600

MANDATORY

Access token to access the APIs

refresh_token

String

600

MANDATORY

refresh token to refresh the Token.

expires_in

Integer

-

MANDATORY

Token expiry time in seconds

refresh_expires_in

Integer

-

MANDATORY

Refresh Token expiry time in seconds

 

Customer Lookup API v2

 

API to be used to look up customer information by ID type and ID number.

API

https://{{baseUrl}}/caas/api/v2/customer/validate

Authorization

 Bearer Token

Method

POST

Headers

Content-Type:application/json

Payload

{ "idNumber": "784199554586091", "idType": "4" }

Success Response

 

HttpStatusCode : 200

{ "status": "success", "statusCode": 200, "data": { "ecrn": "7841003233051516", "first_name": "ZAFARBASHIR", "middle_name": "", "last_name": "BASHIRMASIH", "agent_location_id": "784101", "primary_mobile_number": "+971554747002", "email_id": "BASHIRMASIH@GMAIL.COM", "customer_status": "ACTIVE", "aml_scan_status": "Accepted", "id_status": "Active", "id_date_of_expiry": "2030-12-10T00:00:00.000+00:00" } }

Customer Not Found

HttpStatusCode : 200

{ "status": "failure", "statusCode": 404, "errorCode": 45001, "message": "Customer not found" }

Subscription Pending Response

HttpStatusCode : 200

{ "status": "failure", "statusCode": 404, "errorCode": 45003, "message": "Customer not Subscribed" }

Bad Request

HttpStatusCode : 200

{ "status": "failure", "statusCode": 400, "errorCode": 40001, "message": "Invalid format input" }

Internal Server Error

HttpStatusCode : 200

{ "status": "failure", "statusCode": 500, "errorCode": 45006, "message": "Error while searching customer!" }

Validation Failure Response - Customer Under Compliance Investigation

HttpStatusCode : 200

{ "status": "failure", "statusCode": 500, "errorCode": 45013, "message": "Customer under Compliance investigation!" }

Validation Failure Response - Blocked Customer

HttpStatusCode : 200

{ "status": "failure", "statusCode": 404, "errorCode": 45051, "message": "Customer can not be Accepted" }

Authentication Failure Response

HttpStatusCode : 401

{ "timestamp": "2023-12-22T06:04:30.477+00:00", "status": 401, "error": "Unauthorized", "path": "/api/v2/customer/validate" }

Header

Name

Data Type

Max Length

Mandatory

Description

Name

Data Type

Max Length

Mandatory

Description

Content-Type

String

36

MANDATORY

Content type

Authorization

String

 

MANDATORY

Authorization Token

Payload

Name

Data Type

Max Length

Mandatory

Description

Name

Data Type

Max Length

Mandatory

Description

idType

String

3

MANDATORY

Customer id type code

idNumber

String

30

MANDATORY

Customer id Number

Response

Name

Data Type

Max Length

Description

Name

Data Type

Max Length

Description

status

String

255

status description

statusCode

Integer

 -

Status code

errorCode

Integer

-

Error code if any error encountered.

message

String

255

Message

data

Object

-

Data object

ecrn

String

20

Customer unique identification number

first_name

String

100

Customer first name

middle_name

String

60

Customer middle name

last_name

String

60

Customer last name

agent_location_id

String

10

Onboarded Agent

primary_mobile_number

String

20

Customer mobile no

email_id

String

255

Customer email

customer_status

String

20

Customer Status

ACTIVE / KYC_PENDING / INACTIVE / REJECTED / BLOCKED

aml_scan_status

String

20

AML Scanned Status

“Accepted” / “Rejected“ / “Under Investigation”/ “Failed

id_status

String

20

Possible values : "Active", "Expired",”Inactive”

id_date_of_expiry

String

 50

YYYY-MM-DD format

 

 

Individual Onboarding API

API to be used to onboard a customer.

API

https://{{baseUrl}}/caas-lcm/api/v1/CAAS/onBoarding/customer

Authorization

Bearer Token

Method

POST

Headers

Content-Type:application/json

Payload

{ "channel": "WEB", "first_name": "IRFAN MANAKKAT THEKKE", "salutation": "Mr", "middle_name": "PURAYIL ISMAIL", "last_name": "NANGARATH MUNDACHI", "preferred_name": "IRFAN MANAKKAT THEKKE", "nationality": "IN", "second_nationality": "GB", "native_region": 1, "date_of_birth": "1995-07-28", "country_of_birth": "IN", "place_of_birth": "INDIA", "resident_type_id": 101, "country_of_residence": "AE", "gender": "Male", "mothers_maiden_name": "SAFIYA", "primary_mobile_number": "+971502106707", "secondary_mobile_number": "+971502412378", "email_id": "irfanmtp1@gmail.com", "phone_number": "+971502106707", "occupation_id": 2856, "political_exposed_person": false, "updated_by": "784irfan", "additional_docs": [ { "base64_data": "<<base64Data>>", "content_type": "image/jpeg", "document_id": "1" }, { "base64_data": "<<base64Data>>", "content_type": "image/jpeg", "document_id": "2" } ], "address_list": [ { "address_type_id": "1", "building_name": "MANKHOOL BUILDING", "street_name": "Electra Street", "landmark": "HOT Bread", "city": "Electra Street", "district": "Abu Dhabi", "state": "Abu Dhabi", "country": "AE", "zip": 0, "po_box": null, "mobile_number": "+971502106707" }, { "address_type_id": "2", "building_name": "ABC House", "street_name": "Kaikottukadavu", "landmark": "ABC School", "city": "Thrikkaripur", "district": "Kasaragod", "state": "kerala", "country": "IN", "zip": 13345, "mobile_number": "+971502106707" } ], "id_details": [ { "id_type": 4, "id_number": "784199554586091", "name_as_per_id": "Irfan Manakkat Thekke Purayil", "issued_country": "AE", "issued_by": "EIDA", "issued_at": "AE Govt.", "issued_on": "2020-08-08", "date_of_expiry": "2023-08-08", "default_status": true, "active_status": true, "id_front": { "base64_data": "<<base64Data>>", "content_type": "image/jpeg" }, "id_back": { "base64_data": "<<base64Data>>", "content_type": "image/jpeg" } }, { "id_type": 2, "id_number": "P4006315", "visa_number": "VISA123", "visa_expiry_date": "2024-06-30", "name_as_per_id": "IRFAN M T P", "issued_country": "IN", "issued_by": "India Govt.", "issued_at": "Kozhikkode", "issued_on": "2016-04-28", "date_of_expiry": "2026-04-27", "default_status": true, "active_status": true, "id_front": { "base64_data": "<<base64Data>>", "content_type": "image/jpeg" }, "id_back": { "base64_data": "<<base64Data>>", "content_type": "image/jpeg" } } ], "customer_classification": { "customer_type_id": 2, "annual_income_range_id": 15, "annual_income_currency_code": "AED", "social_security_number": "SSN123", "tax_registration_number": 123, "txn_issued_country": "AE", "employer_name": "EMKE", "employer_address": "UAE", "employer_phone": "+971502106101", "employer_ecrn": "", "employer_establishment_id": "LULUEXCHANGE123", "risk_rating_id": 3, "pep_category": 1, "personal_mohre_id": "IRFAN786", "income_type": 1, "profession_category": "PC1", "reason_for_acc": "Remittance", "txn_vol_month": 1, "txn_count_month": 1, "show_remarks_on_txn": false, "customer_remarks": "Test Remarks", "agent_ref_no": "786000786", "social_links": [ { "social_links_id": 2, "text_field": "insta.com" }, { "social_links_id": 1, "text_field": "fb.com" } ], "first_language": "en", "marital_status": 2, "dnfbp": false, "dpms": false, "profile_category": 1, "profile_photo": { "base64_data": "<<bas64data>>", "content_type": "image/jpeg" } } }

Success Response

 

HttpStatusCode : 200

{ "status": "success", "data": { "aml_scan_status": "Accepted", "ecrn": "7841003247752409", "customer_status": "ACTIVE", "pep": false, "aml_category": 2 }, "status_code": 200, "request_id": "4138e3038999d41b7534ce12a18a6031" }

Validation Failure Response - Customer Under Compliance Investigation

HttpStatusCode : 406

{ "request_id": "9dff05c2a18e6e73964c0c91f75f463b", "status": "failed", "status_code": 406, "error_code": 45013, "message": "Customer 7841003236577331 Under Compliance Investigation" }

Validation Failure Response - Blocked Customer

HttpStatusCode : 406

{ "request_id": "d0f7edcbb91abefa58f3fc9672711e1b", "status": "failed", "status_code": 406, "error_code": 45051, "message": "Customer 1074023185717024 Cannot be Accepted" }

Validation Failure Response - Invalid Master Data

HttpStatusCode : 400

{ "request_id": "cb3bc0a37334c4eacdbea088f926b7ab", "status": "failed", "status_code": 406, "error_code": 45053, "message": " Invalid Nationality INN!" }

Validation Failure Response - Mandatory Field Missing

HttpStatusCode : 400

{ "status": "failure", "status_code": 400, "error_code": 40002, "message": "Invalid format or missing mandatory request", "details": { "firstName": "Invalid first name" }, "request_id": "729d5085e553f3830277d0cb5372f2b2" }

Customer Updation Failure Responce

{ "request_id": "6212f1084eb59c5d88b34078c8330a0c", "status": "failed", "status_code": 404, "error_code": 45032, "message": "Customer update failed" }

Authentication Failure Response

HttpStatusCode : 401

{ "timestamp": "2023-03-15T14:26:24.292+00:00", "status": 401, "error": "Unauthorized", "message": "", "path": "/api/v1/CAAS/onBoarding/customer" }

Internal Server Error

 

HttpStatusCode : 502

{ "status": "failed", "message": "Backend Technical Problem", "status_code": 502, "error_code": 40001, "request_id": "a700be42dcbb3c71f36c1bcea42f41fa" }

Header

Name

Data Type

Max Length

Mandatory

Description

Name

Data Type

Max Length

Mandatory

Description

Content-Type

String