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 |
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 |
---|---|---|---|---|
Content-Type | String | 36 | MANDATORY | Content type |
Payload
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 |
---|---|---|---|---|
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 | |
Authorization | Bearer Token |
Method | POST |
Headers | Content-Type:application/json |
Payload | |
Success Response
HttpStatusCode : 200 | |
Customer Not Found HttpStatusCode : 200 | |
Subscription Pending Response HttpStatusCode : 200 | |
Bad Request HttpStatusCode : 200 | |
Internal Server Error HttpStatusCode : 200 | |
Validation Failure Response - Customer Under Compliance Investigation HttpStatusCode : 200 | |
Validation Failure Response - Blocked Customer HttpStatusCode : 200 | |
Authentication Failure Response HttpStatusCode : 401 |
Header
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 |
---|---|---|---|---|
idType | String | 3 | MANDATORY | Customer id type code |
idNumber | String | 30 | MANDATORY | Customer id Number |
Response
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 | |
Success Response
HttpStatusCode : 200 | |
Validation Failure Response - Customer Under Compliance Investigation HttpStatusCode : 406 | |
Validation Failure Response - Blocked Customer HttpStatusCode : 406 | |
Validation Failure Response - Invalid Master Data HttpStatusCode : 400 | |
Validation Failure Response - Mandatory Field Missing HttpStatusCode : 400 | |
Customer Updation Failure Responce | |
Authentication Failure Response HttpStatusCode : 401 | |
Internal Server Error
HttpStatusCode : 502 |
Header
Name | Data Type | Max Length | Mandatory | Description |
---|---|---|---|---|
Content-Type | String |
| MANDATORY | Content Type |
Authorization | String |
| MANDATORY | Authorization Token |
Payload
Name | Data Type | Max Length | Mandatory | Description |
---|---|---|---|---|
|
|
|
|
|
channel | String | 20 | MANDATORY | Channel |
salutation* | String | 3 | CONDITIONAL | Salutation(Mr, Ms) , Salutation Id As per SALUTATION master |
first_name | String | 100 | MANDATORY | First Name |
middle_name | String | 60 | CONDITIONAL | Middle Name |
last_name | String | 60 | MANDATORY | Last Name |
preferred_name | String | 255 |
| Preferred Name |
nationality* | String | 2 | MANDATORY | Nationality code as per NATIONALITY Master |
second_nationality* | String | 2 | CONDITIONAL | Second Nationality code of Customer as per NATIONALITY Master |
native_region* | Integer |
| CONDITIONAL | Native Region code asper NATIVE_REGION Master |
date_of_birth | Date |
| MANDATORY | Date of Birth in “YYYY-MM-DD” Format |
country_of_birth* | String | 2 | MANDATORY | Country of Birth code as per COUNTRY Master |
place_of_birth | String | 40 | CONDITIONAL | Place of Birth |
resident_type_id* | Long |
| CONDITIONAL | Resident Type Id as per RESIDENT_TYPE Master |
country_of_residence* | String | 2 | MANDATORY | Resident Country code as per COUNTRY master |
gender | Male | 12 | MANDATORY | Gender |
mothers_maiden_name | String | 255 | CONDITIONAL | Mothers Name |
primary_mobile_number | String | 20 | MANDATORY | Primary Mobile Number |
secondary_mobile_number | String | 20 | CONDITIONAL | Secondary Mobile Number |
email_id | String | 255 | MANDATORY | Email Id |
phone_number | String | 20 | CONDITIONAL | Phone Number |
occupation_id | Long |
| CONDITIONAL | Occupation Id |
political_exposed_person | Boolean |
| CONDITIONAL | Political Exposed Person |
additional_docs | Object |
| CONDITIONAL | Data Object |
document_id* | String |
| CONDITIONAL | Document Id as per DOCUMENT_TYPE master |
base64_data | String |
| CONDITIONAL | Base64 Data |
content_type | String |
| CONDITIONAL | Content Type |
id_details | Object |
| MANDATORY | Data Object |
id_type | Long |
| MANDATORY | Id Type |
id_number | String | 30 | MANDATORY | Id Number |
name_as_per_id | String | 30 | CONDITIONAL | Name as per Id |
issued_country | String | 3 | CONDITIONAL | Issued Country code as per COUNTRY master |
issued_by | String | 30 | CONDITIONAL | Issued By |
issued_at | String | 30 | CONDITIONAL | Issued At |
issued_on | Date |
| CONDITIONAL | Issued On in “YYYY-MM-DD” Format |
date_of_expiry | Date |
| CONDITIONAL | Date of Expiry in “YYYY-MM-DD” Format |
visa_number | String | 30 | CONDITIONAL | Visa Number |
visa_expiry_date | Date |
| CONDITIONAL | Visa Expiry Date in “YYYY-MM-DD” Format |
default_status | String | 30 | CONDITIONAL | Default Status |
active_status | String | 30 | CONDITIONAL | Active Status |
id_front | Object |
| CONDITIONAL | Data Object |
base64_data | String |
| CONDITIONAL | Base 64 Data |
content_type | String |
| CONDITIONAL | Content Type |
id_back | Object |
| CONDITIONAL | Data Object |
base64_data | String |
| CONDITIONAL | Base 64 Data |
content_type | String |
| CONDITIONAL | Content Type |
addressList | Object |
| MANDATORY | Data Object |
address_type_id | Long |
| CONDITIONAL | Address Type Id as per ADDRESS_TYPE master |
building_name | String | 255 | CONDITIONAL | Building Name |
street_name | String | 255 | CONDITIONAL | Street Name |
landmark | String | 255 | CONDITIONAL | Landmark |
country | String | 3 | CONDITIONAL | Country |
state | String | 255 | CONDITIONAL | State |
district | String | 255 | CONDITIONAL | District |
city | String | 60 | CONDITIONAL | City |
zip | Long |
| CONDITIONAL | Zip |
mobile_number | String | 20 | CONDITIONAL | Mobile Number |
status | String | 30 | CONDITIONAL | Disable |
customer_classification | Object |
| CONDITIONAL | Data Object |
customer_type_id | Long |
| CONDITIONAL | Customer Type Id |
annual_income_range_id | Long |
| CONDITIONAL | Annual Income Range |
annual_income_currency_code | String | 30 | CONDITIONAL | Annual Income Currency Code |
social_security_number | String | 30 | CONDITIONAL | Social Security Number |
tax_registration_number | Long |
| CONDITIONAL | Tax Registration Number |
txn_issued_country | String | 2 | CONDITIONAL | Tax Issued Country |
employer_name | String | 30 | CONDITIONAL | Employer Name |
employer_address | String | 30 | CONDITIONAL | Employer Address |
employer_phone | String | 20 | CONDITIONAL | Employer Phone |
employer_ecrn | String | 16 | CONDITIONAL | Employer ECRN |
employer_establishment_id | String | 30 | CONDITIONAL | Employer Establishment ID |
risk_rating_id | Long |
| CONDITIONAL | Risk Rating ID |
compliance_category_id | Long |
| CONDITIONAL | Compliance Category ID |
last_review_date | Date |
| CONDITIONAL | Last review Date |
next_review_date | Date |
| CONDITIONAL | Next Review Date |
pep_category | Integer |
| CONDITIONAL | Pep Category |
personal_mohre_id | String | 30 | CONDITIONAL | Personal Mohre Id |
customer_cards | String | 30 | CONDITIONAL | Customer Cards |
card_number | String | 30 | CONDITIONAL | Card Number |
income_type | String | 30 | CONDITIONAL | Income Type |
profession_category | String | 30 | CONDITIONAL | Profession Category |
reason_for_acc | String | 30 | CONDITIONAL | Reason for ACC |
txn_vol_month | String | 30 | CONDITIONAL | Transaction Volume Month |
txn_count_month | String | 30 | CONDITIONAL | Transaction Count Month |
show_remarks_on_txn | Boolean |
| CONDITIONAL | show Remarks on transaction |
customer_remarks | String | 30 | CONDITIONAL | Remarks on Transaction |
agent_ref_no | String | 30 | CONDITIONAL | Agent reference number |
social_links | Object |
| CONDITIONAL | Data Object |
social_links_id | Long |
| CONDITIONAL | Social Link Id |
text_field | String | 30 | CONDITIONAL | Text Field |
status | String | 30 | CONDITIONAL | Status |
first_language | String | 3 | CONDITIONAL | Customer Preferred Language |
marital_status | Integer |
| CONDITIONAL | Marital Status |
profile_category | Integer |
| CONDITIONAL | Profile Category |
dnfbp | Boolean |
| CONDITIONAL | Designated Non-Financial Business and Professions |
dpms | Boolean |
| CONDITIONAL | Dealers in Precious Metals and Stones |
Response
Name | Data Type | Max Length | Description |
---|---|---|---|
status | String | 255 | status description |
status_code | Int | - | Status code |
data | Object | - | Data object |
ecrn | String | 20 | Customer Number |
aml_scan_status | String | 20 | AML Scanned Status “Accepted”/”Under investigation”/”Failed”/”NA” |
customer_status | String | 20 | Customer Status |
Get Customer API v2
API to be used to get the customer information by customer number.
API | |
Authorization | Bearer Token |
Method | GET |
Headers | Content-Type: application/json |
Payload | |
Success Response HttpStatusCode: 200 | |
Authentication Failure Response HttpStatusCode: 401 | |
Customer Not Subscribed Failure Response HttpStatusCode: 200 | |
Customer not found Failure Response HttpStatusCode: 200 |
Header
Name | Data Type | Max Length | Mandatory | Description |
---|---|---|---|---|
Content-Type | String | 36 | MANDATORY | Content type |
Ocp-Apim-Subscription-Key | String | 32 | MANDATORY | Subscription key |
Parameter
Name | Data Type | Max Length | Mandatory | Description |
---|---|---|---|---|
ecrn | String | 16 | MANDATORY | Customer unique identification number |
Response
Name | Data Type | Max Length | Description |
---|---|---|---|
agent_location_id | String | 30 | Agent Location Id |
channel | String | 30 | Channel |
salutation | String | 3 | Salutation(Mr, Ms) |
first_name | String | 100 | First Name |
middle_name | String | 60 | Middle Name |
last_name | String | 60 | Last Name |
preferred_name | String | 255 | Preferred Name |
nationality | String | 2 | Nationality |
second_nationality | String | 2 | Second Nationality of Customer |
native_region | Integer |
| Native Region |
date_of_birth | Date |
| Date of Birth |
country_of_birth | String | 2 | Country of Birth |
place_of_birth | String | 100 | Place of Birth |
resident_type_id | Long |
| Resident Type Id |
country_of_residence | String | 2 | Country of Residence |
gender | Male | 12 | Gender |
mothers_maiden_name | String | 30 | Mothers Name |
primary_mobile_number | String | 20 | Primary Mobile Number |
secondary_mobile_number | String | 20 | Secondary Mobile Number |
email_id | String | 30 | Email Id |
phone_number | String | 20 | Phone Number |
occupation_id | Long |
| Occupation Id |
political_exposed_person | Boolean |
| Political Exposed Person |
additional_docs | Object |
| Data Object |
idNameId | String |
| Id name id |
base64_data | String |
|
|
content_type | String |
| Content Type |
id_details | Object |
| Data Object |
id_type | Long |
| Id Type |
id_number | String | 30 | Id Number |
name_as_per_id | String | 30 | Name as per Id |
issued_country | String | 2 | Issued Country |
issued_by | String | 30 | Issued By |
issued_at | String | 30 | Issued At |
issued_on | Date |
| Issued On |
date_of_expiry | Date |
| Date of Expiry |
visa_number | String | 30 | Visa Number |
visa_expiry_date | Date |
| Visa Expiry Date |
default_status | String | 30 | Default Status |
active_status | String | 30 | Active Status |
id_front | Object |
| Data Object |
base64_data | String |
| Base 64 Data |
content_type | String |
| Content Type |
id_back | Object |
| Data Object |
base64_data | String |
| Base 64 Data |
content_type | String |
| Content Type |
addressList | Object |
| Data Object |
address_type_id | Long |
| Address Type Id |
building_name | String | 255 | Building Name |
street_name | String | 255 | Street Name |
landmark | String | 255 | Landmark |
country | String | 2 | Country |
state | String | 255 | State |
district | String | 255 | District |
city | String | 60 | City |
zip | Long |
| Zip |
mobile_number | String | 20 | Mobile Number |
status | String | 30 | Disable |
customer_classification | Object |
| Data Object |
customer_type_id | Long |
| Customer Type Id |
annual_income_range_id | Long |
| Annual Income Range |
annual_income_currency_code | String | 30 | Annual Income Currency Code |
social_security_number | String | 30 | Social Security Number |
tax_registration_number | Long |
| Tax Registration Number |
txn_issued_country | String | 2 | Tax Issued Country |
employer_name | String | 30 | Employer Name |
employer_address | String | 30 | Employer Address |
employer_phone | String | 20 | Employer Phone |
employer_ecrn | String | 16 | Employer ECRN |
employer_establishment_id | String | 30 | Employer Establishment ID |
risk_rating_id | Long |
| Risk Rating ID |
compliance_category_id | Long |
| Compliance Category ID |
last_review_date | Date |
| Last review Date |
next_review_date | Date |
| Next Review Date |
pep_category | Integer |
| Pep Category |
group_companies | Integer |
| Group Company |
group_employer_code | String | 30 | Group Employee Code |
personal_mohre_id | String | 30 | Personal Mohre Id |
customer_cards | String | 30 | Customer Cards |
card_number | String | 30 | Card Number |
income_type | String | 30 | Income Type |
profession_category | String | 30 | Profession Category |
reason_for_acc | String | 30 | Reason for ACC |
referred_by_type | Integer |
| Referred By Type |
referred_by | String | 30 | Reffered By |
txn_vol_month | String | 30 | Transaction Volume Month |
txn_count_month | String | 30 | Transaction Count Month |
show_remarks_on_txn | Boolean |
| show Remarks on transaction |
customer_remarks | String | 30 | Remarks on Transaction |
agent_ref_no | String | 30 | Agent reference number |
ekyc_provider | String | 30 | ekyc provider |
ekyc_ref_no | String | 30 | ekyc ref number |
social_links | Object |
| Data Object |
social_links_id | Long |
| Social Link Id |
text_field | String | 30 | Text Field |
subscriptions | Object |
| Data Object |
subsciption_type | String | 30 | Subscription Type |
subscription_id | String | 30 | Subscription Id |
status | String | 30 | Status |
first_language | String | 3 | Customer Preferred Language |
marital_status | Integer |
| Marital Status |
profile_category | Integer |
| Profile Category |
dnfbp | Boolean |
| Designated Non-Financial Business and Professions |
dpms | Boolean |
| Dealers in Precious Metals and Stones |
AML Alert Closure CallBack Api
We will be calling partner API to update the customer status and AML status.
Payload
Name | Data Type | Max Length | Description |
---|---|---|---|
ecrn | String | 20 | CDP Customer Unique Identification Number will be present if customer is onboarded to CDP |
aml_scan_status | String | 20 | AML Scanned Status will be p[resent if customer is onboarded to CDP “Accepted” / “Rejected“ / “Under Investigation”/ “Failed” / “N/A” (not available when screening not done) |
customer_status | String | 20 | Customer Status will be present if customer is onboarded to CDP ACTIVE / KYC PENDING / INACTIVE / REJECTED / BLOCKED |
Master Data