Version History:
Version | Description | Author | Date (dd/mm/yyyy) |
1.0.0 | DRAP eKYC Journey [EFR] Document | Ajai Antony | 07/06/2024 |
1.0.1 | Update on various model description and sequence diagram | Ajai Antony | 28/08/2024 |
1.0.2 | New error code (45004) included under Confirm Identity (API 5) | Ajai Antony | 29/08/2024 |
1.0.3 | Included AML CallBack API | Ajai Antony | 15/10/2024 |
CLASSIFICATION: PUBLIC
These APIs are used to onboard a customer via e-KYC by authorized entities associated with Lulu.
...
EFR WEB SDK and EFR WEB SDK integration sample project:
https://drive.google.com/file/d/14vquYOenwLFjcSJ2-XmVqPxgZ3QUSTea/view?usp=sharing
Mobile SDK Model
With this model, Partner will send an EKYC request to CDP and the partner initiate the EFR SDKs. EFR SDK will take care of OCR and Face liveness.
...
EFR Development Kit - Android & IOS:
https://drive.google.com/file/d/11XvjE-sFBBlFVjuwZUIMLdBKyjJhW0em/view?usp=drive_link
APIs
Access token API (API 1)
An access token is the key to the gateway to access any other API. The API will return the access token if the user is successfully authenticated and has 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. A token that is used after its validity period will restrict access to any services, and a new token will be generated in this case.
...
Name | Data Type | Max Length | Description |
---|---|---|---|
token_type | String | - | Token type |
scope | String | - | Scope details |
access_token | String | 600 | Access token to access the APIs |
refresh_token | String | 600 | refresh token to refresh the Token. |
expires_in | Integer | - | Token expiry time in seconds |
refresh_expires_in | Integer | - | Refresh Token expiry time in seconds |
Request e-KYC ( API 2)
This API is used to create an e-KYC request in order to use the e-KYC, and it will check whether the requester has the authorization to use the provided e-KYC solution.
...
API | ||||||||||||
Authorization | Bearer Token | |||||||||||
Method | POST | |||||||||||
Headers | Content-Type:application/json | |||||||||||
Payload |
| |||||||||||
Success Response for
Http status Code :200 |
| |||||||||||
Success Response for
Http status Code :200 |
| |||||||||||
Bad Request Http status Code:200 |
| |||||||||||
Failure Response e-KYC not Configured Http status Code :200 |
| |||||||||||
Failure Response Invalid e-KYC Provider Http status Code :200 |
| |||||||||||
Failure Response Invalid e-KYC Model for e-KYC Provide Http status Code :200 |
| |||||||||||
Authentication Failure Http status Code :401 |
| |||||||||||
Partner (e-KYC Provider)Service Failure Http status Code :200 |
|
...
Name | Data Type | Max Length | Description | ||||
---|---|---|---|---|---|---|---|
status | String | 255 | status description | ||||
status_code | Int | - | Status code | ||||
message | String | 255 | Message | ||||
data | Object | - | Data object | ||||
ekyc_request_id | String | 50 | e-KYC Request unique identification number | ||||
ekyc_request_data | Object | - | Data object | ||||
ekyc_portal_html | String | 4000 | Base64 encrypted e-KYC Portal HTML content only for the
| ||||
ekyc_sdk_configuration | String | 4000 | e-KYC SDK Configuration Data only for the
| ||||
ekyc_sdk_secretKey | Object | e-KYC SDK Secret Key data is only for the
|
OCR Analyze ( API 3)
OCR Detection API accepts the ID Document front and back and provides the contents of the ID Document.
API | https://{{baseUrl}}/ekyc/api/v1/efr/ocrDetection | |||||
Authorization | none | |||||
Method | POST | |||||
Headers | Content-Type:application/json | |||||
Payload |
| |||||
Success Response Http status Code :200 |
| |||||
Authentication Failure Http status Code :401 |
| |||||
Bad Request Http status Code :200 |
| |||||
e-KYC Request Id not found (Not found) Http status Code :200 |
| |||||
e-KYC Provider Mismatch (Bad Request) Http status Code :200 |
| |||||
e-KYC Request Expired (Internal Server Error) Http status Code :200 |
| |||||
e-KYC Request already Failed (Internal Server Error) Http status Code :200 |
| |||||
e-KYC Request already Rejected (Internal Server Error) Http status Code :200 |
| |||||
e-KYC Request already Completed (Internal Server Error) Http status Code :200 |
| |||||
Partner (e-KYC Provider)Service Failure Http status Code :200 |
|
...
Name | Data Type | Max Length | Description |
---|---|---|---|
status | String | 255 | status description |
status_code | Integer | - | Status code |
message | String | 255 | Message |
data | Object | - | Data object |
success | Boolean | OCR Detection status | |
transactionId | String | Unique OCR Detection ID | |
identityCard | Object | 255 | ID Card Details |
frontCardScan | String | 4000 | ID Document Front base 64 data |
backCardScan | String | 4000 | ID Document Back base 64 data |
mrz | Object | - | MRZ line Details in the ID Document |
line1 | String | 255 | MRZ Line 1 |
line2 | String | 255 | MRZ Line 2 |
line3 | String | 255 | MRZ Line 3 |
details | Object | ID Card Document Details | |
docCode | String | 255 | ID Document Unique Identification |
docIssuingAuthority | String | 255 | ID Document Issuing Authority |
docNumber | String | 255 | ID Document Number |
docExpiryDate | String | 255 | ID Document Expiry Date |
docExpiryDateShort | String | 255 | ID Document Expiry Date short |
primaryIdentifier | String | 255 | ID Document Primary Identifier |
secondaryIdentifiers | String | 255 | ID Document Secondary Identifier |
dateOfBirth | String | 255 | ID Document Date of Birth |
gender | String | 255 | Gender |
nationality | String | 255 | Nationality |
registrantNumber | Stringeger | 255 | ID Document Registration Number |
documentIdentifiers | Object | Document Identifier | |
docCode | String | 255 | Document Identification Code |
dosccIssuingAuhortys | Boolean | IDDocmnIssgAthoityOCR Detection status | |
dotNmbanacionIr | SringString | ID ocumenNumrUnique OCR Detection ID | |
idexinyDiteyCard | Object | 255 | IDDocumentxpiDID Card Details |
frontCardScan | String | 4000 | ID Document Front base 64 data |
backCardScan | String | 4000 | ID Document Back base 64 data |
mrz | Object | - | MRZ line Details in the ID Document |
line1 | String | 255 | MRZ Line 1 |
line2 | String | 255 | MRZ Line 2 |
line3 | String | 255 | MRZ Line 3 |
details | Object | ID Card Document Details | |
docCode | String | 255 | ID Document Unique Identification |
docIssuingAuthority | String | 255 | ID Document Issuing Authority |
docNumber | String | 255 | ID Document Number |
docExpiryDate | String | 255 | ID Document Expiry Date |
docExpiryDateShort | String | 255 | ID Document Expiry Date short |
primaryIdentifier | String | 255 | ID Document Primary Identifier |
secondaryIdentifiers | String | 255 | ID Document Secondary Identifier |
dateOfBirth | String | 255 | ID Document Date of Birth |
gender | String | 255 | Gender |
nationality | String | 255 | Nationality |
registrantNumber | String | 255 | ID Document Registration Number |
documentIdentifiers | Object | Document Identifier | |
docCode | String | 255 | Document Identification Code |
docIssuingAuthority | String | 255 | ID Document Issuing Authority |
docNumber | String | 255 | ID Document Number |
expiryDate | String | 255 | ID Document Expiry Date |
Face Liveness (API 4)
Face Liveness API is used to check the face liveness of the customer.
API | https://{{baseUrl}}/ekyc/api/v1/efr/faceLiveness | |||||
Authorization | None | |||||
Method | POST | |||||
Headers | Content-Type:application/json | |||||
Payload |
| |||||
Success Response Http status Code :200 |
| |||||
Authentication Failure Http status Code :401 |
| |||||
Bad Request Http status Code :200 |
| |||||
e-KYC Request Id not found (Not found) Http status Code :200 |
| |||||
e-KYC Provider Mismatch (Bad Request) Http status Code :200 |
| |||||
e-KYC Request Expired (Internal Server Error) Http status Code :200 |
| |||||
e-KYC Request already Failed (Internal Server Error) |
| |||||
e-KYC Request already Rejected (Internal Server Error) Http status Code :200 |
| |||||
e-KYC Request already Completed (Internal Server Error) Http status Code :200 |
| |||||
Partner (e-KYC Provider)Service Failure Http status Code :200 |
|
...
Name | Data Type | Max Length | Description |
---|---|---|---|
status | String | 255 | status description |
status_code | Int | - | Status code |
message | String | 255 | Message |
data | Object | - | Data object |
data | String | 4000 | Encrypted face data response |
Confirm Identity (API 5)
The customer's identity is verified using the confirm identity API. The ID document will be validated, and the captured face will be compared to the ID document face.
...
API | ||||||
Authorization | None | |||||
Method | POST | |||||
Headers | Content-Type:application/json | |||||
Payload |
| |||||
Success Response if there is no other pending task (ex:- additional information) Customer Onboarded to CDP Http status Code :200 |
| |||||
Success Response if there is pending Task - Customer not onboarded to CDP Http status Code :200 |
| |||||
Success Response for Identity Mismatch if there is pending Task - Customer not onboarded to CDP Http status Code :200 |
| |||||
Authentication Failure Http status Code :401 |
| |||||
e-KYC Request Id not found (Not found) Http status Code :200 |
| |||||
e-KYC Provider Mismatch (Bad Request) Http status Code :200 |
| |||||
e-KYC Request Expired (Internal Server Error) Http status Code :200 |
| |||||
e-KYC Request already Failed (Internal Server Error) Http status Code :200 |
| |||||
e-KYC Request already Rejected (Internal Server Error) Http status Code :200 |
| |||||
e-KYC Request already Completed (Internal Server Error) Http status Code :200 |
| |||||
Partner (e-KYC Provider)Service Failure Http status Code :200 |
| |||||
Validation Failure Response - Customer Under Compliance Investigation HttpStatusCode : 200 |
| |||||
Validation Failure Response - Blocked Customer HttpStatusCode : 200 |
| |||||
Customer Onboarding Failed HttpStatusCode : 200 |
| |||||
Customer not Residing in the country HttpStatusCode : 200 |
| |||||
CDP Service is Down Http status Code :200 |
|
...
Name | Data Type | Max Length | Description | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
status | String | 255 | status description | ||||||||||||||||||||||||||||||
status_code | Int | - | Status code | ||||||||||||||||||||||||||||||
message | String | 255 | Message | ||||||||||||||||||||||||||||||
data | Object | - | Data object | ||||||||||||||||||||||||||||||
confirmation_status | Boolean | - | e-KYC Confirmation Status | ||||||||||||||||||||||||||||||
ecrn (conditional) | String | 20 | CDP Customer Unique Identification Number will be present if customer is onboarded to CDP | ||||||||||||||||||||||||||||||
aml_scan_status (conditional) | 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 (conditional) | String | 20 | Customer Status will be present if customer is onboarded to CDP
| ||||||||||||||||||||||||||||||
rejection_message (conditional) | String | 500 | rejection message will be there if the confirmation status is false |
Provide Additional Information (API 6)
This API is used to provide the customer additional information in order to complete e-KYC, and the customer will be onboarded to CDP if there are no other pending tasks.
API | https://{{baseUrl}}/ekyc/api/v1/additionalInformation/{{ekycRequestId}} | |||||
Authorization | Bearer Token | |||||
Method | POST | |||||
Headers | Content-Type:application/json | |||||
Payload |
| |||||
Success Response Http status Code :200 |
| |||||
Authentication Failure Http status Code :401 |
| |||||
Bad Request Http status Code :200 |
| |||||
e-KYC Request Id not found (Not found) Http status Code :200 |
| |||||
e-KYC Request Expired (Internal Server Error) Http status Code :200 |
| |||||
e-KYC Request already Failed (Internal Server Error) Http status Code :200 |
| |||||
e-KYC Request already Rejected (Internal Server Error) Http status Code :200 |
| |||||
e-KYC Request already Completed (Internal Server Error) Http status Code :200 |
| |||||
Validation Failure Response - Customer Under Compliance Investigation HttpStatusCode : 200 |
| |||||
Validation Failure Response - Blocked Customer HttpStatusCode : 200 |
| |||||
Customer onboarding failed HttpStatusCode : 200 |
| |||||
CDP Service is Down Http status Code :200 |
|
...
Name | Data Type | Max Length | Description | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
status | String | 255 | status description | ||||||||||||||||||||||||||||||
status_code | Int | - | Status code | ||||||||||||||||||||||||||||||
data | Object | - | Data object | ||||||||||||||||||||||||||||||
ecrn (conditional) | String | 20 | CDP Customer Unique Identification Number if customer is onboarded to CDP | ||||||||||||||||||||||||||||||
aml_scan_status (conditional) | String | 20 | AML Scanned Status if customer is onboarded to CDP “Accepted” / “Rejected“ / “Under Investigation”/ “Failed” / “N/A” (not available when screening not done) | ||||||||||||||||||||||||||||||
customer_status (conditional) | String | 20 | Customer Status if customer is onboarded to CDP
|
Get Customer Profile (API 7)
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 Http status Code :200 |
| |||||
Customer not found Failure Response Http status Code :200 |
| |||||
Customer Not Subscribed Failure Response Http status Code :200 |
| |||||
Authentication Failure Response Http status Code :401 |
|
...
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 | 30 | First Name |
middle_name | String | 30 | Middle Name |
last_name | String | 30 | Last Name |
preferred_name | String | 30 | 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 | 30 | Primary Mobile Number |
secondary_mobile_number | String | 30 | Secondary Mobile Number |
email_id | String | 30 | Email Id |
phone_number | String | 30 | 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 | 30 | Building Name |
street_name | String | 30 | Street Name |
landmark | String | 30 | Landmark |
country | String | 2 | Country |
state | String | 30 | State |
district | String | 30 | District |
city | String | 30 | City |
zip | Long |
| Zip |
mobile_number | String | 30 | 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 | 30 | Employer Phone |
employer_ecrn | String | 30 | 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 |
Call Back API for Web Model
For Web Model, partner will provide a callback API with the below structure for updating the response based on the eKYC status.
...
Name | Data Type | Max Length | Description | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
confirmation_status | Boolean | - | e-KYC Confirmation Status | ||||||||||||||||||||||||||||||
ecrn (conditional) | String | 20 | CDP Customer Unique Identification Number will be present if customer is onboarded to CDP | ||||||||||||||||||||||||||||||
aml_scan_status (conditional) | 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 (conditional) | String | 20 | Customer Status will be present if customer is onboarded to CDP
| ||||||||||||||||||||||||||||||
rejection_message (conditional) | String | 500 | rejection message will be there if the confirmation status is false |
Aml CallBack API
We will be calling partner API to update the customer status and AML status.
Payload
Code Block |
---|
{
"aml_scan_status": "Accepted",
"ecrn": "1058021235161541",
"customer_status": "ACTIVE"
} |
Name | Data Type | Max Length | Description |
---|
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
|
EFR integration documents:
https://drive.google.com/drive/folders/1GvjUA6rQHHI5yLT5m1c2F_BbHp-lh3Hj?usp=drive_link
Master Data
Anchor | ||||
---|---|---|---|---|
|
...