MULTI CHANNEL- DISTRIBUTOR API DOCUMENTATION

MULTI CHANNEL- DISTRIBUTOR API DOCUMENTATION

Introduction

The following APIs are intended to serve the purpose of creating multiple distribution channels for Signzy products.

For example, say a Mutual Fund financial institution wants to onboard investors, they can use Signzy’s Investor Onboarding product. Now say the financial institute requires to open onboardings into its systems through multiple channels, say channels A, B & C and needs to see the data pushed by the different channels into the same Backend operations system through which they themselves onboard the mutual fund investors, this can be achieved through the Multi-channel distribution system through APIs as detailed in the below API documentation.

Basic Philosophy

The basic philosophy of the distributor channel system exposed through APIs is to treat each channel to be created by a channel only (sub channels) with grants and authority of the child channel controlled by the parent channel.

Distribution channel APIs are exposed in the below two categories.

  1. APIs for Channel
  2. APIs for Onboarding

The channels create onboardings and possess one to many relationship to onboardings. Channels also relate to other channels through one belongs to one and one has many relationships. Which can be summed as below:

  1. A channel can have multiple Channels
  2. A channel belong to another Channel
  3. A channel has many onboardings
  4. An onboarding is created by(and belongs to) a channel

Basic Details

API Endpoint details

Protocol: HTTPS

Preproduction hostname: multi-channel-preproduction.signzy.tech

Production hostname: multi-channel.signzy.tech

Authentication: Token based authentication

Authentication

The authentication is done at the channel level. You can think of channel as an extension of users. It accepts general details like email, password and username and also further details which describe the grants given to a particular channel.

A channel may be created by another channel only.

Authorizing your access

Authentication is done at the channel level. A channel can be thought of an extension of the user model and authentication can be executed using a combination of username and password. The username and password are set by the channel creating another channel. A channel’s username and password can be changed anytime using an older password.

You need to have an access token for making any further API calls, which you can receive by logging in manually or programmatically using these credentials.

Signzy APIs adhere to authentication defined by Swagger 2.0 specifications. Each call to the APIs should include an ‘Authorization’ header or ‘access_token’ query parameter for authentication.

Logging into the API service requires a simple HTTP call. Following section mentions data to be input, expected output and meaning of fields.

URL: /api/channels/login

Hostname and protocol to be applied as described above.

Input data

Two parameters to be passed as JSON payload for logging in

  1. username -> String
  2. password -> String

Request:

{

    “username”: “…….”,

    “password”: “……..”

}

Expected output

Following 4 properties are expected as output from the Login API

  1. id -> String (This is the access token to be used in the below requests.)
  2. ttl -> Int (The time, number of seconds, for which the access token described above is valid for.)
  3. created -> String (ISO timestamp of creation date for this token.)
  4. userId -> String (Channel’s user ID, the user which created this token.)

{

    “id”: “…….”,

    “ttl”: 0000,

    “created”: “…….”,

    “userId”: “……..”

}

The userID returned above is important and is also referred to as the channel ID. The channel ID will further be required to make onboarding API calls.

Sending authenticated requests

Once you have an access token from the login API call, you can send further calls to different endpoints by passing the access-token in Authorization header or in access_token query (GET) parameter.

It is advisable to send Access Token in header since, query parameters are sometimes saved in the log files thereby exposing vulnerabilities until the access_token is deleted from sessions.

Security

Anybody with your API key/password or an Access Token generated using them can access all information you have created and also send requests on your behalf. It is strongly recommended to not send API-key/Password to client side and instead use reverse proxy to call Signzy APIs.

If case you think an access token is compromised, you should delete it using logout. Let us know if your Signzy Password/API-key is compromised as soon as possible, so that we can disable & create new ones and prevent any misuse of your data.

File exchange

You first need to upload the required images before sending for auto reading or forgery or any other Signzy AI APIs. Use the file upload system to upload images of ID Cards & documents to get a direct URL.

Upload

Endpoint

POST :: /api/onboardings/upload

Header

Authorization: “your access token” -> You will receive the access token from the Investor login API.

Request data

multipart-form-data with & ttl property

TTL

ttl accepts the following values:(2 mins, 10 mins, 30 mins, 2 hrs, 12 hrs, 7 days, 15 days, 1 month, 3 month, 6 month, 1 year, 3 years, infinity)

When multiple sides or pages of an ID card are required, you need to upload each of them. For example Aadhaar card has information on both sides whereas PAN has only front side containing useful information.

The urls expire in 30 seconds by default, unless explicitly specified in the inboud request in the ttl parameter.

Expected response

{

  “file”: {

    “id”: 1388,

    “filetype”: “…….”,

    “size”: 3181,

    “directURL”: “…….”,

    “protected”: false

  }

}

The upload returns with the following properties.

  1. id -> Int (The id of the file)
  2. filetype -> String (Type of file which was passed into Signzy file system API)
  3. size -> Int (Size in bytes of the uploaded file)
  4. directURL -> String (Direct URL using which the file can be accessed. This is important and required in other API calls.).

Download

Endpoint

GET :: /api/onboardings/download

Header

Authorization: “your access token” -> You will receive the access token from the Investor login API.

Request Query

NameData typeValue
qStringPersist URL(Direct URL)

Expected response.

Raw File

Channel APIs

Channel Login (For existing channel)

Endpoint

/api/channels/login

Request type

POST

Headers

Content-type: “application/json”

JSON payload

{

    “username” : “<username>”,

    “password” : “<password>”

}

Response

{

    “id”: “< access token>”,

    “ttl”: “<access token ttl in seconds>”,

    “created”: “2018-12-03T20:34:37.455Z”,

    “userId”: “< channel Id >”

}

Creating a new channel

For each distributor channel you can create a channel object by providing the required properties.

Endpoint

/api/channels/….your-channel-id…./channels

The channel-id is the userID that you get from the login call as described above.

Request type

POST

Headers

Content-type: “application/json” -> This is constant

Authorization: “your access token” -> You will receive the access token from the login API call as described above.

JSON payload

{

    “product_productId”: “………”,

    “product_customerId”: “………”,

    “product_accessToken”: “………”,

    “control_active”: true,

    “control_allowedCount”: 20,

    “control_updateProductInfo”: true,

    “control_selfUpdation”: true,

    “control_updateControls”: true,

    “control_createChildren”: true,

    “control_enableFrontendURLs”: false,

    “disableEmailFromAmc”: false,

    “username”: “………”,

    “password”: “………”,

    “email”: “………”,

    “callbackOnAction”: {

        “accepted”: “…”,

        “rejected”: “…”,

        “draft”: “…”

    },

     “pageCallbackUrl”: {

        “identity”: “…..”,

        “address”: “…..”,

        “corraddress”: “…..”,

        “bankaccount”: “…..”,

        “documents”: “…..”,

        “fatca”: “…..”,

        “signature”: “…..”,

        “photo”: “…..”,

        “video”: “…..”,

        “contract”: “…..”,

        “submit” : “…..”

    }

}

The API accepts the following properties as detailed in the table below.

PropertyData typeExample values
usernameStringusername
passwordStringpassword
emailStringemail
product_productIdStringinvestorOnbaording
product_customerIdString5219872648addff
product_accessTokenStringwhr320jrehbfdvipkqwmnh
control_activeBooleantrue/false
control_allowedCountIntegerInteger
control_updateProductInfoBooleantrue/false
control_selfUpdationBooleantrue/false
control_updateControlsBooleantrue/false
control_createChildrenBooleantrue/false
control_enableFrontendURLsBooleantrue/false
disableEmailFromAmcBooleantrue/false
callbackOnActionObject
pageCallbackUrlObject

Field descriptions

product_productId

This information tells what Signzy’s product does this particular channel allowed to push data into.

value = ‘investorOnboarding’

Currently only the above value is allowed.

product_customerId

The product_customerId is obtained for a particular user by logging into Signzy’s product as defined by the above definition. The userId parameter of login call is where you get the value of this paramenter.

product_accessToken

The product_accessToken is obtained for a particular user by logging into Signzy’s product as defined by the above definition. The id parameter of login call is where you get the value of this paramenter.

control_active

If control_active is set as true, only then the API calls from the channels will be allowed to enter into Signzy system, if this property isn’t set or is set to false, that channel won’t be make the channel API calls or onboarding API calls. Defaults to true if not set.

control_allowedCount

This property defines the number of onboarding objects that this channel can create. Defaults to 500 if not set.

control_selfUpdation

If this property is not set or set to false, then the update calls to their own object. The self updation API mentioned below will not be enabled. This enables the channels to update the username, password and email. For updating product specifications and the control parameters control_updateControls & control_updateProductInfo should also be set. Defaults to true if not set.

control_updateControls

If this property is not set or set to false, then the channel won’t be able to update the properties which have prefixe of control_. Defaults to false if not set.

control_updateProductInfo

If this property is not set or set to false, then the channel won’t be able to update the properties which have prefixe of product_. Defaults to false if not set.

control_createChildren

If this property is not set or set to false, then the channel won’t be able to child channels. Channels won’t be able to call the create channel API if this is not set or set as false. Defaults to false if not set.

control_enableFrontendURLs

Enables showing of frontend Web URLs for onboarding in response of create Onboarding API, in json keys: applicationUrl, autoLoginUrL, mobileLoginUrl, mobileAutoLoginUrl

disableEmailFromAmc

Flag to Disable/Enable Emails which are sent to investors on behalf of AMC. true implies email won’t be sent.Defaults to false if not set.

callbackOnAction

This object contains the list of callback URLs, to which data is to be posted, when any corresponding action is taken on the application. Defaults to empty if not set.

pageCallbackUrl

This object contains the list of callback URLs, to which data is to be posted, when any step is completed by the investor. Defaults to empty if not set.

Expected response

{

    “product_productId”: “……..”,

    “product_customerId”: “……..”,

    “product_accessToken”: “……..”,

    “control_active”: false,

    “control_allowedCount”: 20,

    “control_updateProductInfo”: false,

    “control_selfUpdation”: true,

    “control_updateControls”: true,

    “control_createChildren”: true,

    “control_enableFrontendURLs”: false,

    “disableEmailFromAmc”: false,

    “username”: “……”,

    “email”: “……”,

    “id”: “……”,

    “channelId”: “……”,

    “callbackOnAction”: {

        “accepted”: “…”,

        “rejected”: “…”,

        “draft”: “…”

    },

     “pageCallbackUrl”: {

        “identity”: “…..”,

        “address”: “…..”,

        “corraddress”: “…..”,

        “bankaccount”: “…..”,

        “documents”: “…..”,

        “fatca”: “…..”,

        “signature”: “…..”,

        “photo”: “…..”,

        “video”: “…..”,

        “contract”: “…..”,

        “submit” : “…..”

    }

}

Updating a child channel

A child channel is basically a distributor of a service and controlled by the parent. A child channel can be updated by sending a PUT call to the sub channel endpoint.

Endpoint

/api/channels/….your-channel-id…./channels/….child-channel-id….

The channel-id is the userID that you get from the login call as described above.

Request type

PUT

Headers

Content-type: “application/json” -> This is constant

Authorization: “your access token” -> You will receive the access token from the login API call as described above.

Allowed properties for updation

{

    “product_productId”: “………”,

    “product_customerId”: “………”,

    “product_accessToken”: “………”,

    “control_active”: true,

    “control_allowedCount”: 20,

    “control_updateProductInfo”: true,

    “control_selfUpdation”: true,

    “control_updateControls”: true,

    “control_createChildren”: true,

    “control_enableFrontendURLs”: false,

    “disableEmailFromAmc”: false,

    “username”: “………”,

    “password”: “………”,

    “email”: “………”,

    “callbackOnAction”: {

        “accepted”: “…”,

        “rejected”: “…”,

        “draft”: “…”

    },

     “pageCallbackUrl”: {

        “identity”: “…..”,

        “address”: “…..”,

        “corraddress”: “…..”,

        “bankaccount”: “…..”,

        “documents”: “…..”,

        “fatca”: “…..”,

        “signature”: “…..”,

        “photo”: “…..”,

        “video”: “…..”,

        “contract”: “…..”,

        “submit” : “…..”

    }

}

The API accepts the following properties as detailed in the table below.

PropertyData typeExample values
usernameStringusername
passwordStringpassword
emailStringemail
product_productIdStringinvestorOnbaording
product_customerIdString5219872648addff
product_accessTokenStringwhr320jrehbfdvipkqwmnh
control_activeBooleantrue/false
control_allowedCountIntegertrue/false
control_updateProductInfoBooleantrue/false
control_selfUpdationBooleantrue/false
control_updateControlsBooleantrue/false
control_createChildrenBooleantrue/false
control_enableFrontendURLsBooleantrue/false
disableEmailFromAmcBooleantrue/false
callbackOnActionObject
pageCallbackUrlObject

Updating a channel (self update)

The self update on the channel is to be used by a channel to update itself. A particular channel can use the self update API to update properties like password, email and other properties not controlled by the parent. Parent controlled properties include properties like active boolean and other allowances granted by the parent.

Endpoint

/api/channels/….your-channel-id….

The channel-id is the userID that you get from the login call as described above.

Request type

PUT

Headers

Content-type: “application/json” -> This is constant

Authorization: “your access token” -> You will receive the access token from the login API call as described above.

Allowed properties for updation

{

    “product_productId”: “………”,

    “product_customerId”: “………”,

    “product_accessToken”: “………”,

    “control_active”: true,

    “control_allowedCount”: 20,

    “control_updateProductInfo”: true,

    “control_selfUpdation”: true,

    “control_updateControls”: true,

    “control_createChildren”: true,

    “control_enableFrontendURLs”: false,

    “disableEmailFromAmc”: false,

    “username”: “………”,

    “password”: “………”,

    “email”: “………”,

    “callbackOnAction”: {

        “accepted”: “…”,

        “rejected”: “…”,

        “draft”: “…”

    },

     “pageCallbackUrl”: {

        “identity”: “…..”,

        “address”: “…..”,

        “corraddress”: “…..”,

        “bankaccount”: “…..”,

        “documents”: “…..”,

        “fatca”: “…..”,

        “signature”: “…..”,

        “photo”: “…..”,

        “video”: “…..”,

        “contract”: “…..”,

        “submit” : “…..”

    }

}

The API accepts the following properties as detailed in the table below.

PropertyData typeExample values
usernameStringusername
passwordStringpassword
emailStringemail
product_productIdStringinvestorOnbaording
product_customerIdString5219872648addff
product_accessTokenStringwhr320jrehbfdvipkqwmnh
control_activeBooleantrue/false
control_allowedCountIntegerInteger
control_updateProductInfoBooleantrue/false
control_selfUpdationBooleantrue/false
control_updateControlsBooleantrue/false
control_createChildrenBooleantrue/false
control_enableFrontendURLsBooleantrue/false
disableEmailFromAmcBooleantrue/false
callbackOnActionObject
pageCallbackUrlObject

Get channel details

/api/channels/….your-channel-id….

The channel-id is the userID that you get from the login call as describled above.

Request type

GET

Expected response

{

    “product_productId”: “………”,

    “product_customerId”: “………”,

    “product_accessToken”: “………”,

    “control_active”: true,

    “control_allowedCount”: 20,

    “control_updateProductInfo”: true,

    “control_selfUpdation”: true,

    “control_updateControls”: true,

    “control_createChildren”: true,

    “control_enableFrontendURLs”: false,

    “disableEmailFromAmc”: false,

    “username”: “………”,

    “password”: “………”,

    “email”: “………”,

    “id”: “……”,

    “channelId”: “……”,

    “callbackOnAction”: {

        “accepted”: “…”,

        “rejected”: “…”,

        “draft”: “…”

    },

     “pageCallbackUrl”: {

        “identity”: “…..”,

        “address”: “…..”,

        “corraddress”: “…..”,

        “bankaccount”: “…..”,

        “documents”: “…..”,

        “fatca”: “…..”,

        “signature”: “…..”,

        “photo”: “…..”,

        “video”: “…..”,

        “contract”: “…..”,

        “submit” : “…..”

    }

}

List channels

Endpoint

/api/channels/….your-channel-id…./channels

The channel-id is the userID that you get from the login call as described above.

Request type

GET

Expected response

[{

    “product_productId”: “………”,

    “product_customerId”: “………”,

    “product_accessToken”: “………”,

    “control_active”: true,

    “control_allowedCount”: 20,

    “control_updateProductInfo”: true,

    “control_selfUpdation”: true,

    “control_updateControls”: true,

    “control_createChildren”: true,

    “control_enableFrontendURLs”: false,

    “disableEmailFromAmc”: false,

    “username”: “………”,

    “password”: “………”,

    “email”: “………”,

    “id”: “……”,

    “channelId”: “……”,

    “callbackOnAction”: {

        “accepted”: “…”,

        “rejected”: “…”,

        “draft”: “…”

    },

     “pageCallbackUrl”: {

        “identity”: “…..”,

        “address”: “…..”,

        “corraddress”: “…..”,

        “bankaccount”: “…..”,

        “documents”: “…..”,

        “fatca”: “…..”,

        “signature”: “…..”,

        “photo”: “…..”,

        “video”: “…..”,

        “contract”: “…..”,

        “submit” : “…..”

    }

}]

List of grants

Endpoint

/api/channels/getAmcGrants

Request type

GET

Headers

Authorization: “channel access token”

Expected response

{

    “poi_list”: [“list of Id cards applicable for POI”],

    “poa_list”: [“list of Id cards applicable for POA”],

    “cpoa_list”: [“list of Id cards applicable for CPOA”],

    “allowed_sections”: [“List of sections allowed for the corresponding AMC”],

    “form_sections”: {

        “placeOfBirthMandatory”: true,

        “annualIncomeMandatory”: true,

        “bankAddressMandatory”: true,

        “aadhaarFieldMandatory”: true

    }

}

Onboarding APIs

The onboarding APIs help a channel create onboarding objects. A channel can create onboardings for a parent product.

APIs which are applicable for AMC On-boarding Journey flow will be accessible by the distributor. Distributors won’t be able to access any other API.

Create captcha image

/api/captchas/get

Request type

GET

Expected response

Header

id -> ID of the generated captcha

{

    “id”: “502cd6b2aepf021976379802”

}

Body

Raw File

Verify captcha

You can use this endpoint to verify the captcha on the front-end itself before sending into the Signzy login API.

Request type

POST

Endpoint

/api/captchas/verify

Input JSON

  1. text -> text to be verified.
  2. id -> id of the generated captcha.

{

    “text”:”00000″,

    “id”:”502cd6b2aepf021976379802″

}

Expected output

{

    “result”: {

        “isVerified”: true

    }

}

isVerified -> true denotes captcha is verified, false denotes catcha is not verified

Create onboarding object

Endpoint

/api/channels/…channel ID ../onboardings

Request type

POST

Headers

Content-type: “application/json” Authorization: “channel access token”

Input

PropertyData typeExample values
emailString (Required) , valid emailInvestor’s Email
usernameString (Required) string of lower case alphabets, digits, ‘.’, ‘_’, ‘-‘ with min length of 3Investor’s Username
phoneString (Required) 10 digit string and first digit is one of ‘6,7,8,9’Investor’s Phone Number
nameString (Required) string of min length of 2 consisting of any characterInvestor’s Name
channelEmailString (Optional) valid emailemail to get notifications at various Events (currently applicaple only for CAMS Response for the Investors Data push to CAMS)
redirectUrlString (Optional) valid URLInvestor gets redirected to this URL if onboarding via Signzy Web platform
languageListArray (Optional) Keywords that can be passed – [“en”, “hi”, “kn”, “bn”, “mr”]Select the keywords for the respective languages that should be shown in the Merchant’s page. English – “en”, Hindi – “hi”, Kannada – “kn”, Bengali – “bn”, Marathi – “mr”
languageSelectedString (Optional) Any one of these (‘en’, ‘hi’, ‘kn’, ‘bn’, ‘mr’)This field ensures the default language that will appear in the Merchant’s page. English – “en”, Hindi – “hi”, Kannada – “kn”, Bengali – “bn”, Marathi – “mr”
prefillDataObject (Optional) valid JSONSome of the data of investor can be prefilled here (For signzy frontend users only)

{

    “email”:”user@mail.com”,

    “username”:”username”,

    “phone”:”76xxxxxxx3″,

    “name”:”name”,

    “channelEmail”: “xyz@email.com”,

    “redirectUrl”: “https://xyz.com”,

    “languageList” : [“…list of langauages…”],

    “languageSelected” : “…language selected…”,

    “prefillData” : {

    “name”: “…name…”,

    “fatherName”: “…father name…”,

    “motherName”: “…mother name…”,

    “dob”: “…dob…”,

    “panNumber”: “.. Pan number”,

    “dlNumber”: “.. Dl number..”,

    “dlIssueDate”: “…Dl IssueDate…”,

    “dlExpiryDate”: “…Dl Expiry Date…”,

    “passportNumber”: “…Passport number…”,

    “passportIssueDate”: “…Passport Issue Date…”,

    “passportExpiryDate”: “…Passport Expiry Date…”,

    “aadhaarUid”: “…12 digit UID…”,

    “voterIdNumber”: “…VoterId number…”,

    “otherIdNumber”: “…OtherId number”,

    “otherIdIssueDate”: “…OtherId Issue Date…”,

    “otherIdExpiryDate”: “…OtherId Expiry Date…”,

    “pincode”: “…pincode…”,

    “state”: “…state…”,

    “district”: “…district…”,

    “city”: “…city…”,

    “address”: “…address…”,

    “corrPincode”: “…corr pincode…”,

    “corrState”: “…corr state…”,

    “corrDistrict”: “…corr district…”,

    “corrCity”: “…corr city…”,

    “corrAddress”: “…corr address…”,

    “bankAccountNumber”: “…bank account number…”,

    “bankIFSC”: “…bank IFSC…”,

    “bankAccountHolderName” : “…bank account holder name…”,

    “bankAddress”: “…bank address…”,

    “gender”: “…gender…”,

    “maritalStatus”: “…martial status…”,

    “fatherSpouseTitle”: “…father or spouse title…”,

    “fatherSpouseName”: “…father or spouse name…”,

    “nomineeRelationShip”: “…nominee relationship…”,

    “maidenTitle”: “…maiden title…”,

    “maidenName”: “…maiden name…”,

    “motherTitle”: “…mother title…”,

    “emailId”: “…emailId…”,

    “mobileNumber”: “..mobile number…”,

    “placeOfBirth”: “…place of birth…”

}

}

prefillData(For signzy frontend users only) Object details for Prefilling data

PropertyData typeExample values
nameString (Optional) , string of min length of 2 consisting of any characterInvestor’s name
fatherNameString (Optional) ,string of min length of 2 consisting of any characterInvestor’s father name
motherNameString (Optional) ,string of min length of 2 consisting of any characterInvestor’s mother name
dobString (Optional) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatInvestor’s dob
panNumberString (Optional) ,Valid pan numberPan number
dlNumberString (Optional) ,Valid dl numberdl number
dlIssueDateString (Optional) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateDl issue date
dlExpiryDateString (Optional) ,Expiry Date as string DD/MM/YYYY or DD-MM-YYYY format, should be a future DateDl expiry date
passportNumberString (Optional) ,Valid passport numberPassport number
passportIssueDateString (Optional) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DatePassport issue date
passportExpiryDateString (Optional) ,Expiry Date as string DD/MM/YYYY or DD-MM-YYYY format, should be a future DatePassport expiry date
aadhaarUidString (Optional) ,string of 8 zeros followed by 4 digitsAadhaar number
voterIdNumberString (Optional)VoterId number
otherIdNumberString (Optional)Other document number
otherIdIssueDateString (Optional) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateOther document issue date
otherIdExpiryDateString (Optional) ,Expiry Date as string DD/MM/YYYY or DD-MM-YYYY format, should be a future DateOther document expiry date
pincodeString (Optional), valid PincodePincode
stateEnum String (Optional)State, Refer 1st column of Table 1.7
districtString (Optional)District
cityEnum String (Optional)City
addressString (Optional)Address
corrPincodeString (Optional), valid PincodeCorrespondence POA pincode
corrStateEnum String (Optional)Correspondence POA state, Refer 1st column of Table 1.7
corrDistrictString (Optional)Correspondence POA District
corrCityEnum String (Optional)Correspondence POA city
corrAddressString (Optional)Correspondence POA address
bankAccountNumberString (Optional) ,string of min length of 9 and max length 18 consisting of any digitAccount number on cancelled cheque document
bankIFSCString (Optional), alphanumeric string of length 11IFSC code
banckAccountHolderNameString (Optional),string of min length of 2 consisting of any characterBank account holder name
bankAddressString (Optinal)Bank address
genderEnum String (Optional)investor’s Gender values: “F” / “M” / “T” for Female, Male, Transgender
maritalStatusEnum String (Optional)investor’s marital status, values: “MARRIED” / “UNMARRIED” / “OTHERS”
fatherSpouseTitleEnum String (Optional)Pass the title of Father or Spouse, possible values “Mr.” / “Mrs.”
fatherSpouseNameString (Optional), string of min length of 2 consisting of any characterPass the Father or Spouse name
nomineeRelationShipEnum String (Optional)Pass either “FATHER” or “SPOUSE”, accordingly pass the name in “fatherName”
maidenTitleEnum String (Optional)title for maiden name, values: “Mrs.” / “Ms.” / “Mx.”
maidenNameString (Optional), string of min length of 2 consisting of any charactermaiden name of investor provided investor is a Female
motherTitleEnum String (Optional)Investor mother Title, values: “Mrs.” / “Ms.” / “Mx.”
emailIdString (Optional) , valid emailInvestor’s Email
mobileNumberString (Optional) 10 digit string and first digit is one of ‘6,7,8,9’Investor’s Phone Number
placeOfBirthString(Optional), string of min length of 2 consisting of any characterPlace of Birth

Response

{   

    “id”: “… Onboarding Id …”,

    “createObj”: {

        “customerId”: “..customerId..”,

        “email”: “user@mail.com”,

        “id”: “.. onboarding password ..”,

        “name”: “name”,

        “phone”: “76xxxxxxx3”,

        “username”: “username”

    }

}

Execute POI

Extraction API for POI documents

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“identity”
– typeEnum String (Required)“individualPan” / “aadhaar” / “passport” / “drivingLicence” / “voterid”
– taskEnum String (Required)“autoRecognition”
– dataObject (Required)payload
—- imagesArray (Required) array of length 2(incase of ‘aadhaar’, ‘voterid’, ‘passport’), length 1 (incase of PAN) and, length 1 or 2 (incase of DL) with valid URLs.An array of image URLs of the ID card, front and back in order. In case of PAN, pass URL of front Image and in case of Driving License pass URLs of either front or both sides of images.
—- proofTypeEnum String (Required)“identity”

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “…….”,

        “type”: “…….”,

        “task”: “…….”,

        “data”: {

            “images”: [“..direct url of the images of one side(incase of driving licence and PAN ) or two sides (for others) ..”],

            “toVerifyData”: {},

            “searchParam”: {},

            “proofType”: “identity”

        }

    }

}

Input For Offline Aadhaar

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“identity”
– typeEnum String (Required)“aadhaar”
– taskEnum String (Required)“offlineAadhaar”
– dataObject (Required)payload
—- imagesArray (Required) empty arrayIn case of Offline Aadhaar pass empty array []
—- urlEnum String (Required)“url of zip or xml file ”
—- passwordEnum String (Required)“password of the zip file (Required only if the file is zip) ”
—- proofTypeEnum String (Required)“identity”

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “…….”,

        “type”: “aadhaar”,

        “task”: “offlineAadhaar”,

        “data”: {

            “images”: [],

            “url”:”.. url of zip or xml file (only for offlineAadhaar)…”,

            “password”: “.. password of the zip file (only for offlineAadhaar and zip file) ..”,

            “toVerifyData”: {},

            “searchParam”: {},

            “proofType”: “identity”

        }

    }

}

For Aadhaar, PAN, DL DigiLocker

Must hit the execute API twice,

1) First with task as createUrl.

2) In response, will receive a url to grant permission from DigiLocker to access the documents.

3) After completion of the process, Hit the same API with task as getDetails.

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“identity”
– typeEnum String (Required)“aadhaarDigiLocker” / “panDigiLocker” / “dlDigiLocker”
– taskEnum String (Required)“createUrl” / “getDetails”
– dataObject (Required)payload
—- imagesArray (Required) empty arrayIn case of DigiLocker pass empty array []
—- proofTypeEnum String (Required)“identity”

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “…….”,

        “type”: “…….”,

        “task”: “…creatUrl/getDetails….”,

        “data”: {

            “images”: [],

            “toVerifyData”: {},

            “searchParam”: {},

            “proofType”: “identity”

        }

    }

}

Expected output

Incase of PAN Card card

{

    “object”: {

        “result”: {

            “name”: “Name as on card”,

            “fatherName”: “Father’s name as on card”,

            “dob”: “DOB as on card”,

            “number”: “number as on card”

        }

    }

}

Incase of Aadhar card

{

    “object”: {

        “result”: {

            “uid”: “…00000000XXXX….masked first eight digit…”,

            “vid”: “…virtual UID…”,

            “name”: “…name on id card…”,

            “yob”: “…year of birth…”,

            “dob”: “…date of birth…”,

            “pincode”: “…pincode…”,

            “address”: “…address as on card…”,

            “gender”: “male/female”,

            “splitAddress”: {

                “district”: [],

                “state”: [

                    []

                ],

                “city”: [],

                “pincode”: ” “,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “”

            },

            “uidHash”: “Secure Cryptographic conversion of UID”

        }

    }

}

Incase of Driving License

{

    “object”: {

        “result”: {

            “issueDate”: “date-of-issue”,

            “dob”: “dob”,

            “expiryDate”: “date-of-expiry”,

            “name”: “name”,

            “number”: “dl number”,

            “guardianName”: “name of guardian”,

            “address”: “address”,

            “splitAddress”: {

                “state”: [

                    []

                ],

                “district”: [],

                “city”: [],

                “pincode”: “…pincode…”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “…addressLine…”

            },

            “dlType”: [“array-of-vehicle-class”]

        }

    }

}

Incase of Passport

{

    “object”: {

        “result”: {

            “parentsGuardianName”: “..parentsGuardianName…”,

            “issueDate”: “..issueDate..”,

            “expiryDate”: “..expiryDate..”,

            “birthDate”: “..birthDate..”,

            “name”: “..name..”,

            “country”: [

                “..country..”

            ],

            “nationality”: “..nationality..”,

            “sex”: “F/M”,

            “address”: “..address..”,

            “pincode”: “..pincode..”,

            “passportNumber”: “..passportNumber..”,

            “fileNumber”: “..fileNumber..”,

            “placeOfBirth”: “..placeOfBirth..”,

            “placeOfIssue”: “..placeOfIssue..”,

            “splitAddress”: {

                “district”: [

                    “..district..”

                ],

                “state”: [

                    [

                        “..state..”

                    ]

                ],

                “city”: [

                    “..city..”

                ],

                “pincode”: “..pincode..”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “..addressLine..”

            }

        }

    }

}

Incase of VoterId

{

    “object”: {

        “result”: {

            “epicNumber”: “…epic number…”,

            “name”: “…name…”,

            “fatherName”: “…father name…”,

            “state”: “…state name…”,

            “dob”: “…date of birth…”,

            “yob”: “…year of birth…”,

            “ageAsOn”: “…age in year…”,

            “address”: “…address found on card…”,

            “splitAddress”: {

                “district”: [

                    “…name of district…”

                ],

                “state”: [

                    [

                        “…name of state…”,

                        “WB”

                    ]

                ],

                “city”: [

                    “…name of the city…”

                ],

                “pincode”: “…pincode of the city…”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “…address line on the card…”

            }

        }

    }

}

Incase of Offline Aadhaar

{

    “object”: {

        “result”: {

            “name”: “…name on id card…”,

            “yob”: “…year of birth…”,

            “dob”: “…date of birth…”,

            “gender”: “male/female”,

            “emailHash”: “…”,

            “mobileNoHash”: “…”,

            “address”: “..”,

            “photo”: “..image url..”,

            “generationDate”: “.. date ..”,

            “generationTime”: “.. time ..”,

            “unixTimeStamp”: 1589445464,

            “dateDifference”: 1,

            “splitAddress”: {

                “district”: [],

                “state”: [

                    []

                ],

                “city”: [],

                “pincode”: ” “,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “”

            },

            “x509Data”: {

                “subjectName”: “……”,

                “certificate”: “”,

                “details”: { },

                “validAadhaarDSC”: “..yes/no…”

            }

        }

    }

}

Incase of DigiLocker(Aadhaar / PAN / DL) 1st Step

{

    “result”: {

            “url”: ” … url to permit DigiLocker Account …”,

            “requestId”: ” .. id ..”

        }

}

Incase of DigiLocker(Aadhaar / PAN / DL) 2nd Step, the response will be similar to the respective cards as mentioned above.

Update form POI

Update POI form data of a Merchant.

Only the POI that has been approved for the distributor by the AMC will be accepted and any other ID uploaded will throw an error. So if for a particular distributor, if PAN card is the only approved POI, then uploading Aadhaar as POI will throw an error.

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
saveString (Required)“formData”
typeString (Required)“identityProof”
dataObject (Required)payload, see below for details

data Object details when POI is PAN

PropertyData typeExample values
typeEnum String (Required)“individualPan”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document
numberString (Required) ,valid PAN numberPAN number on POI document
fatherNameString (Required) ,string of min length of 2 consisting of any characterPAN number on POI document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “identityProof”,

    “data”: {

        “type”: “individualPan”,

        “name”: “.. name ..”,

        “fatherName”: “.. fatherName ..”,

        “number”: “.. Pan number ..”,

        “dob”: “.. dob ..”

    }

}

data Object details when POI is Aadhaar

PropertyData typeExample values
typeEnum String (Required)“aadhaar”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
uidString (Required), string of 8 zeros followed by 4 digitsAadhaar number
addressString (Required)Address as on POI document
cityEnum String (Required)City as on POI document
stateEnum String (Required)State as on POI document, Refer 1st column of Table 1.7
districtString (Required)District as on POI document
pincodeString (Required), valid PincodePincode
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “identityProof”,

    “data”: {

        “type”: “aadhaar”,

        “name”: “.. person name ..”,

        “uid”: “..12 digit UID ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”,

        “dob”: “.. dob ..”

    }

}

data Object details when POI is Passport

PropertyData typeExample values
typeEnum String (Required)“passport”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
passportNumberString (Required)Passport number
addressString (Required)Address as on POI document
cityEnum String (Required)City as on POI document
stateEnum String (Required)State as on POI document, Refer 1st column of Table 1.7
districtString (Required)District as on POI document
birthDateString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document
pincodeString (Required), valid PincodePincode
issueDateString (Required) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Required) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “identityProof”,

    “data”: {

        “type”: “passport”,

        “name”: “.. name ..”,

        “birthDate”: “.. dob ..”,

        “issueDate”: “.. issueDate ..”,

        “expiryDate”: “.. expiryDate ..”,

        “passportNumber”: “.. passport number ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”

    }

}

data Object details when POI is Driving License

PropertyData typeExample values
typeEnum String (Required)“drivingLicence”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document
numberString (Required)Driving License number on POI document
addressString (Required)Address as on POI document
cityEnum String (Required)City as on POI document
stateEnum String (Required)State as on POI document, Refer 1st column of Table 1.7
districtString (Required)District as on POI document
pincodeString (Required), valid PincodePincode
issueDateString (Required) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Required) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “identityProof”,

    “data”: {

        “type”: “drivingLicence”,

        “name”: “.. name ..”,

        “expiryDate”: “… expiryDate ..”,

        “number”: “.. DL number ..”,

        “dob”: “.. dob .. “,

        “issueDate”: “.. issueDate …”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”

    }

}

data Object details when POI is VoterId

PropertyData typeExample values
typeEnum String (Required)“voterId”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document
epicNumberString (Required)VoterId number on POI document
addressString (Required)Address as on POI document
cityEnum String (Required)City as on POI document
stateEnum String (Required)State as on POI document, Refer 1st column of Table 1.7
districtString (Required)District as on POI document
pincodeString (Required), valid PincodePincode

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “identityProof”,

    “data”: {

        “type”: “voterId”,

        “epicNumber”: “.. voterId number ..”,

        “name”: “.. name ..”,

        “dob”: “.. dob ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “pincode”: “.. pincode ..”

    }

}

data Object details when POI is Offline Aadhaar

PropertyData typeExample values
typeEnum String (Required)“aadhaarXml”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
uidString (Required), string of 8 zeros followed by 4 digitsAadhaar number
addressString (Required)Address as on POI document
cityEnum String (Required)City as on POI document
stateEnum String (Required)State as on POI document, Refer 1st column of Table 1.7
districtString (Required)District as on POI document
pincodeString (Required), valid PincodePincode
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document
generationDateTimeString (Required) ,concat the generationDate and generationTimeGeneration date and time on POI document
dateDifferenceNumber (Required) ,dateDiffencedateDifference on POI document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “identityProof”,

    “data”: {

        “type”: “aadhaarXml”,

        “name”: “.. person name ..”,

        “uid”: “..12 digit UID ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”,

        “dob”: “.. dob ..”,

        “generationDateTime”: “..generationDate+generationTime..”,

        “dateDifference”: ..dateDifference..

    }

}

data Object details when POI is Aadhaar DigiLocker

PropertyData typeExample values
typeEnum String (Required)“aadhaarDigiLocker”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
uidString (Required), string of 8 zeros followed by 4 digitsAadhaar number
addressString (Required)Address as on POI document
cityEnum String (Required)City as on POI document
stateEnum String (Required)State as on POI document, Refer 1st column of Table 1.7
districtString (Required)District as on POI document
pincodeString (Required), valid PincodePincode
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “identityProof”,

    “data”: {

        “type”: “aadhaarDigiLocker”,

        “name”: “.. person name ..”,

        “uid”: “..12 digit UID ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”,

        “dob”: “.. dob ..”

    }

}

data Object details when POI is PAN DigiLocker

PropertyData typeExample values
typeEnum String (Required)“panDigiLocker”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document
numberString (Required) ,valid PAN numberPAN number on POI document
fatherNameString (Required) ,string of min length of 2 consisting of any characterPAN number on POI document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “identityProof”,

    “data”: {

        “type”: “panDigiLocker”,

        “name”: “.. name ..”,

        “fatherName”: “.. fatherName ..”,

        “number”: “.. Pan number ..”,

        “dob”: “.. dob ..”

    }

}

data Object details when POI is Driving License DigiLocker

PropertyData typeExample values
typeEnum String (Required)“dlDigiLocker”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document
numberString (Required)Driving License number on POI document
addressString (Required)Address as on POI document
cityEnum String (Required)City as on POI document
stateEnum String (Required)State as on POI document, Refer 1st column of Table 1.7
districtString (Required)District as on POI document
pincodeString (Required), valid PincodePincode
issueDateString (Required) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Required) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “identityProof”,

    “data”: {

        “type”: “dlDigiLocker”,

        “name”: “.. name ..”,

        “expiryDate”: “… expiryDate ..”,

        “number”: “.. DL number ..”,

        “dob”: “.. dob .. “,

        “issueDate”: “.. issueDate …”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”

    }

}

Expected output

{

    “object”: “Updated Successfully”

}

Execute POA

Extraction API for POA documents

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“identity”
– typeEnum String (Required)“aadhaar” / “passport” / “drivingLicence” / “voterid”
– taskEnum String (Required)“autoRecognition”
– dataObject (Required)payload
—- imagesArray (Required) array of length 2(incase of ‘aadhaar’, ‘voterid’, ‘passport’), length 1 or 2 (incase of DL) with valid URLs.An array of image URLs of the ID card, front and back in order. In case of PAN, pass URL of front Image and in case of Driving License pass URLs of either front or both sides of images.
—- proofTypeEnum String (Required)“address”

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “identity”,

        “type”: “aadhaar / passport / drivingLicence / voterid”,

        “task”: “autoRecognition”,

        “data”: {

            “images”: [

                “…direct url to the images …”,

                “…direct url to the images …”

            ],

            “toVerifyData”: {},

            “searchParam”: {},

            “proofType”: “address”

        }

    }

}

Input For Offline Aadhaar

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“identity”
– typeEnum String (Required)“aadhaar”
– taskEnum String (Required)“offlineAadhaar”
– dataObject (Required)payload
—- imagesArray (Required) empty arrayIn case of Offline Aadhaar pass empty array []
—- urlEnum String (Required)“url of zip or xml file ”
—- passwordEnum String (Required)“password of the zip file (Required only if the file is zip) ”
—- proofTypeEnum String (Required)“address”

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “…….”,

        “type”: “aadhaar”,

        “task”: “offlineAadhaar”,

        “data”: {

            “images”: [],

            “url”:”.. url of zip or xml file (only for offlineAadhaar)…”,

            “password”: “.. password of the zip file (only for offlineAadhaar and zip file) ..”,

            “toVerifyData”: {},

            “searchParam”: {},

            “proofType”: “address”

        }

    }

}

For Aadhaar, DL DigiLocker

Must hit the execute API twice,

1) First with task as createUrl.

2) In response, will receive a url to grant permission from DigiLocker to access the documents.

3) After completion of the process, Hit the same API with task as getDetails.

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“identity”
– typeEnum String (Required)“aadhaarDigiLocker” / “dlDigiLocker”
– taskEnum String (Required)“createUrl” / “getDetails”
– dataObject (Required)payload
—- imagesArray (Required) empty arrayIn case of Aadhaar DigiLocker pass empty array []
—- proofTypeEnum String (Required)“address”

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “…….”,

        “type”: “…….”,

        “task”: “…creatUrl/getDetails….”,

        “data”: {

            “images”: [],

            “toVerifyData”: {},

            “searchParam”: {},

            “proofType”: “address”

        }

    }

}

Expected output

Incase of Aadhar card

{

    “object”: {

        “result”: {

            “uid”: “…00000000XXXX….masked first eight digit…”,

            “vid”: “…virtual UID…”,

            “name”: “…name on id card…”,

            “yob”: “…year of birth…”,

            “dob”: “…date of birth…”,

            “pincode”: “…pincode…”,

            “address”: “…address as on card…”,

            “gender”: “male/female”,

            “splitAddress”: {

                “district”: [],

                “state”: [

                    []

                ],

                “city”: [],

                “pincode”: ” “,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “”

            },

            “uidHash”: “Secure Cryptographic conversion of UID”

        }

    }

}

Incase of Driving License

{

    “object”: {

        “result”: {

            “issueDate”: “date-of-issue”,

            “dob”: “dob”,

            “expiryDate”: “date-of-expiry”,

            “name”: “name”,

            “number”: “dl number”,

            “guardianName”: “name of guardian”,

            “address”: “address”,

            “splitAddress”: {

                “state”: [

                    []

                ],

                “district”: [],

                “city”: [],

                “pincode”: “…pincode…”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “…addressLine…”

            },

            “dlType”: [“array-of-vehicle-class”]

        }

    }

}

Incase of Passport

{

    “object”: {

        “result”: {

            “parentsGuardianName”: “..parentsGuardianName…”,

            “issueDate”: “..issueDate..”,

            “expiryDate”: “..expiryDate..”,

            “birthDate”: “..birthDate..”,

            “name”: “..name..”,

            “country”: [

                “..country..”

            ],

            “nationality”: “..nationality..”,

            “sex”: “F/M”,

            “address”: “..address..”,

            “pincode”: “..pincode..”,

            “passportNumber”: “..passportNumber..”,

            “fileNumber”: “..fileNumber..”,

            “placeOfBirth”: “..placeOfBirth..”,

            “placeOfIssue”: “..placeOfIssue..”,

            “splitAddress”: {

                “district”: [

                    “..district..”

                ],

                “state”: [

                    [

                        “..state..”

                    ]

                ],

                “city”: [

                    “..city..”

                ],

                “pincode”: “..pincode..”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “..addressLine..”

            }

        }

    }

}

Incase of VoterId

{

    “object”: {

        “result”: {

            “epicNumber”: “…epic number…”,

            “name”: “…name…”,

            “fatherName”: “…father name…”,

            “state”: “…state name…”,

            “dob”: “…date of birth…”,

            “yob”: “…year of birth…”,

            “ageAsOn”: “…age in year…”,

            “address”: “…address found on card…”,

            “splitAddress”: {

                “district”: [

                    “…name of district…”

                ],

                “state”: [

                    [

                        “…name of state…”,

                        “WB”

                    ]

                ],

                “city”: [

                    “…name of the city…”

                ],

                “pincode”: “…pincode of the city…”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “…address line on the card…”

            }

        }

    }

}

Incase of Offline Aadhaar

{

    “object”: {

        “result”: {

            “name”: “…name on id card…”,

            “yob”: “…year of birth…”,

            “dob”: “…date of birth…”,

            “gender”: “male/female”,

            “emailHash”: “…”,

            “mobileNoHash”: “…”,

            “address”: “..”,

            “photo”: “..image url..”,

            “generationDate”: “.. date ..”,

            “generationTime”: “.. time ..”,

            “unixTimeStamp”: 1589445464,

            “dateDifference”: 1,

            “splitAddress”: {

                “district”: [],

                “state”: [

                    []

                ],

                “city”: [],

                “pincode”: ” “,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “”

            },

            “x509Data”: {

                “subjectName”: “……”,

                “certificate”: “”,

                “details”: { },

                “validAadhaarDSC”: “..yes/no…”

            }

        }

    }

}

Incase of DigiLocker(Aadhaar / DL) 1st Step

{

    “result”: {

            “url”: ” … url to permit DigiLocker Account …”,

            “requestId”: ” .. id ..”

        }

}

Incase of DigiLocker(Aadhaar / DL) 2nd Step, the response will be similar to the respective cards as mentioned above.

Update form Address proof

Updates Permanent POA form data of a Merchant

Only the POA that has been approved for the distributor by the AMC will be accepted and any other ID uploaded will throw an error. So if for a particular distributor, if DL card is the only approved POA, then uploading Aadhaar as POA will throw an error.

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
saveString (Required)“formData”
typeString (Required)“addressProof”
dataObject (Required)payload, see below for details

data Object details when POA is Aadhaar

PropertyData typeExample values
typeEnum String (Required)“aadhaar”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
uidString (Required), string of 8 zeros followed by 4 digitsAadhaar number
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “addressProof”,

    “data”: {

        “type”: “aadhaar”,

        “name”: “.. person name ..”,

        “uid”: “..12 digit UID ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “pincode”: “.. pincode ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “dob”: “.. dob ..”

    }

}

data Object details when POA is Passport

PropertyData typeExample values
typeEnum String (Required)“passport”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
passportNumberString (Required)Passport number
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
birthDateString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
pincodeString (Required), valid PincodePincode
issueDateString (Required) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Required) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “addressProof”,

    “data”: {

        “type”: “passport”,

        “name”: “.. name ..”,

        “birthDate”: “.. dob ..”,

        “issueDate”: “.. issueDate ..”,

        “expiryDate”: “.. expiryDate ..”,

        “passportNumber”: “.. passport number ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”

    }

}

data Object details when POA is Driving License

PropertyData typeExample values
typeEnum String (Required)“drivingLicence”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
numberString (Required)Driving License number on POA document
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode
issueDateString (Required) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Required) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “addressProof”,

    “data”: {

        “type”: “drivingLicence”,

        “name”: “.. name ..”,

        “expiryDate”: “… expiryDate ..”,

        “number”: “.. DL number ..”,

        “dob”: “.. dob .. “,

        “issueDate”: “.. issueDate …”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”

    }

}

data Object details when POA is VoterId

PropertyData typeExample values
typeEnum String (Required)“voterId”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
epicNumberString (Required)VoterId number on POA document
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “addressProof”,

    “data”: {

        “type”: “voterId”,

        “epicNumber”: “.. voterId number ..”,

        “name”: “.. name ..”,

        “dob”: “.. dob ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “pincode”: “.. pincode ..”

    }

}

data Object details when POA is Offline Aadhaar

PropertyData typeExample values
typeEnum String (Required)“aadhaarXml”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
uidString (Required), string of 8 zeros followed by 4 digitsAadhaar number
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
generationDateTimeString (Required) ,concat the generationDate and generationTimeGeneration date and time on POI document
dateDifferenceNumber (Required) ,dateDiffencedateDifference on POA document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “addressProof”,

    “data”: {

        “type”: “aadhaarXml”,

        “name”: “.. person name ..”,

        “uid”: “..12 digit UID ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”,

        “dob”: “.. dob ..”,

        “generationDateTime”: “..generationDate+generationTime..”,

        “dateDifference”: ..dateDifference..

    }

}

data Object details when POA is Aadhaar DigiLocker

PropertyData typeExample values
typeEnum String (Required)“aadhaarDigiLocker”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
uidString (Required), string of 8 zeros followed by 4 digitsAadhaar number
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “addressProof”,

    “data”: {

        “type”: “aadhaarDigiLocker”,

        “name”: “.. person name ..”,

        “uid”: “..12 digit UID ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”,

        “dob”: “.. dob ..”

    }

}

data Object details when POA is Driving License DigiLocker

PropertyData typeExample values
typeEnum String (Required)“dlDigiLocker”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
numberString (Required)Driving License number on POA document
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode
issueDateString (Required) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Required) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “addressProof”,

    “data”: {

        “type”: “dlDigiLocker”,

        “name”: “.. name ..”,

        “expiryDate”: “… expiryDate ..”,

        “number”: “.. DL number ..”,

        “dob”: “.. dob .. “,

        “issueDate”: “.. issueDate …”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”

    }

}

Expected output

{

    “object”: “Updated Successfully”

}

Execute Correspondence POA

Extraction API for POA documents

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“identity”
– typeEnum String (Required)“aadhaar” / “passport” / “drivingLicence” / “voterid”
– taskEnum String (Required)“autoRecognition”
– dataObject (Required)payload
—- imagesArray (Required) array of length 2(incase of ‘aadhaar’, ‘voterid’, ‘passport’), length 1 or 2 (incase of DL) with valid URLs.An array of image URLs of the ID card, front and back in order. In case of PAN, pass URL of front Image and in case of Driving License pass URLs of either front or both sides of images.
—- proofTypeEnum String (Required)“corrAddress”

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “identity”,

        “type”: “aadhaar / passport / drivingLicence / voterid”,

        “task”: “autoRecognition”,

        “data”: {

            “images”: [

                “…direct url to the images …”,

                “…direct url to the images …”

            ],

            “toVerifyData”: {},

            “searchParam”: {},

            “proofType”: “corrAddress”

        }

    }

}

Input For Offline Aadhaar

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“identity”
– typeEnum String (Required)“aadhaar”
– taskEnum String (Required)“offlineAadhaar”
– dataObject (Required)payload
—- imagesArray (Required) empty arrayIn case of Offline Aadhaar pass empty array []
—- urlEnum String (Required)“url of zip or xml file ”
—- passwordEnum String (Required)“password of the zip file (Required only if the file is zip) ”
—- proofTypeEnum String (Required)“corrAddress”

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “…….”,

        “type”: “aadhaar”,

        “task”: “offlineAadhaar”,

        “data”: {

            “images”: [],

            “url”:”.. url of zip or xml file (only for offlineAadhaar)…”,

            “password”: “.. password of the zip file (only for offlineAadhaar and zip file) ..”,

            “toVerifyData”: {},

            “searchParam”: {},

            “proofType”: “corrAddress”

        }

    }

}

For Aadhaar, DL DigiLocker

Must hit the execute API twice,

1) First with task as createUrl.

2) In response, will receive a url to grant permission from DigiLocker to access the documents.

3) After completion of the process, Hit the same API with task as getDetails.

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“identity”
– typeEnum String (Required)“aadhaarDigiLocker” / “dlDigiLocker”
– taskEnum String (Required)“createUrl” / “getDetails”
– dataObject (Required)payload
—- imagesArray (Required) empty arrayIn case of Aadhaar DigiLocker pass empty array []
—- proofTypeEnum String (Required)“corrAddress”

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “…….”,

        “type”: “……..”,

        “task”: “…creatUrl/getDetails….”,

        “data”: {

            “images”: [],

            “toVerifyData”: {},

            “searchParam”: {},

            “proofType”: “corrAddress”

        }

    }

}

Expected output

Incase of Aadhar card

{

    “object”: {

        “result”: {

            “uid”: “…00000000XXXX….masked first eight digit…”,

            “vid”: “…virtual UID…”,

            “name”: “…name on id card…”,

            “yob”: “…year of birth…”,

            “dob”: “…date of birth…”,

            “pincode”: “…pincode…”,

            “address”: “…address as on card…”,

            “gender”: “male/female”,

            “splitAddress”: {

                “district”: [],

                “state”: [

                    []

                ],

                “city”: [],

                “pincode”: ” “,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “”

            },

            “uidHash”: “Secure Cryptographic conversion of UID”

        }

    }

}

Incase of Driving License

{

    “object”: {

        “result”: {

            “issueDate”: “date-of-issue”,

            “dob”: “dob”,

            “expiryDate”: “date-of-expiry”,

            “name”: “name”,

            “number”: “dl number”,

            “guardianName”: “name of guardian”,

            “address”: “address”,

            “splitAddress”: {

                “state”: [

                    []

                ],

                “district”: [],

                “city”: [],

                “pincode”: “…pincode…”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “…addressLine…”

            },

            “dlType”: [“array-of-vehicle-class”]

        }

    }

}

Incase of Passport

{

    “object”: {

        “result”: {

            “parentsGuardianName”: “..parentsGuardianName…”,

            “issueDate”: “..issueDate..”,

            “expiryDate”: “..expiryDate..”,

            “birthDate”: “..birthDate..”,

            “name”: “..name..”,

            “country”: [

                “..country..”

            ],

            “nationality”: “..nationality..”,

            “sex”: “F/M”,

            “address”: “..address..”,

            “pincode”: “..pincode..”,

            “passportNumber”: “..passportNumber..”,

            “fileNumber”: “..fileNumber..”,

            “placeOfBirth”: “..placeOfBirth..”,

            “placeOfIssue”: “..placeOfIssue..”,

            “splitAddress”: {

                “district”: [

                    “..district..”

                ],

                “state”: [

                    [

                        “..state..”

                    ]

                ],

                “city”: [

                    “..city..”

                ],

                “pincode”: “..pincode..”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “..addressLine..”

            }

        }

    }

}

Incase of VoterId

{

    “object”: {

        “result”: {

            “epicNumber”: “…epic number…”,

            “name”: “…name…”,

            “fatherName”: “…father name…”,

            “state”: “…state name…”,

            “dob”: “…date of birth…”,

            “yob”: “…year of birth…”,

            “ageAsOn”: “…age in year…”,

            “address”: “…address found on card…”,

            “splitAddress”: {

                “district”: [

                    “…name of district…”

                ],

                “state”: [

                    [

                        “…name of state…”,

                        “WB”

                    ]

                ],

                “city”: [

                    “…name of the city…”

                ],

                “pincode”: “…pincode of the city…”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “…address line on the card…”

            }

        }

    }

}

Incase of Offline Aadhaar

{

    “object”: {

        “result”: {

            “name”: “…name on id card…”,

            “yob”: “…year of birth…”,

            “dob”: “…date of birth…”,

            “gender”: “male/female”,

            “emailHash”: “…”,

            “mobileNoHash”: “…”,

            “address”: “..”,

            “photo”: “..image url..”,

            “generationDate”: “.. date ..”,

            “generationTime”: “.. time ..”,

            “unixTimeStamp”: 1589445464,

            “dateDifference”: 1,

            “splitAddress”: {

                “district”: [],

                “state”: [

                    []

                ],

                “city”: [],

                “pincode”: ” “,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “”

            },

            “x509Data”: {

                “subjectName”: “……”,

                “certificate”: “”,

                “details”: { },

                “validAadhaarDSC”: “..yes/no…”

            }

        }

    }

}

Incase of Aadhar DigiLocker 1st Step

{

    “result”: {

            “url”: ” … url to permit DigiLocker Account …”,

            “requestId”: ” .. id ..”

        }

}

Incase of DigiLocker(Aadhaar / DL) 2nd Step, the response will be similar to the respective cards as mentioned above.

Update form POA correspondence address proof

Updates Correspondence POA form data of a Merchant.

Only the POA that has been approved for the distributor by the AMC will be accepted and any other ID uploaded will throw an error. So if for a particular distributor, if DL is the only approved POA, then uploading Aadhaar as POA will throw an error.

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
saveString (Required)“formData”
typeString (Required)“corrAddressProof”
dataObject (Required)payload, see below for details

Incase Communication address is different from Permanent Address

data Object details when POA is Aadhaar

PropertyData typeExample values
typeEnum String (Required)“aadhaar”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
uidString (Required), string of 8 zeros followed by 4 digitsAadhaar number
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “corrAddressProof”,

    “data”: {

        “type”: “aadhaar”,

        “name”: “.. person name ..”,

        “uid”: “..12 digit UID ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”,

        “dob”: “.. dob ..”

    }

}

data Object details when POA is Passport

PropertyData typeExample values
typeEnum String (Required)“passport”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
passportNumberString (Required)Passport number
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
birthDateString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
pincodeString (Required), valid PincodePincode
issueDateString (Required) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Required) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “corrAddressProof”,

    “data”: {

        “type”: “passport”,

        “name”: “.. name ..”,

        “birthDate”: “.. dob ..”,

        “issueDate”: “.. issueDate ..”,

        “expiryDate”: “.. expiryDate ..”,

        “passportNumber”: “.. passport number ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”

    }

}

data Object details when POA is Driving License

PropertyData typeExample values
typeEnum String (Required)“drivingLicence”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
numberString (Required)Driving License number on POA document
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode
issueDateString (Required) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Required) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “corrAddressProof”,

    “data”: {

        “type”: “drivingLicence”,

        “name”: “.. name ..”,

        “expiryDate”: “… expiryDate ..”,

        “number”: “.. DL number ..”,

        “dob”: “.. dob .. “,

        “issueDate”: “.. issueDate …”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”

    }

}

data Object details when POA is VoterId

PropertyData typeExample values
typeEnum String (Required)“voterId”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
epicNumberString (Required)VoterId number on POA document
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “corrAddressProof”,

    “data”: {

        “type”: “voterId”,

        “epicNumber”: “.. voterId number ..”,

        “name”: “.. name ..”,

        “dob”: “.. dob ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “pincode”: “.. pincode ..”

    }

}

data Object details when POA is Offline Aadhaar

PropertyData typeExample values
typeEnum String (Required)“aadhaarXml”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
uidString (Required), string of 8 zeros followed by 4 digitsAadhaar number
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
generationDateTimeString (Required) ,concat the generationDate and generationTimeGeneration date and time on POA document
dateDifferenceNumber (Required) ,dateDiffencedateDifference on POA document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “corrAddressProof”,

    “data”: {

        “type”: “aadhaarXml”,

        “name”: “.. person name ..”,

        “uid”: “..12 digit UID ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”,

        “dob”: “.. dob ..”,

        “generationDateTime”: “..generationDate+generationTime..”,

        “dateDifference”: ..dateDifference..

    }

}

data Object details when POA is Aadhaar DigiLocker

PropertyData typeExample values
typeEnum String (Required)“aadhaarDigiLocker”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
uidString (Required), string of 8 zeros followed by 4 digitsAadhaar number
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “corrAddressProof”,

    “data”: {

        “type”: “aadhaarDigiLocker”,

        “name”: “.. person name ..”,

        “uid”: “..12 digit UID ..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”,

        “dob”: “.. dob ..”

    }

}

data Object details when POA is Driving License DigiLocker

PropertyData typeExample values
typeEnum String (Required)“dlDigiLocker”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
numberString (Required)Driving License number on POA document
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
pincodeString (Required), valid PincodePincode
issueDateString (Required) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Required) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “corrAddressProof”,

    “data”: {

        “type”: “dlDigiLocker”,

        “name”: “.. name ..”,

        “expiryDate”: “… expiryDate ..”,

        “number”: “.. DL number ..”,

        “dob”: “.. dob .. “,

        “issueDate”: “.. issueDate …”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”

    }

}

data Object details when POA is Gas Bill

PropertyData typeExample values
typeEnum String (Required)“gasBill”
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
numberString (Required)Gas Bill number
dobString (Optional) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
pincodeString (Required), valid PincodePincode
issueDateString (Optional) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
imagesURL String (Required)URL of document image

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “corrAddressProof”,

    “data”: {

        “type”: “gasBill”,

        “name”: “.. person name ..”,

        “number”: “..document number..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”,

        “dob”: “.. dob ..”,

        “issueDate”: “.. issue date ..”,

        “images”: “.. image url ..”

    }

}

data Object details when other POA document

PropertyData typeExample values
typeEnum String (Required)‘passbook’ / ‘bankStatement’ / ‘dematStatement’ / ‘rationCard’ / ‘salesAgreement’ / ‘telephoneBill’ / ‘electricityBill’ / ‘snecCertificate’ / ‘flatMaintenanceBill’ / ‘insuranceCopy’ / ‘selfDeclaration’ / ‘powerOfAttorney’ / ‘commercialBankProof’ / ‘legislativeaddressProof’ / ‘parliamentAddressProof’ / ‘govtAddressProof’ / ‘notaryAddressProof’ / ‘gazettedOfficerAddressProof’ / ‘govtIdCard’ / ‘statutoryIdCard’ / ‘psuIdCard’ / ‘commercialBankIdCard’ / ‘finanicalIdCard’ / ‘collegeIdCard’ / ‘professionalBodyIdCard’ / ‘nregaJobCard’ / ‘others’
nameString (Required) ,string of min length of 2 consisting of any characterName on POA document
numberString (Required)Gas Bill number
dobString (Optional) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POA document
pincodeString (Required), valid PincodePincode
issueDateString (Optional) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Optional) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document
addressString (Required)Address as on POA document
cityEnum String (Required)City as on POA document
stateEnum String (Required)State as on POA document, Refer 1st column of Table 1.7
districtString (Required)District as on POA document
imagesURL String (Required)URL of document image

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “corrAddressProof”,

    “data”: {

        “type”: “gasBill”,

        “name”: “.. person name ..”,

        “number”: “..document number..”,

        “address”: “.. address ..”,

        “city”: “.. city ..”,

        “state”: “.. state ..”,

        “district”: “.. district ..”,

        “pincode”: “.. pincode ..”,

        “dob”: “.. dob ..”,

        “issueDate”: “.. issue date ..”,

        “expiryDate”: “.. expiry date ..”,

        “images”: “.. image url ..”

    }

}

Incase Communication address Proof is same as Permanent Address Proof

data Object details when Communication Address Proof is same as Permanent Address Proof

PropertyData typeExample values
sameAsPermanentEnum String (Required)“true”

{

    “merchantId”: “.. merchantId ..”,

    “save”: “formData”,

    “type”: “corrAddressProof”,

    “data”: {

        “sameAsPermanent”: “true”

    }

}

Expected output

{

    “object”: “Updated Successfully”

}

Update form Address userForensics

Update forensics of form updation, must be ideally called after every step(identity / bankaccount / address / documents /fatca / signature / photo / video / contract) of the onboarding flow is complete inorder to collect user forensics corresponding the step

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
saveEnum String (*Required)“formData”
typeEnum String (*Required)“userForensics”
dataObject (*Required)forensics data payload
–typeEnum String (*Required)“usersData”
–userDataObject (*Required)contains forensics data grouped by steps (identity / bankaccount / address / documents /fatca / signature / photo / video / contract) in the onboarding flow

UserForensics object has 3 top level entries i.e geoLocationData, browserData, pageName, the description of userForensics object are as follows:

PropertyData typeExample values
geoLocationDataObject (Optional)Object as feteched from https://ipapi.co/jsonp
pageNameEnum String (Optional)corresponding page’s name (identity / bankaccount / address / documents /fatca / signature / photo / video / contract)
browserDataObject (Optional)Details about browser used
–browserNameString (Optional)Name of browser (can be extracted from browser’s global navigator.userAgent Object)
–cookieEnabledString (Optional)whether cookie is enabled (source : navigator.cookieEnabled)
–browserLanguageString (Optional)Language of browser (source : navigator.language)
–osString (Optional)OS, browser is running on (source: navigator.platform)
–userAgentString (Optional)User Agent of browser (source: navigator.userAgent)
–pluginsInstalledArray of strings (Optional)List if plugin names in browser (source: navigator.plugins)
–browserVersionString (Optional)Version of browser (can be extracted from navigator.userAgent)
–screenWidthString (Optional)Screen width of browser (can be extracted from browser’s global screen Object)
–screenHeightString (Optional)Screen height of browser (can be extracted from browser’s global screen Object)
–screenPixelDepthString (Optional)Screen pixel depth of browser (can be extracted from browser’s global screen Object)
–screenColorDepthString (Optional)Screen color depth of browser (can be extracted from browser’s global screen Object)
–signzyPlatformUsedEnum String (Optional)‘Mobile’ / ‘Desktop’
–userLatDecimal (Optional)Geolocation lattitude
–userLongDecimal (Optional)Geolocation Logitude
–deviceInfoObject (Optional)Browser Info as fetched from https://wurfl.io/wurfl.js

{

    “merchantId”: “…….”,

    “save”: “formData”,

    “type”: “userForensics”,

    “data”: {

        “type”: “usersData”,

        “userData”: {

            “identity”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…..”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “……”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “address”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “bankaccount”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            }

        }

    }

}

Expected output

{

    “object”: “Updated Successfully”

}

Cancelled cheque execute

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“identity”
– typeEnum String (Required)“cheque”
– taskEnum String (Required)“autoRecognition”
– dataObject (Required)payload
—- imagesArray (Required) array of length 1 containing valid URLAn array of image URLs of the ID card, front and back in order. In case of PAN, pass URL of front Image and in case of Driving License pass URLs of either front or both sides of images.
—- proofTypeEnum String (Required)“cheque”

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “identity”,

        “type”: “cheque”,

        “task”: “autoRecognition”,

        “data”: {

            “images”: [“..direct url of the images one side or two sides ..”],

            “toVerifyData”: {},

            “searchParam”: {},

            “proofType”: “cheque”

        }

    }

}

Expected output

{

    “object”: {

        “result”: {

            “address”: “…….”,

            “ifsc”: “…….”,

            “accountNumber”: “…….”,

            “micrCode”: “…….”,

            “contact”: “…….”,

            “name”: “…….”,

            “splitAddress”: {

                “district”: [

                    “…..”

                ],

                “state”: [

                    [

                        “…..”,

                        “…..”

                    ]

                ],

                “city”: [

                    “…..”

                ],

                “pincode”: “…….”,

                “country”: [

                    “…..”,

                    “…..”,

                    “…..”

                ],

                “addressLine”: “…….”

            },

            “pincode”: “…….”

        }

    }

}

Update form cancelled cheque

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
saveString (Required)“formData”
typeString (Required)“bankAccount”
dataObject (Required)payload, see below for details

data Object details

PropertyData typeExample values
accountNumberString (Required) ,string of min length of 9 and max length 18 consisting of any digitAccount number on cancelled cheque document
nameString (Optional), string of min length of 2 consisting of any digitName of acc. holder
ifscString (Required), alphanumeric string of length 11IFSC code
contactString (Optional) ,valid 10 digit mobile numberMobile number
micrCodeString (Optional)Micr code on cancelled cheque
addressString (Optional)Address

{

   “merchantId”:”…”,

   “save”:”formData”,

   “type”:”bankAccount”,

   “data”:{

      “accountNumber”:”…”,

      “ifsc”:”…”,

      “micrCode”:”….”,

      “contact”:”…”,

      “name”:”…”,

      “address”: “…”

   }

}

Expected output

{

    “object”:”Updated successfully”

}

Bank account penny transfer

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“nonRoc”
– typeEnum String (Required)“bankaccountverifications”
– taskEnum String (Required)“bankTransfer”
– dataObject (Required)payload
—- searchParamObject (Required)see below for details

searchParam Object details

PropertyData typeExample values
beneficiaryAccountString (Required) ,string of min length of 9 and max length 18 consisting of any digitAccount number
beneficiaryIFSCString (Required), alphanumeric string of length 11IFSC code
beneficiaryMobileString (Optional) ,valid 10 digit mobile numberMobile number
beneficiaryNameString (Optional), string of min length of 2 consisting of any characterBenificiary Name

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “nonRoc”,

        “type”: “bankaccountverifications”,

        “task”: “bankTransfer”,

        “data”: {

            “images”: [],

            “toVerifyData”: {},

            “searchParam”: {

                “beneficiaryAccount”: “…….”,

                “beneficiaryIFSC”: “…….”,

                “beneficiaryName”:”……”,

                “beneficiaryMobile”:”……”

            }

        }

    }

}

Expected output

{

    “object”: {

        “result”: {

            “active”: “…….”,

            “nameMatch”: “…….”,

            “mobileMatch”: “…….”,

            “signzyReferenceId”: “…….”,

            “auditTrail”: {

                “nature”: “…….”,

                “value”: “…….”,

                “timestamp”: “…….”

            }

        }

    }

}

Execute verify bank account verifyAccount

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“nonRoc”
– typeEnum String (Required)“bankaccountverifications”
– taskEnum String (Required)“verifyAmount”
– dataObject (Required)payload
—- searchParamObject (Required)see below for details

searchParam Object details

PropertyData typeExample values
amountPositive Number (Required)Amount transferred from previous (Penny transfer) execute API call
signzyIdString (Required), alphanumeric string of length 51 or 52signzyReferenceId from Penny transfer API call’s response

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “nonRoc”,

        “type”: “bankaccountverifications”,

        “task”: “verifyAmount”,

        “data”: {

            “images”: [],

            “toVerifyData”: {},

            “searchParam”: {

                “amount”: “…….”,

                “signzyId”: “…….”

            }

        }

    }

}

Expected output

{

    “object”: {

        “result”: {

            “amountMatch”: “false | true”,

            “ownerName”: “…….”,

            “mobile”: “…….”,

            “mmid”: “…….”

        }

    }

}

Update form UserForensics after penny transfer verification

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

All field descriptions and respective validations are same as in the previously documented Userforensics update call

{

    “merchantId”: “…….”,

    “save”: “formData”,

    “type”: “userForensics”,

    “data”: {

        “type”: “usersData”,

        “userData”: {

            “identity”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “address”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “bankaccount”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “documents”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            }

        }

    }

}

Expected output

{

    “object”: “Updated Successfully”

}

Update form call for FORMS section

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required), alphanumeric string of length 24userId from investor login response field
saveEnum String (Required)“formData”
typeEnum String (Required)“kycdata”
dataObject (Required)payload
–typeEnum String (Required)“kycdata”
–kycDataObject(Required)KYC data payload
—-genderEnum String (Required)investor’s Gender values: “F” / “M” / “T” for Female, Male, Transgender
—-maritalStatusEnum String (Required)investor’s marital status, values: “MARRIED” / “UNMARRIED” / “OTHERS”
—-emailIdString (Required) valid Email IdEmail Id of Investor
—-annualIncomeEnum String (Optional), valid as per code in table 1.8Annual Income code (Refer Table 1.8)
—-nomineeRelationShipEnum String (Required)Pass either “FATHER” or “SPOUSE”, accordingly pass the name in “fatherName”
—-fatherNameString (Required), string of min length of 2 consisting of any characterPass the Father or Spouse name
—-fatherTitleEnum String (Required)Pass the title of Father or Spouse, possible values “Mr.” / “Mrs.”
—-maidenNameString (Optional), string of min length of 2 consisting of any charactermaiden name of investor provided investor is a Female
—-maidenTitleEnum String (Optional)title for maiden name, values: “Mrs.” / “Ms.” / “Mx.”
—-motherNameString (Required), string of min length of 2 consisting of any characterInvestor mother name
—-motherTitleEnum String (Required)Investor mother Title, values: “Mrs.” / “Ms.” / “Mx.”
—-panNumberString (Required), valid Pan Number or incase of PAN EXEMPT cases for CVL KRA, generate an alphanumeric string of 10 characters which should begin with EXPHInvestors PAN number or incase of PAN EXEMPT cases for CVL KRA pass EXPH****** or incase of CAMS KRA pass PANEXEMPT
—-cvlExemptCodeString (Required incase of PAN EXEMPT cases for CVL KRA), valid as per code in table 1.9PAN EXEMPT code (Refer Table 1.9)
—-cvlExemptDescriptionString (Required incase of PAN EXEMPT cases for CVL KRA), valid as per description in table 1.9PAN EXEMPT category (Refer Table 1.9)
—-aadhaarNumberString (Optional), string of 8 zeros followed by 4 digitsInvestor Aadhaar number
—-citizenshipCountryCodeEnum String (Required)Citizenship country code (Refer Table 1.1)
—-citizenshipCountryString (Required)Citizenship country (Refer Table 1.1)
—-residentialStatusString(Required)Investor’s residential status, values: “Resident Individual” / “Foreign National” / “Person of Indian Origin”
—-occupationCodeEnum String(Required)Occupation Code (Refer Table 1.3)
—-occupationDescriptionString(Required)Occupation Description (Refer Table 1.3)
—-occupationOtherString(Required in case of CVL KRA if Occupation Code is 99).String of 50 characters
—-countryCodeNumber(Required)Country code of mobile number
—-mobileNumberString(Required), valid 10 digit mobile numberMobile number
—-permanentAddressCodeEnum String(Required), valid as per code in table 1.6Permanent Address code (Refer Table 1.6)
—-permanentAddressTypeString(Required)Permanent Address Type (Refer Table 1.6)
—-communicationAddressCodeEnum String(Required), valid as per code in table 1.6Communication Address code (Refer Table 1.6)
—-communicationAddressTypeString(Required)Communication Address Type (Refer Table 1.6)
—-applicationStatusCodeEnum String(Required), valid as per code in table 1.5Application status code, (Refer Table 1.5)
—-applicationStatusDescriptionString (Required)Application status description, (Refer Table 1.5)
—-kycAccountCodeEnum String(Required), valid as per code in table 1.4KYC account code, (Refer Table 1.4)
—-kycAccountDescriptionString (Required)KYC account Description, (Refer Table 1.4)
—-placeOfBirthString(Optional), string of min length of 2 consisting of any characterPlace of Brith

{

    “merchantId”: “…….”,

    “save”: “formData”,

    “type”: “kycdata”,

    “data”: {

        “type”: “kycdata”,

        “kycData”: {

            “gender”: “…….”,

            “maritalStatus”: “…….”,

            “nomineeRelationShip”: “…….”,

            “fatherTitle”: “…….”,

            “maidenTitle”: “…….”,

            “maidenName”: “…….”,

            “panNumber”: “…….”,

            “aadhaarNumber”: “…….”,

            “motherTitle”: “…….”,

            “residentialStatus”: “…….”,

            “occupationDescription”: “…….”,

            “occupationCode”: “…….”,

            “kycAccountCode”: “…….”,

            “kycAccountDescription”: “…….”,

            “communicationAddressCode”: “…….”,

            “communicationAddressType”: “…….”,

            “permanentAddressCode”: “…….”,

            “permanentAddressType”: “…….”,

            “citizenshipCountryCode”: “…….”,

            “citizenshipCountry”: “…….”,

            “applicationStatusCode”: “…….”,

            “applicationStatusDescription”: “…….”,

            “mobileNumber”: “…….”,

            “countryCode”: 91,

            “emailId”: “…….”,

            “fatherName”: “…….”,

            “motherName”: “…….”,

            “placeOfBirth”: “… placeOfBirth ..”,

            “annualIncome”: “.. annualIncome ..”

        }

    }

}

Expected output

{

    “object”: “Updated Successfully”

}

Execute Related Person’s POI (incase Related Person is Applicable)

Extraction API for Related Person’s POI documents

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response
inputDataObject (Required)Metadata along with actual payload to be executed upon
– serviceEnum String (Required)“relatedIdentity”
– typeEnum String (Required)“individualPan” / “aadhaar” / “passport” / “drivingLicence” / “voterid”
– taskEnum String (Required)“autoRecognition”
– dataObject (Required)payload
—- imagesArray (Required) array of length 2(incase of ‘aadhaar’, ‘voterid’, ‘passport’), length 1 (incase of PAN) and, length 1 or 2 (incase of DL) with valid URLs.An array of image URLs of the ID card, front and back in order. In case of PAN, pass URL of front Image and in case of Driving License pass URLs of either front or both sides of images.
—- proofTypeEnum String (Required)“identity”

{

    “merchantId”: “…….”,

    “inputData”: {

        “service”: “…….”,

        “type”: “…….”,

        “task”: “…….”,

        “data”: {

            “images”: [“..direct url of the images of one side(incase of driving licence and PAN ) or two sides (for others) ..”],

            “toVerifyData”: {},

            “searchParam”: {},

            “proofType”: “identity”

        }

    }

}

Expected output

Incase of PAN Card card

{

    “object”: {

        “result”: {

            “name”: “Name as on card”,

            “fatherName”: “Father’s name as on card”,

            “dob”: “DOB as on card”,

            “number”: “number as on card”

        }

    }

}

Incase of Aadhar card

{

    “object”: {

        “result”: {

            “uid”: “…00000000XXXX….masked first eight digit…”,

            “vid”: “…virtual UID…”,

            “name”: “…name on id card…”,

            “yob”: “…year of birth…”,

            “dob”: “…date of birth…”,

            “pincode”: “…pincode…”,

            “address”: “…address as on card…”,

            “gender”: “male/female”,

            “splitAddress”: {

                “district”: [],

                “state”: [

                    []

                ],

                “city”: [],

                “pincode”: ” “,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “”

            },

            “uidHash”: “Secure Cryptographic conversion of UID”

        }

    }

}

Incase of Driving License

{

    “object”: {

        “result”: {

            “issueDate”: “date-of-issue”,

            “dob”: “dob”,

            “expiryDate”: “date-of-expiry”,

            “name”: “name”,

            “number”: “dl number”,

            “guardianName”: “name of guardian”,

            “address”: “address”,

            “splitAddress”: {

                “state”: [

                    []

                ],

                “district”: [],

                “city”: [],

                “pincode”: “…pincode…”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “…addressLine…”

            },

            “dlType”: [“array-of-vehicle-class”]

        }

    }

}

Incase of Passport

{

    “object”: {

        “result”: {

            “parentsGuardianName”: “..parentsGuardianName…”,

            “issueDate”: “..issueDate..”,

            “expiryDate”: “..expiryDate..”,

            “birthDate”: “..birthDate..”,

            “name”: “..name..”,

            “country”: [

                “..country..”

            ],

            “nationality”: “..nationality..”,

            “sex”: “F/M”,

            “address”: “..address..”,

            “pincode”: “..pincode..”,

            “passportNumber”: “..passportNumber..”,

            “fileNumber”: “..fileNumber..”,

            “placeOfBirth”: “..placeOfBirth..”,

            “placeOfIssue”: “..placeOfIssue..”,

            “splitAddress”: {

                “district”: [

                    “..district..”

                ],

                “state”: [

                    [

                        “..state..”

                    ]

                ],

                “city”: [

                    “..city..”

                ],

                “pincode”: “..pincode..”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “..addressLine..”

            }

        }

    }

}

Incase of VoterId

{

    “object”: {

        “result”: {

            “epicNumber”: “…epic number…”,

            “name”: “…name…”,

            “fatherName”: “…father name…”,

            “state”: “…state name…”,

            “dob”: “…date of birth…”,

            “yob”: “…year of birth…”,

            “ageAsOn”: “…age in year…”,

            “address”: “…address found on card…”,

            “splitAddress”: {

                “district”: [

                    “…name of district…”

                ],

                “state”: [

                    [

                        “…name of state…”,

                        “WB”

                    ]

                ],

                “city”: [

                    “…name of the city…”

                ],

                “pincode”: “…pincode of the city…”,

                “country”: [

                    “IN”,

                    “IND”,

                    “INDIA”

                ],

                “addressLine”: “…address line on the card…”

            }

        }

    }

}

Update Fatca Form

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required), alphanumeric string of length 24userId from investor login response field
saveEnum String (Required)“formData”
typeEnum String (Required)“fatca”
dataObject (Required)payload
–typeEnum String (Required)“fatca”
–fatcaDataObject (Required)fatca data
—-pepEnum String (Required)whether a ‘politically exposed person’ values: “YES” / “NO”
—-rpepEnum String (Required)whether a ‘related to a politically exposed person’ values: “YES” / “NO”
—-residentForTaxInIndiaEnum String (Required)whether a ‘resident outside of India’ values: “YES” / “NO”
—-countryCodeJurisdictionResidenceEnum String (Optional)Country of Jurisdiction of Residence code (Refer Table 1.1), to be provided given “residentForTaxInIndia” is “YES”
—-countryJurisdictionResidenceString(Optional)Country of Jurisdiction of Residence (Refer Table 1.1), to be provided given “residentForTaxInIndia” is “YES”
—-taxIdentificationNumberString(Optional)Tax Identification Number, to be provided given “residentForTaxInIndia” is “YES”
—-placeOfBirthString(Optional)Place of Birth, to be provided given “residentForTaxInIndia” is “YES”
—-countryCodeOfBirthEnum String(Optional)Country code of birth (Refer Table 1.1), to be provided given “residentForTaxInIndia” is “YES”
—-countryOfBirthString(Optional)Country of birth (Refer Table 1.1), to be provided given “residentForTaxInIndia” is “YES”
—-addressTypeString(Optional)Type of fatca address , values: “correspondence” / “others”, to be provided given “residentForTaxInIndia” is “YES”
—-addressCityString(Optional)Fatca address city, to be provided given “residentForTaxInIndia” is “YES”
—-addressDistrictString (Optional)Fatca address district, to be provided given “residentForTaxInIndia” is “YES”
—-addressStateCodeEnum String(Optional)Fatca address state code (Refer Table 1.2), to be provided given “residentForTaxInIndia” is “YES”
—-addressStateString(Optional)Fatca address State (Refer Table 1.2), to be provided given “residentForTaxInIndia” is “YES”
—-addressCountryCodeEnum String(Optional)Fatca address Country code (Refer Table 1.1), to be provided given “residentForTaxInIndia” is “YES”
—-addressCountryString(Optional)Fatca address country (Refer Table 1.1), to be provided given “residentForTaxInIndia” is “YES”
—-addressPincodeString(Optional), valid PincodeFatca address Pincode, to be provided given “residentForTaxInIndia” is “YES”
—-addressString(Optional)Fatca address, to be provided given “residentForTaxInIndia” is “YES”
—-relatedPersonEnum String(Optional)whether a related person to investor or investor themselves, values: “YES” / “NO”
—-relatedPersonTypeEnum String(Optional)Type of related person, values: “1” / “2” / “3” for “Guardian of a Minor”, “Assignee”, “Authorised Representative” respectively, Required if related person is applicable (relatedPerson is “YES”)
—-relatedPersonKycNumberExistsEnum String(Optional)whether related person has a KYC number, values: “YES” / “NO”, Required if related person is applicable (relatedPerson is “YES”)
—-relatedPersonKycNumberString (Optional), valid Kyc numberKYC number of related person (Required if relatedPersonKycNumberExists is “YES”)
—-relatedPersonTitleStringRelated Person Title, values: “Mr.”/ “Mrs.” / “Ms.” / “Mx.”, Required if related person is applicable (relatedPerson is “YES”)
—-relatedPersonNameStringName of related person, Required if related person is applicable (relatedPerson is “YES”)
—-relatedPersonIdentityProofObjectRequired if related person is applicable(relatedPerson is “YES”), see below for details
—-relatedPersonIdentityProofTypeEnum String(Optional)Type of related persons ID proof, values: “individualPan” / “aadhaar” / “passport” / “drivingLicence” / “voterId”, Required if related person is applicable (relatedPerson is “YES”)

relatedPersonIdentityProof Object details when Related Person’s POI is PAN

PropertyData typeExample values
typeEnum String (Required)“individualPan”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document
numberString (Required) ,valid PAN numberPAN number on POI document
fatherNameString (Required) ,string of min length of 2 consisting of any characterPAN number on POI document

relatedPersonIdentityProof Object details when Related Person’s POI is Aadhaar

PropertyData typeExample values
typeEnum String (Required)“aadhaar”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
uidString (Required), string of 8 zeros followed by 4 digitsAadhaar number
addressString (Required)Address as on POI document
cityEnum String (Required)City as on POI document
stateEnum String (Required)State as on POI document, Refer 1st column of Table 1.7
districtString (Required)District as on POI document
pincodeString (Required), valid PincodePincode
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document

relatedPersonIdentityProof Object details when Related Person’s POI is Passport

PropertyData typeExample values
typeEnum String (Required)“passport”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
passportNumberString (Required)Passport number
addressString (Required)Address as on POI document
cityEnum String (Required)City as on POI document
stateEnum String (Required)State as on POI document, Refer 1st column of Table 1.7
districtString (Required)District as on POI document
birthDateString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document
pincodeString (Required), valid PincodePincode
issueDateString (Required) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Required) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document

relatedPersonIdentityProof Object details when Related Person’s POI is Driving License

PropertyData typeExample values
typeEnum String (Required)“drivingLicence”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document
numberString (Required)Driving License number on POI document
addressString (Required)Address as on POI document
cityEnum String (Required)City as on POI document
stateEnum String (Required)State as on POI document, Refer 1st column of Table 1.7
districtString (Required)District as on POI document
pincodeString (Required), valid PincodePincode
issueDateString (Required) ,Issue Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a past DateIssue date on the document
expiryDateString (Required) ,Expiry Date as string in DD/MM/YYYY or DD-MM-YYYY format, should be a future DateExpiry date on the document

relatedPersonIdentityProof Object details when Related Person’s POI is VoterId

PropertyData typeExample values
typeEnum String (Required)“voterId”
nameString (Required) ,string of min length of 2 consisting of any characterName on POI document
dobString (Required) ,date of birth as string in DD/MM/YYYY or DD-MM-YYYY formatDOB on POI document
epicNumberString (Required)VoterId number on POI document
addressString (Required)Address as on POI document
cityEnum String (Required)City as on POI document
stateEnum String (Required)State as on POI document, Refer 1st column of Table 1.7
districtString (Required)District as on POI document
pincodeString (Required), valid PincodePincode

{

   “merchantId”:”…”,

   “save”:”formData”,

   “type”:”fatca”,

   “data”:{

      “type”:”fatca”,

      “fatcaData”:{

         “pep”:”…”,

         “rpep”:”…”,

         “residentForTaxInIndia”:”…”,

         “relatedPerson”:”…”,

         “addressType”:”…”,

         “countryCodeJurisdictionResidence”:”…”,

         “countryJurisdictionResidence”:”…”,

         “taxIdentificationNumber”:”…”,

         “placeOfBirth”:”…”,

         “countryCodeOfBirth”:”…”,

         “countryOfBirth”:”…”,

         “addressCity”:”…”,

         “addressDistrict”:”…”,

         “addressStateCode”:”…”,

         “addressState”:”… …”,

         “addressCountryCode”:”…”,

         “addressCountry”:”…”,

         “addressPincode”: “543534”,

         “address”:”…”,

         “relatedPersonType”:”…”,

         “relatedPersonKycNumber”:”44354355″,

         “relatedPersonKycNumberExists”:”…”,

         “relatedPersonTitle”:”….”,

         “relatedPersonIdentityProof”:{

            “name”:”….”,

            “fatherName”:”…”,

            “dob”:”…”,

            “number”:”…”

         },

         “relatedPersonName”:”…”,

         “relatedPersonIdentityProofType”:”…”

      }

   }

}

Expected output

{

    “object”: “Updated Successfully”

}

Update Form Signature

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
saveString (Required)“formData”
typeString (Required)“signature”
dataObject (Required)payload
–typeEnum String (Required)“signature”
–signatureImageUrlString (Required) ,valid URLSignature Image URL
–consentEnum String(Optional)Whether the signature to be linked with investor email ID for future purposes. Value : “true” / “false”

{

   “merchantId”:”.. merchantId ..”,

   “save”:”formData”,

   “type”:”signature”,

   “data”:{

      “type”:”signature”,

      “signatureImageUrl”:”.. signatureImageUrl ..”,

      “consent”:”true”

   }

}

Output

{

    “object”:”Updated successfully”

}

Update Form Photo

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
saveString (Required)“formData”
typeString (Required)“userPhoto”
dataObject (Required)payload
–photoUrlString (Required) ,valid URLUser Photo URL

{

   “merchantId”:”.. merchantId ..”,

   “save”:”formData”,

   “type”:”userPhoto”,

   “data”:{

      “photoUrl”:”.. photo URL ..”

   }

}

Output

{

    “object”:”Updated successfully”

}

Execute to start video verification

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
inputDataObject (Required)payload
–serviceEnum String (Required)“video”
–typeEnum String (Required)“video”
–taskEnum String (Required)“start”

{

   “merchantId”:”.. merchantId ..”,

   “inputData”:{

      “service”:”video”,

      “type”:”video”,

      “task”:”start”,

      “data”:{}

   }

}

Expected output

{

    “object”: [{

        “transactionId”: “…….”,

        “randNumber”: “…….”

    }]

}

Execute recorded video

Note: Acceptable format : .mp4 format with video encoding of H264 and audio encoding of AAC (Advanced Audio Coding)

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
inputDataObject (Required)payload
–serviceEnum String (Required)“video”
–typeEnum String (Required)“video”
–taskEnum String (Required)“verify”
–dataObject(Required)payload containing video details
—-videoURL String (Required)Video URL
—-snapshotURL String (Optional)Image URL of snapshot from video containing user’s face
—-transactionIdString (Required), must be an alphanumeric string of length 30transaction Id received in start video API call
—-matchImageURL String (Required)URL of POI Image containg user Photo
—-secondsArray of moment strings at which face was detected in the video” (Optional), must contain moments in valid format, example : “00:00:08”Array of moment strings at which face was detected in the video” (Optional), must contain moments in valid format details
—-typeEnum String (Required)“video”

{

   “merchantId”:”.. merchantId ..”,

   “inputData”:{

      “service”:”video”,

      “type”:”video”,

      “task”:”verify”,

      “data”:{

         “video”:”.. video URL ..”,

         “transactionId”:”.. transactionId ..”,

         “matchImage”:”.. URL of POI Image containg user Photo ..”,

         “seconds”:[

            “00:00:02”,

            “00:00:04”,

            “00:00:06”,

            “00:00:08”

         ],

         “type”:”video”

      }

   }

}

Expected output

{

    “object”: {

        “n”: 1,

        “nModified”: 1,

        “ok”: 1

    }

}

Execute user forensics after video verification

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

All field descriptions and respective validations are same as in the previously documented Userforensics update call

{

    “merchantId”: “…….”,

    “save”: “formData”,

    “type”: “userForensics”,

    “data”: {

        “type”: “usersData”,

        “userData”: {

            “identity”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “address”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “bankaccount”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “documents”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “contract”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            }

        }

    }

}

Expected output

{

    “object”: “…….”

}

Create Contract PDF URL

Creates a PDF which captures all details filled while onboarding.

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
inputDataObject (Required)payload
–serviceEnum String (Required)“esign”
–taskEnum String (Required)“createPdf”

{

   “merchantId”:”.. merchant ID ..”,

   “inputData”:{

      “service”:”esign”,

      “type”:””,

      “task”:”createPdf”,

      “data”:{

      }

   }

}

Expected output

{

   “object”:{

      “result”:{

         “combinedPdf”:”.. Unsigned PDF contract URL ..”

      }

   }

}

Generate Aadhaar Esign URL

Generate Aadhaar Esign URL to sign the Contract.

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
inputDataObject (Required)payload
–serviceEnum String (Required)“esign”
–taskEnum String (Required)“createEsignUrl”
–dataObject (Required)payload
—-inputFileURL String (Required)Unsigned PDF contract URL (response from Create Contract PDF URL)
—-signatureTypeENUM Sting (Required)“aadhaaresign”
—-redirectUrlENUM Sting (optional)“redirect URL”
—-redirectTimenumber Integer (optional)“redirect time in seconds”
—-eventCallbackUrlURL String (Optional)Callback on events of success and failure
—-eventCallbackHeadersObject (Optional)In case of any headers needs to be passed for the eventCallbackUrl

{

    “merchantId”:”.. merchant ID ..”,

    “inputData”:{

        “service”: “esign”,

        “type”: “”,

        “task”: “createEsignUrl”,

        “data”: {

            “inputFile”: “.. Unsigned PDF contract URL ..”,

            “signatureType”: “aadhaaresign”,

            “redirectUrl”: “.. redirect URL ..”,

            “redirectTime”: “.. redirect time in seconds ..”,

            “eventCallbackUrl”: “.. event Callback Url ..”,

            “eventCallbackHeaders”: { 

                ” ..key.. “:”.. value ..”

            }

        }

    }

}

Expected output

{

    “object”: {

        “task”: “url”,

        “id”: “….”,

        “customerId”: “….”,

        “inputFile”: “..inputUrl..”,

        “signatureType”: “aadhaaresign”,

        “multiPages”: “true”,

        “name”: “..name..”,

        “showSignatureConsent”: “…”,

        “email”: “…emailId…”,

        “redirectUrl”: “… redirect Url …”,

        “createSignatureOptions”: [],

        “result”: {

            “token”: “..token..”,

            “isUsed”: 1,

            “url”: “..Aadhaar Esign Url…”,

            “uid”: “”,

            “inputFile”: “..inputUrl..”,

            “email”: “…emailId…”,

            “redirectUrl”: “… redirect Url …”,

            “createSignatureOptions”: [],

            “signatureType”: “aadhaaresign”,

            “name”: “..name..”,

            “showSignatureConsent”: “…”,

            “scaleSignature”: “…”,

            “selectPage”: 1,

            “signaturePosition”: “Bottom-Right”,

            “pageNo”: 1

        }

    }

}

Save Aadhaar Esign Signed PDF

Save the Aadhaar Esign signed PDF.

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
inputDataObject (Required)payload
–serviceEnum String (Required)“esign”
–taskEnum String (Required)“getEsignData”

{

    “merchantId”:”.. merchant ID ..”,

    “inputData”:{

        “service”: “esign”,

        “type”: “”,

        “task”: “getEsignData”,

        “data”:{

        }

    }

}

Expected output

{

    “object”: {

        “customerId”: “..”,

        “token”: “…”,

        “id”: 2341,

        “result”: {

            “token”: “…”,

            “isUsed”: 0,

            “url”: “.. Unsigned PDF contract URL ..”,

            “uid”: “”,

            “inputFile”: “..inputUrl..”,

            “email”: “…emailId…”,

            “createSignatureOptions”: [],

            “signatureType”: “aadhaaresign”,

            “name”: “..name..”,

            “showSignatureConsent”: “…”,

            “scaleSignature”: “…”,

            “selectPage”: 1,

            “signaturePosition”: “Bottom-Right”,

            “pageNo”: 1

            “esignedFile”: “.. Signed PDF URL ..”,

            “signatureImage”: “”

        },

        “dscData”: { }

    }

}

Save Signed PDF (Normal Esign method only)

Saves Signed Contract PDF.

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
saveEnum String (Required)“esign”
dataObject (Required)payload
–signedPdfURL String (Required)Signed PDF URL

{

“merchantId”: “.. Merchant ID ..”,

“save”: “esign”,

“data”: {

    “signedPdf”: “.. Signed PDF URL ..”

    }

}

Expected output

{

    “object”: “Updated successfully”

}

Execute user forensics after contract

Endpoint

/api/onboardings/updateForm

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

{

    “merchantId”: “…….”,

    “save”: “formData”,

    “type”: “userForensics”,

    “data”: {

        “type”: “usersData”,

        “userData”: {

            “identity”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “address”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “bankaccount”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “documents”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “contract”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            },

            “thankyou”: {

                “geoLocationData”: {},

                “browserData”: {

                    “browserName”: “…….”,

                    “cookieEnabled”: “…….”,

                    “browserLanguage”: “…….”,

                    “os”: “…….”,

                    “userAgent”: “…….”,

                    “pluginsInstalled”: [“….”],

                    “browserVersion”: “…….”,

                    “screenWidth”: “…….”,

                    “screenHeight”: “…….”,

                    “screenPixelDepth”: “…….”,

                    “screenColorDepth”: “…….”,

                    “deviceInfo”: {

                        “complete_device_name”: “…….”,

                        “form_factor”: “…….”,

                        “is_mobile”: false

                    },

                    “signzyPlatformUsed”: “…….”,

                    “userLat”: 12.9833,

                    “userLong”: 77.5833

                },

                “pageName”: “…….”

            }

        }

    }

}

Expected output

{

    “object”: “…….”

}

Execute verification engine

Executes verification on existing Onboarding information and updates it with results from verification insights.

Data which is required as per the AMC will be validated in this API. Distributor will get the error if the complete and the correct data is not passed to the AMC.

Endpoint

/api/onboardings/execute

Headers

PropertyValue
Content-typeapplication/json
Authorization…access token… (alphanumeric string of length 64)

Input

PropertyData typeExample values
merchantIdString (Required) alphanumeric string of length 24userId from investor login response field
inputDataObject (Required)payload
–serviceEnum String (Required)“verificationEngine”
–merchantIdString (Required) alphanumeric string of length 24userId from investor login response field

{

    “merchantId”: “.. merchantId ..”,

    “inputData”: {

        “service”: “verificationEngine”,

        “merchantId”: “…….”

    }

}

Expected output

{

    “object”: “…….”

}

Pull onboarding detail

Endpoint

POST /api/onboardings/pullonboardings

Headers

PropertyValue
Content-typeapplication/json
Authorization…channel’s access token…

Input (for fetch by Onboarding status)

PropertyData typeExample values
channelIdStringChannel Id
limitLengthIntegerLimit to number of onboardings that are returned (helpful in pagination)
skipLengthIntegerSkip these many onboardings before generating the list of onboardings
statusStringStatus of onboarding wanted to be pulled (all/pending/accepted/rejected)

{

  “channelId”: “…channelId…”,

  “limitLength”: 10,

  “skipLength”: 0,

  “status” : “accepted”

}

Input (for fetch by Onboarding Id)

PropertyData typeExample values
channelIdStringChannel Id
onboardingIdStringOnboarding Id
extraFieldsArray(optional)ExtraFields required to be appended in response (Possible values : ‘CAMS’)

{

  “channelId”: “…channelId…”,

  “onboardingId”: “…onboardingId…”,

  “extraFields” : [“..cams..”]

}

Expected output

{

    “customerId”: “….”,

    “status”: “….”,

    “limitLength”: “….”,

    “skipLength”: “….”,

    “id”: 4,

    “instanceId”: “….”,

    “result”: [{

        “email”: “….”,

        “phone”: “….”,

        “name”: “….”,

        “username”: “….”,

        “customerId”: “….”,

        “merchantId”: “….”,

        “status”: “….”,

        “reason”: “….”,

        “verificationData”: {

            “idCards”: [{

                “type”: “….”,

                “purpose”: [

                    “POI”

                ],

                “name”: “….”,

                “idNo”: “….”,

                “dob”: “….”,

                “address”: “….”,

                “state”: “….”,

                “issueDate”: “….”,

                “images”: [

                    “….”

                ],

                “verificationStatus”: {

                    “verification”: true,

                    “message”: “….”,

                    “isSet”: 1

                },

                “faceExtraction”: {

                    “isSet”: 1

                }

            }, {

                “purpose”: [

                    “POA”

                ],

                “name”: “….”,

                “idNo”: “….”,

                “dob”: “….”,

                “address”: “….”,

                “state”: “….”,

                “issueDate”: “….”,

                “images”: [

                    “….”,

                    “….”

                ],

                “pincode”: “….”,

                “type”: “….”,

                “verificationStatus”: {

                    “isSet”: 1

                },

                “faceExtraction”: {

                    “cropped”: “….”,

                    “isSet”: 1

                }

            }],

            “documents”: [{

                “type”: “….”,

                “beneficiaryMobile”: “….”,

                “beneficiaryAccount”: “….”,

                “beneficiaryName”: “….”,

                “beneficiaryIFSC”: “….”,

                “images”: [

                    “….”

                ]

            }, {

                “type”: “….”,

                “beneficiaryMobile”: “….”,

                “beneficiaryAccount”: “….”,

                “beneficiaryName”: “….”,

                “beneficiaryIFSC”: “….”,

                “images”: [],

                “bankTransferOutput”: {

                    “active”: “….”,

                    “nameMatch”: “….”,

                    “mobileMatch”: “….”,

                    “signzyReferenceId”: “….”,

                    “auditTrail”: {

                        “nature”: “….”,

                        “value”: “….”,

                        “timestamp”: “….Z”

                    },

                    “bankTransfer”: {

                        “response”: “….”,

                        “bankRRN”: “….”,

                        “beneName”: “….”,

                        “beneMMID”: “….”,

                        “beneMobile”: “….”,

                        “beneIFSC”: “….9”

                    }

                },

                “verifyAmountOutput”: {

                    “amountMatch”: “….”,

                    “owerName”: “….”,

                    “mobile”: “….”,

                    “mmid”: “….1”

                }

            }],

            “video”: {

                “url”: “….”,

                “matchImage”: “….”,

                “signzyVerifiableString”: “….”,

                “seconds”: [

                    “00:00:02”,

                    “00:00:03”,

                    “00:00:04”

                ],

                “videoMatch”: {

                    “matchAudioScore”: “….”,

                    “isSet”: 1

                },

                “matchImageEla”: {

                    “task”: “….”,

                    “essentials”: {

                        “url”: “….”

                    },

                    “id”: “….”,

                    “patronId”: “….”,

                    “result”: “….”,

                    “isSet”: 1

                },

                “forensics”: {

                    “staticRisk”: {

                        “staticPhoto”: false,

                        “ageGroup”: “….”,

                        “isSet”: 1

                    },

                    “videoLandMarks”: {

                        “result”: “….”,

                        “isSet”: 1

                    },

                    “videoFaceMatch”: {

                        “videoImages”: [

                            “https://preproduction-persist.signzy.tech/api/files/64344/download/r2jhdPYWwVt3qgrEW6bbQA8EFML2QSyP7UNxzhlsnJbM2VC5kj.jpg”,

                            “https://preproduction-persist.signzy.tech/api/files/64345/download/BkENcX31h0HeVPqtPHUV7prEGOmSYjlznOI5sAlKrBy2ZGJgqn.jpg”,

                            “https://preproduction-persist.signzy.tech/api/files/64347/download/12KWSe9eJhh1Q517RaB4oz2SRXv3heFoaai9BM0ZzFPbAkOx4M.jpg”

                        ],

                        “finalMatchImage”: “….”,

                        “matchStatistics”: {

                            “coVariance”: “….”,

                            “matchPercentage”: “….%”

                        },

                        “isSet”: 1

                    },

                    “exif”: {

                        “metadataFound”: “….”,

                        “message”: “….”,

                        “image”: {},

                        “gps”: {},

                        “isSet”: 1

                    }

                },

                “faceLandmarks”: {

                    “result”: “….”,

                    “isSet”: 1

                }

            },

            “contract”: {

                “signedContract”: “….f”

            },

            “photo”: {},

            “fatca”: {

                “pep”: “….”,

                “rpep”: “….”,

                “residentForTaxInIndia”: “….”,

                “relatedPerson”: “….O”

            },

            “signature”: {

                “signatureImageUrl”: “….”

            },

            “formData”: {

                “gender”: “….”,

                “maritalStatus”: “….”,

                “nomineeRelationShip”: “….”,

                “maidenTitle”: “….”,

                “motherTitle”: “….”,

                “occupationType”: “….”,

                “maidenName”: “….”,

                “motherName”: “….”,

                “applicationStatus”: “….”,

                “countryCode”: 91,

                “emailId”: “….”,

                “pincode”: 560078,

                “kycAccountType”: “….”,

                “mobileNumber”: “….”,

                “communicationAddress”: “….”,

                “nomineeTitle”: “….”,

                “nomineeName”: “….A”,

                “annualIncome”: “… refer Table 1.8”,

                “placeOfBirth”: “….”

            },

            “info”: {

                “name”: “….”,

                “dob”: “….”,

                “emailId”: “….”,

                “phone”: “….”,

                “communicationAddress”: “….”,

                “permanentAddress”: “….”

            }

        },

        “formFilledData”: {

            “identityProof”: {

                “type”: “….”,

                “purpose”: [

                    “POI”

                ],

                “name”: “….”,

                “idNo”: “….”,

                “dob”: “….”,

                “expiryDate”: “….”,

                “verify”: “….”,

                “address”: “….”,

                “state”: “….”,

                “issueDate”: “….”,

                “images”: [

                    “….”

                ],

                “proofType”: “….f”

            },

            “addressProof”: [{

                “purpose”: [

                    “POA”

                ],

                “name”: “….”,

                “idNo”: “….”,

                “dob”: “….”,

                “verify”: “….”,

                “address”: “….”,

                “expiryDate”: “….”,

                “state”: “….”,

                “issueDate”: “….”,

                “addressType”: “….”,

                “proofType”: “….”,

                “images”: [

                    “….”,

                    “….”

                ],

                “pincode”: “….”,

                “type”: “….t”

            }],

            “bankAccount”: {

                “type”: “….”,

                “images”: [

                    “….”

                ]

            },

            “formFields”: {

                “gender”: “….”,

                “maritalStatus”: “….”,

                “nomineeRelationShip”: “….”,

                “maidenTitle”: “….”,

                “motherTitle”: “….”,

                “occupationType”: “….”,

                “maidenName”: “….”,

                “motherName”: “….”,

                “applicationStatus”: “….”,

                “countryCode”: 91,

                “emailId”: “….”,

                “pincode”: 560078,

                “kycAccountType”: “….”,

                “mobileNumber”: “….”,

                “communicationAddress”: “….”,

                “nomineeTitle”: “….”,

                “nomineeName”: “….A”,

                “annualIncome”: “.. refer Table 1.8”,

                “placeOfBirth”: “….”

            },

            “fatca”: {

                “pep”: “….”,

                “rpep”: “….”,

                “residentForTaxInIndia”: “….”,

                “relatedPerson”: “….O”

            },

            “signature”: {

                “signatureImageUrl”: “….”

            },

            “photo”: {},

            “video”: {

                “url”: “….”,

                “matchImage”: “….”,

                “signzyVerifiableString”: “….”,

                “seconds”: [

                    “00:00:02”,

                    “00:00:03”,

                    “00:00:04”

                ]

            },

            “contract”: {

                “signedContract”: “….f”

            }

        },

        “verificationResult”: {

            “idCards”: [{

                “status”: “….”,

                “type”: “….”,

                “purpose”: “….”,

                “number”: “….”,

                “businessFlag”: 0

            }, {

                “status”: “….”,

                “type”: “….”,

                “purpose”: “….”,

                “number”: “….”,

                “businessFlag”: 0

            }],

            “bankAccount”: “….”,

            “video”: “….”,

            “amlStatus”: “….”,

            “overalStatus”: “….y”

        }

    }, {

        “email”: “….”,

        “phone”: “….”,

        “name”: “….”,

        “username”: “….”,

        “customerId”: “….”,

        “merchantId”: “….”,

        “status”: “….”,

        “reason”: “….”,

        “verificationData”: {

            “idCards”: [],

            “documents”: [],

            “video”: {},

            “contract”: {},

            “photo”: {},

            “fatca”: {},

            “signature”: {},

            “formData”: {}

        },

        “formFilledData”: {

            “identityProof”: {},

            “addressProof”: [],

            “bankAccount”: {

                “type”: “….n”

            },

            “formFields”: {},

            “fatca”: {},

            “signature”: {},

            “photo”: {},

            “video”: {

                “url”: “….”,

                “matchImage”: “….”,

                “signzyVerifiableString”: “….”,

                “seconds”: “….”

            },

            “contract”: {}

        },

        “verificationResult”: {}

    }, {

        “email”: “….”,

        “phone”: “….”,

        “name”: “….”,

        “username”: “….”,

        “customerId”: “….”,

        “merchantId”: “….”,

        “status”: “….”,

        “reason”: “….”,

        “verificationData”: {

            “idCards”: [{

                “type”: “….”,

                “purpose”: [

                    “POI”

                ],

                “name”: “….”,

                “idNo”: “….”,

                “dob”: “….”,

                “address”: “….”,

                “state”: “….”,

                “issueDate”: “….”,

                “images”: [

                    “….”

                ],

                “verificationStatus”: {

                    “verified”: true,

                    “message”: “….”,

                    “upstreamName”: “….”,

                    “isSet”: 1

                },

                “faceExtraction”: {

                    “cropped”: “….”,

                    “isSet”: 1

                }

            }, {

                “purpose”: [

                    “POA”

                ],

                “name”: “….”,

                “idNo”: “….”,

                “dob”: “….”,

                “address”: “….”,

                “state”: “….”,

                “issueDate”: “….”,

                “images”: [

                    “….”

                ],

                “pincode”: “….”,

                “type”: “….”,

                “verificationStatus”: {

                    “message”: “….”,

                    “verified”: true,

                    “moreInfo”: {

                        “issueDate”: “….”,

                        “expiryDate”: “….”,

                        “vehicleClass”: [

                            “LMV”

                        ]

                    },

                    “instance”: {},

                    “isSet”: 1

                },

                “faceExtraction”: {

                    “cropped”: “….”,

                    “isSet”: 1

                }

            }],

            “documents”: [],

            “video”: {

                “url”: “….”,

                “matchImage”: “….”,

                “signzyVerifiableString”: “….”,

                “seconds”: [

                    “00:00:02”,

                    “00:00:04”,

                    “00:00:06”,

                    “00:00:08”

                ],

                “videoMatch”: {

                    “matchAudioScore”: “….”,

                    “isSet”: 1

                },

                “matchImageEla”: {

                    “task”: “….”,

                    “essentials”: {

                        “url”: “….”

                    },

                    “id”: “….”,

                    “patronId”: “….”,

                    “result”: “….”,

                    “isSet”: 1

                },

                “forensics”: {

                    “staticRisk”: {

                        “staticPhoto”: false,

                        “ageGroup”: “….”,

                        “isSet”: 1

                    },

                    “videoLandMarks”: {

                        “result”: “….”,

                        “isSet”: 1

                    },

                    “videoFaceMatch”: {

                        “videoImages”: [

                            “https://preproduction-persist.signzy.tech/api/files/89577/download/qtH4V9fyZz2m2P4SxOyaNoVAo9FXKn7d3YE0nW5Pw3cS50T7yj.jpg”,

                            “https://preproduction-persist.signzy.tech/api/files/89578/download/yQb2EgzJzr1JUpN27hBAtngQsic1v2NlLCCGJVLGWcLVHfyEXe.jpg”,

                            “https://preproduction-persist.signzy.tech/api/files/89579/download/nnLz1AL5iJlezeSxVe3jINYZTwMScWZnmVDX6ozWNQDn0FsTIk.jpg”,

                            “https://preproduction-persist.signzy.tech/api/files/89580/download/fDvl5Cbn6V3RIDNV2BGhQAYn3CwV15O1Nn7caBXL0BxTSnhSzo.jpg”

                        ],

                        “finalMatchImage”: “….”,

                        “matchStatistics”: {

                            “coVariance”: “….”,

                            “matchPercentage”: “….%”

                        },

                        “isSet”: 1

                    },

                    “exif”: {

                        “metadataFound”: “….”,

                        “message”: “….”,

                        “image”: {},

                        “gps”: {},

                        “isSet”: 1

                    }

                },

                “faceLandmarks”: {

                    “result”: “….”,

                    “isSet”: 1

                }

            },

            “contract”: {},

            “photo”: {},

            “fatca”: {

                “pep”: “….”,

                “rpep”: “….”,

                “residentForTaxInIndia”: “….”,

                “relatedPerson”: “….O”

            },

            “signature”: {

                “signatureImageUrl”: “….”

            },

            “formData”: {

                “gender”: “….”,

                “maritalStatus”: “….”,

                “nomineeRelationShip”: “….”,

                “maidenTitle”: “….”,

                “panNumber”: “….”,

                “aadhaarNumber”: “….”,

                “motherTitle”: “….”,

                “occupationDescription”: “….”,

                “occupationCode”: “….”,

                “kycAccountCode”: “….”,

                “kycAccountDescription”: “….”,

                “communicationAddressCode”: “….”,

                “communicationAddressType”: “….”,

                “applicationStatusCode”: “….”,

                “applicationStatusDescription”: “….”,

                “countryCode”: “….”,

                “mobileNumber”: “….”,

                “emailId”: “….”,

                “communicationAddress”: “….”,

                “pincode”: “….”,

                “motherName”: “….”,

                “nomineeTitle”: “….”,

                “nomineeName”: “….a”

            },

            “info”: {

                “name”: “….”,

                “dob”: “….”,

                “emailId”: “….”,

                “phone”: “….”,

                “communicationAddress”: “….”,

                “permanentAddress”: “….”

            }

        },

        “formFilledData”: {

            “identityProof”: {

                “type”: “….”,

                “purpose”: [

                    “POI”

                ],

                “name”: “….”,

                “idNo”: “….”,

                “dob”: “….”,

                “expiryDate”: “….”,

                “verify”: “….”,

                “address”: “….”,

                “state”: “….”,

                “issueDate”: “….”,

                “images”: [

                    “….”

                ],

                “proofType”: “….f”

            },

            “addressProof”: [{

                “purpose”: [

                    “POA”

                ],

                “name”: “….”,

                “idNo”: “….”,

                “dob”: “….”,

                “verify”: “….”,

                “address”: “….”,

                “expiryDate”: “….”,

                “state”: “….”,

                “issueDate”: “….”,

                “addressType”: “….”,

                “proofType”: “….”,

                “images”: [

                    “….”

                ],

                “pincode”: “….”,

                “type”: “….l”

            }],

            “bankAccount”: {

                “type”: “….n”

            },

            “formFields”: {

                “gender”: “….”,

                “maritalStatus”: “….”,

                “nomineeRelationShip”: “….”,

                “maidenTitle”: “….”,

                “panNumber”: “….”,

                “aadhaarNumber”: “….”,

                “motherTitle”: “….”,

                “occupationDescription”: “….”,

                “occupationCode”: “….”,

                “kycAccountCode”: “….”,

                “kycAccountDescription”: “….”,

                “communicationAddressCode”: “….”,

                “communicationAddressType”: “….”,

                “applicationStatusCode”: “….”,

                “applicationStatusDescription”: “….”,

                “countryCode”: “….”,

                “mobileNumber”: “….”,

                “emailId”: “….”,

                “communicationAddress”: “….”,

                “pincode”: “….”,

                “motherName”: “….”,

                “nomineeTitle”: “….”,

                “nomineeName”: “….a”

            },

            “fatca”: {

                “pep”: “….”,

                “rpep”: “….”,

                “residentForTaxInIndia”: “….”,

                “relatedPerson”: “….O”

            },

            “signature”: {

                “signatureImageUrl”: “….”

            },

            “photo”: {},

            “video”: {

                “url”: “….”,

                “matchImage”: “….”,

                “signzyVerifiableString”: “….”,

                “seconds”: [

                    “00:00:02”,

                    “00:00:04”,

                    “00:00:06”,

                    “00:00:08”

                ]

            },

            “contract”: {}

        },

        “verificationResult”: {

            “idCards”: [{

                “status”: “….”,

                “type”: “….”,

                “purpose”: “….”,

                “number”: “….”,

                “businessFlag”: 0

            }, {

                “status”: “….”,

                “type”: “….”,

                “purpose”: “….”,

                “number”: “….”,

                “businessFlag”: 0

            }],

            “bankAccount”: “….”,

            “video”: “….”,

            “amlStatus”: “….”,

            “overalStatus”: “….y”

        }

    }]

}

Pull CAMS responses for an Onboarding

Endpoint

POST /api/onboardings/pullCamsResponse

Headers

PropertyValue
Content-typeapplication/json
Authorization…channel’s access token…

Input

PropertyData typeExample values
onboardingIdStringOnboarding Id whose CAMS responses needs to be pulled

{

    “onboardingId”: “5ca78ca795c92f759d54c621”

}

Expected output

PropertyData typeExample values
onboardingIdStringOnboarding Id
camsResponseArray of CAMS response ObjectspushResponse is the exact response from CAMS , timeStamp is time of CAMS push

{

   “onboardingId”: ” … “,

   “id”: ” .. “,

   “camsResponse”: [

       {

           “_id”: ” .. “,

           “onboardingId”: ” … “,

           “pushResponse”: ” … “,

           “timeStamp”: “Fri Apr 05 2019 22:31:50 GMT+0530 (IST)”

       }

   ]

}

Pull Karvy data for manual trigger purpose

Endpoint

POST /api/onboardings/pullKarvyData

Headers

PropertyValue
Content-typeapplication/json
Authorization…channel’s access token…

Input

PropertyData typeExample values
onboardingIdStringOnboarding Id whose Karvy data needs to be pulled

{

    “onboardingId”: “….”

}

Expected output

PropertyData type
karvyXmlString

{

    “karvyXml”: “<Contains the XMl srting>”

}

Pull Karvy responses for an Onboarding

Endpoint

POST /api/onboardings/pullkarvyresponse

Headers

PropertyValue
Content-typeapplication/json
Authorization…channel’s access token…

Input

PropertyData typeExample values
onboardingIdStringOnboarding Id for which Karvy is to be called

{

    “onboardingId”: “….”

}

Expected output

PropertyData typeExample values
merchantIdStringmerchant Id
karvyResponseArray of Karvy response ObjectspushResponse is the exact response from Karvy , result is the status from karvy response , timeStamp is time of karvy push

{

   “merchantId”: ” … “,

   “status”: ” .. “,

   “karvyResponse”: [

       {

           “pushResponse”: ” … “,

           “result”: ” … “,

           “timeStamp”: ” … “

       }

   ]

}

Pull CVL data

Endpoint

POST /api/onboardings/pullCvlData

Headers

PropertyValue
Content-typeapplication/json
Authorization…channel’s access token…

Input

PropertyData typeExample values
onboardingIdStringOnboarding Id whose CVL data needs to be pulled

{

    “onboardingId”: “….”

}

Expected output

PropertyData type
cvlXmlString

{

    “cvlXml”: “<Contains the XMl srting>”

}

Pull CVL responses for an Onboarding

Endpoint

POST /api/onboardings/pullCvlResponse

Headers

PropertyValue
Content-typeapplication/json
Authorization…channel’s access token…

Input

PropertyData typeExample values
onboardingIdStringOnboarding Id for which cvl is to be called

{

    “onboardingId”: “….”

}

Expected output

PropertyData typeExample values
merchantIdStringmerchant Id
cvlResponseArray of CVL response ObjectspushResponse is the exact response from CVL , result is the status from cvl response , timeStamp is time of cvl push

{

   “merchantId”: ” … “,

   “status”: ” .. “,

   “cvlResponse”: [

       {

           “pushResponse”: ” … “,

           “result”: ” … “,

           “timeStamp”: ” … “

       }

   ]

}

Distributor Dashboard

Basic details

API endpoint details

Protocol: HTTPS

Preproduction hostname: investor-onboarding-preproduction.signzy.tech

Production hostname: investor-onboarding.signzy.tech

Distributor Login

Login API for Distributor Dashboard

Input

Post request to :: /api/distributorAdmins/login

{

    “username”: “enter your valid username”,

    “password”: “enter your valid password”

}

Expected Login response

{

    “id”: “..id..”,

    “ttl”: “..ttl..”,

    “created”: “..created..”,

    “userId”: “..userId..”

}

PropertyAccepted values/formatDescription
idStringThis is your access token to be passed into other endpoints as Authorization header
ttlIntegerTime to live (ttl for the access token that is generated)
createdStringTime and Date of creation of access-token
userIdStringID of the distributor

Add AMC

Adding Channel to the Distributor Dashboard. This will be one time activity and the channel will be added to the Dashboard.

Headers

PropertyValue
Content-typeapplication/json
Authorization… access token…

Input

Post request to :: /api/distributorAdmins/addChannel

PropertyData typeDescription
taskStringtask type
idStringDistributor ID
credentialsObjectObject
usernameStringChannel Username
passwordStringChannel Password

{

    “task” : “addAmc”,

    “id” : “..distributorId..”,

    “credentials” : {

        “username”:”..username..”,

        “password”:”..password..”

    }

}

Expected output

PropertyData typeDescription
messageStringMessage
addStatusBooleanBoolean value

{

    “result”: {

        “message”: “Added Successfully”,

        “addStatus”: true

    }

}

Reference Tables

Table 1.1 (Country and Code)

CountryCode
India101
Albania003
Aland Islands002
Afghanistan001
Algeria004
American Samoa005
Andorra006
Angola007
Anguilla008
Antarctica009
Antigua And Barbuda010
Argentina011
Armenia012
Aruba013
Australia014
Austria015
Azerbaijan016
Bahamas017
Bahrain018
Bangladesh019
Barbados020
Belarus021
Belgium022
Belize023
Benin024
Bermuda025
Bhutan026
Bolivia027
Bosnia And Herzegovina028
Botswana029
Bouvet Island030
Brazil031
British Indian Ocean Territory032
Brunei Darussalam033
Bulgaria034
Burkina Faso035
Burundi036
Cambodia037
Cameroon038
Canada039
Cape Verde040
Cayman Islands041
Central African Republic042
Chad043
Chile044
China045
Christmas Island046
Cocos (Keeling) Islands047
Colombia048
Comoros049
Congo050
Congo, The Democratic Republic Of The051
Cook Islands052
Costa Rica053
Cote D’Ivoire054
Croatia055
Cuba056
Cyprus057
Czech Republic058
Denmark059
Djibouti060
Dominica061
Dominican Republic062
Ecuador063
Egypt064
El Salvador065
Equatorial Guinea066
Eritrea067
Estonia068
Ethiopia069
Falkland Islands (Malvinas)070
Faroe Islands071
Fiji072
Finland073
France074
French Guiana075
French Polynesia076
French Southern Territories077
Gabon078
Gambia079
Georgia080
Germany081
Ghana082
Gibraltar083
Greece084
Greenland085
Grenada086
Guadeloupe087
Guam088
Guatemala089
Guernsey090
Guinea091
Guinea-Bissau092
Guyana093
Haiti094
Heard Island And Mcdonald Islands095
Holy See (Vatican City State)096
Honduras097
Hong Kong098
Hungary099
Iceland100
Indonesia102
Iran, Islamic Republic Of103
Iraq104
Ireland105
Isle Of Man106
Israel107
Italy108
Jamaica109
Japan110
Jersey111
Jordan112
Kazakhstan113
Kenya114
Kiribati115
Korea, Democratic People’s Republic Of116
Korea, Republic Of117
Kuwait118
Kyrgyzstan119
Lao People’s Democratic Republic120
Latvia121
Lebanon122
Lesotho123
Liberia124
Libyan Arab Jamahiriya125
Liechtenstein126
Lithuania127
Luxembourg128
Macao129
Macedonia, The Former Yugoslav Republic Of130
Madagascar131
Malawi132
Malaysia133
Maldives134
Mali135
Malta136
Marshall Islands137
Martinique138
Mauritania139
Mauritius140
Mayotte141
Mexico142
Micronesia, Federated States Of143
Moldova, Republic Of144
Monaco145
Mongolia146
Montserrat147
Morocco148
Mozambique149
Myanmar150
Namibia151
Nauru152
Nepal153
Netherlands154
Netherlands Antilles155
New Caledonia156
New Zealand157
Nicaragua158
Niger159
Nigeria160
Niue161
Norfolk Island162
Northern Mariana Islands163
Norway164
Oman165
Pakistan166
Palau167
Palestinian Territory, Occupied168
Panama169
Papua New Guinea170
Paraguay171
Peru172
Philippines173
Pitcairn174
Poland175
Portugal176
Puerto Rico177
Qatar178
Reunion179
Romania180
Russian Federation181
Rwanda182
Saint Helena183
Saint Kitts And Nevis184
Saint Lucia185
Saint Pierre And Miquelon186
Saint Vincent And The Grenadines187
Samoa188
San Marino189
Sao Tome And Principe190
Saudi Arabia191
Senegal192
Serbia And Montenegro193
Seychelles194
Sierra Leone195
Singapore196
Slovakia197
Slovenia198
Solomon Islands199
Somalia200
South Africa201
South Georgia And The South Sandwich Islands202
Spain203
Sri Lanka204
Sudan205
Suriname206
Svalbard And Jan Mayen207
Swaziland208
Sweden209
Switzerland210
Syrian Arab Republic211
Taiwan, Province Of China212
Tajikistan213
Tanzania, United Republic Of214
Thailand215
Timor-Leste216
Togo217
Tokelau218
Tonga219
Trinidad And Tobago220
Tunisia221
Turkey222
Turkmenistan223
Turks And Caicos Islands224
Tuvalu225
Uganda226
Ukraine227
United Arab Emirates228
United Kingdom229
United States230
United States Minor Outlying Islands231
Uruguay232
Uzbekistan233
Vanuatu234
Venezuela235
Viet Nam236
Virgin Islands, British237
Virgin Islands, U.S.238
Wallis And Futuna239
Western Sahara240
Yemen241
Zambia242
Zimbabwe243
Côte D’ivoireCI
Korea,Democratic People’sRepublicOfKP
Lao People’s Democratic Republic120

Table 1.2 (Cams State and code)

StateCode
Andaman & NicobarAN
Andhra PradeshAP
Arunachal PradeshAR
AssamAS
BiharBR
ChandigarhCH
ChattisgarhCG
Dadra and Nagar HaveliDN
Daman & DiuDD
DelhiDL
GoaGA
GujaratGJ
HaryanaHR
Himachal PradeshHP
Jammu & KashmirJK
JharkhandJH
KarnatakaKA
KeralaKL
LakshadweepLD
Madhya PradeshMP
MaharashtraMH
ManipurMN
MeghalayaML
MizoramMZ
NagalandNL
OdishaOR
PondicherryPY
PunjabPB
RajasthanRJ
SikkimSK
Tamil NaduTN
TelanganaTS
TripuraTR
Uttar PradeshUP
UttarakhandUA
West BengalWB
OtherXX

Table 1.3 (Occupation and codes)

CodeOccupation Description
01Private Sector
02Public Sector
03Business
04Professional
06Retired
07Housewife
08Student
10Government Sector
99Others
11Self Employed
12Not Categorized

Table 1.4 (KYC account description and codes)

KYC Acc. CodeKYC Acc. Description
01New
02Modify with documents
03Modify without documents
04Dump
05Suspended
06Deceased

Table 1.5 (Application status code and description)

Application status CodeApplication status Description
RResident Indian
NNon-Resident Indian
PForeign National
IPerson of Indian Origin

Table 1.6 (Address Types and code)

CodeCommunication Address Type
01Residential/Business
02Residential
03Business
04Registered office
05Unspecified

Table 1.7 (State and code to be used for update form for “voterID”)

CodeState
Andaman and Nicobar IslandsAndaman and Nicobar Islands
Andhra PradeshAndhra Pradesh
ArunachalPradeshArunachal Pradesh
AssamAssam
BiharBihar
ChandigarhChandigarh
ChhattisgarhChhattisgarh
DadraandNagarDadra and Nagar
Diu-DamanDaman and Diu
DelhiDelhi
GoaGoa
GujaratGujarat
HaryanaHaryana
HimachalPradeshHimachal Pradesh
JammuKashmirJammu & Kashmir
JharkhandJharkhand
KarnatakaKarnataka
KeralaKerala
LakshadweepLakshadweep
Madhya PradeshMadhya Pradesh
MaharashtraMaharashtra
ManipurManipur
MeghalayaMeghalaya
MizoramMizoram
NagalandNagaland
OdishaOdisha
PuducherryPuducherry
PunjabPunjab
RajasthanRajasthan
SikkimSikkim
TamilNaduTamil Nadu
TelanganaTelangana
TripuraTripura
Uttar PradeshUttar Pradesh
UttarakhandUttarakhand
West BengalWest Bengal

Table 1.8 (Income Range and Code)

Income RangeCode
Below 1 Lac31
1-5 Lacs32
5-10 Lacs33
10-25 Lacs34
25 Lacs-1 crore35
1 crore36

Table 1.9 (PAN EXEMPT Categories for CVL KRA)

CategoryCode
Sikkim Resident01
Transactions carried out on behalf of State Government02
Transactions carried out on behalf of Central Government03
Court Appointed Officials04
UN Entity/Multilateral agency exempt from paying tax in India05
Official Liquidator06
Court Receiver07
SIP of Mutual Funds upto Rs. 50,000/- p.a.08
Other Documents11

Concepts and meanings of terms

Preproduction environment

The preproduction environment acts like a sandbox environment for the client and the subcontractors (channel distributors) in order to try and play with the Signzy APIs.

Production environment

Once the client & any sub-contractors have integrated into Signzy API system in the preproduction environment, they will be moved into production environment. At production there is no limit on the number of API calls that can be made and the requests are billed post-facto.

Channel

A channel can be though of as an extension of the user model. A channel can be created by another channel and the child channels are controlled by the parent in terms of grants and allocations.

Onboarding

An onboarding object is the main object which holds the data about an particular onboarding. A channel can create onboarding and push data to a parent system (like investor onboarding) according to grant provided by the parent channel. Exact details on how to create onboarding object and pushing data into the parent system can be found above.

Distributor

A distributor is also an instance of the channel object created by another channel. A distributor can have different rights and grants as detailed during creation or updated by the parent channel creating the channel onbect.

Support & Disclaimer

This documentation is currently a work in progress and certain details properties, objects and in rare cases endpoints might change as the product evolves. This documentation can be taken as reference of information about the APIs and integration must be started but care must be taken to accomodate minimal changes in the API and the data properties from payload.

Update on docs

These docs are currently a work in progress and updates can be expected in properties. After the API endpoints stabilize, the docs can still be updated with new features added into the product with extreme care being taken to not hamper existing integrations.

The docs will be updated further from time to time in order to provide more clarity to the integration & development teams on usage of the products.

Product downtimes

Clients will be notified of any planned downtimes due to patch deployments, software updates and other maintenance activity one week prior to execution.

Support, errors and corrections

If you find any problems with the documentation or the product, feel free to reach out to us at support@signzy.com for help.

For any support queries reach out to support@signzy.com. If you are subcontracted to use the product, please reach out to your contractor to connect with Signzy Support.

Device Compatibility

Desktop

Operating SystemBrowserPOIPOACPOAChequePhotoVideo VerificationContract
Windows, Linux Ubuntu, macOSChromeYesYesYesYesYesYesYes
Windows, Linux Ubuntu 16.04+, macOSFirefoxYesYesYesYesYesYesYes
WindowsOperaYesYesYesYesYesYesYes
Windows 10UC browserYesYesYesYesYesYesYes
Windows 10IEYesYesYesYesNoYesNo
MacSafariYesYesYesYesYesNoYes
Windows 10Microsoft EdgeYesYesYesYesYesYesYes

Mobile

Operating SystemBrowserPOIPOACPOAChequePhotoVideo VerificationContract
Android 6+, iOSChromeYesYesYesYesYesYesYes
Android 7+Samsung internetYesYesYesYesYesYesYes
iOSSafariYesYesYesYesNOYesYes
Android 7+UC browserYesYesYesYesYesYesYes
Android 7+OperaYesYesYesYesYesYesYes
Android 7+FireFoxYesYesYesYesYesYesYes

Advanced Features

Integration with Mobile Application

Use Chrome Custom Tab for opening Investor Onboarding in the mobile application. Integrate Mobile Auto-Login/Login URL with the Chrome Custom Tab, since it is compatible with both android and IOS.

Leave a Reply

Your email address will not be published.

Related Post