Onboard Customers
Know how to onboard customers.
The following are the steps to onboard customers.
Get Configurations
These get configurations let you check whether the SIM binding, end-to-end encryption, and TOTP are enabled.
Handy Tips
The Get Configurations step is optional and can be initiated based on the business requirement and integration strategy. It is primarily used to check the enablement status of SIM binding, end-to-end encryption, and TOTP features. If your onboarding or authentication flow does not depend on these configurations, this step may be safely skipped.
INITIATE_DEVICE_BINDING
Use the action code below to start the device binding process by requesting a device registration.
import com.falconfsauth.sdk.FalconSecureSDK;
import com.falconfsauth.sdk.Utils.ApiUtils;
FalconSecureSDK.initiateDeviceBinding(context, enterpriseId, authorizationKey, mobileNumber, bank, new ApiUtils.Callback<String>() {
@Override
public void onSuccess(String response, Integer responseCode) {
// response contains json string with the fields shown in Response table
// Handle success
}
@Override
public void onError(Exception e) {
// Handle error
}
});
{
"token": "12345",
"virtualMobileNumber": "0123456789",
"keyword": "SMS Verification"
}
Request Parameters
| Parameters | Type | Mandatory/Optional | Description |
|---|---|---|---|
context | context | Mandatory | The application context. |
enterpriseId | string | Mandatory | The enterprise ID of the current user. |
authorization | string | Mandatory | Authentication header key (Shared while onboarding). |
mobileNumber | string | Mandatory | Mobile number of the current user. |
bank | string | Mandatory | The bank identifier. |
callback | ApiUtils.Callback | Mandatory | Callback to handle the response. |
Response Parameters
| Parameters | Type | Description |
|---|---|---|
token | string | This is the device registration token sent in the verification SMS. |
virtualMobileNumber | string | This is the number the verification SMS should be sent. |
keyword | string | This keyword will be used as a prefix in the verification SMS content, separated by a space. |
SEND_VERIFICATION_SMS
To verify that the user trying to log in has a SIM card with that number currently available in the device, the SDK provides a utility function named sendRegistrationSMS. On Android, it supports sending SMS in the background for a smooth UX. If you prefer to open the default SMS app, you can control it using the silentparameter. Use the code below to send an SMS to verify the user’s SIM.
import com.falconfsauth.sdk.FalconSecureSDK;
import com.falconfsauth.sdk.SendSMSCallback;
FalconSecureSDK.sendVerificationSMS(context, virtualMobileNumber, smsContent, simSlotIndex, silent, new SendSMSCallback() {
@Override
public void onSuccess() {
// Handle success
}
@Override
public void onError(Exception e) {
// Handle error
}
});
Request Parameters
| Parameters | Type | Description |
|---|---|---|
context | context | The application context. |
virtualMobileNumber | string | The verification SMS will be sent to this number (received from initiateDeviceBinding) |
smsContent | string | The content of the verification sms. This is a combination of the keyword and deviceToken separated by a space. These values are received from the initiateDeviceBinding response. Example: flcnp token. |
simSlotIndex | integer | Use this to control which SIM card to use for sending the SMS. This should be the same number registered with us. |
silent | boolean | Use this to control the default SMS app to send the SMS. If the silent parameter is true, the SMS will be sent in the background. We recommend using this parameter as true. |
callback | SendSMSCallback | Callback to handle the response. |
CHECK_BINDING_STATUS
After SIM verification is successful, use the code below to check the binding status of the device. You can poll this code at a fixed interval to check the updated status. Below are the available statuses:
- PENDING
- VERIFIED
- EXPIRED
import com.falconfsauth.sdk.FalconSecureSDK;
import com.falconfsauth.sdk.Utils.ApiUtils;
FalconSecureSDK.checkBindingStatus(context, mobileNumber, bank, new ApiUtils.Callback<String>() {
@Override
public void onSuccess(String response, Integer responseCode) {
// Handle success
}
@Override
public void onError(Exception e) {
// Handle error
}
});
{
"status": "verified"
}
Request Parameters
| Parameters | Type | Mandatory/Optional | Description |
|---|---|---|---|
context | context | Mandatory | The application context. |
mobileNumber | string | Mandatory | The mobile number of the user |
bank | string | Mandatory | The bank identifier |
callback | string | Mandatory | Callback to handle the response. |
Response Parameters
| Parameters | Type | Description |
|---|---|---|
status | string | The binding status. For example, verified. |
CHECK_THE_USER_STATUS
Use the action code below to check if the user is new or existing. If the user already exists, this will return the user ID, or create an ID for the new user. For a new user, the response contains the KYC URL to proceed with the user's minimum KYC.
{
'pan': 'AXPPA7777A',
'email': '[email protected]',
'phone': '8888899999',
'isEmailVerified': 'YES',
'isPhoneVerified': 'YES',
'phoneVerificationDate': '2023-09-15 10:10:10',
'emailVerificationDate': '2023-09-15 10:10:10',
'dateOfBirth': '1997-12-14',
'nameAsPerPan': 'vivek singh',
'callbackUrl': 'https://www.google.com',
}
{
"userId": "095b6e91-5035-4bc4-8f90-b3620c77e2d3",
"kycUrl": "https://eohs-uat.shivalikbank.com/Aadhaar?callbackUrl=https://www.google.com/&applicationId=UPS01_PUPS01/AGUPS01/2454/040124121800_2&clientId=UPS01&mobileNumber=8219092454&accessToken=eyJ4NXQjUzI1NiI6ImRwZEdBYlVhUUFrNWFLNUV0LWFGUC1MZU51ci0yS0x0V0VRVDluOFdRSmMiLCJ4NXQiOiJiWmtyTEpERURlOVJaU1I2bkFwQlc1RVdSWUkiLCJraWQiOiJTSUdOSU5HX0tFWSIsImFsZyI6IlJTMjU2In0.eyJjbGllbnRfb2NpZCI6Im9jaWQxLmRvbWFpbmFwcC5vYzEuYXAtbXVtYmFpLTEuYW1hYWFhYWE2emJ1N2J5YTRyb2kyNjI2dWYyc2xpdmg0a2RzdzZqcjQ0Y3NrYnF1bmZlMjRhaDVjN3JxIiwidXNlcl90eiI6IkFzaWFcL0tvbGthdGEiLCJzdWIiOiJzbWJUZXN0VXNlciIsInVzZXJfbG9jYWxlIjoiZW4iLCJzaWRsZSI6NDgwLCJ1c2VyLnRlbmFudC5uYW1lIjoiaWRjcy02M2M0MDVmMTUzMjU0ZDU5YTZlMDM0NTIwNDRjN2ZiZCIsImlzcyI6Imh0dHBzOlwvXC9pZGVudGl0eS5vcmFjbGVjbG91ZC5jb21cLyIsInVzZXJfdGVuYW50bmFtZSI6ImlkY3MtNjNjNDA1ZjE1MzI1NGQ1OWE2ZTAzNDUyMDQ0YzdmYmQiLCJjbGllbnRfaWQiOiIyMzIzRUJFNUQ2Rjc0QkQzQUVGRjUzNUE2RjJCMjRCQl9BUFBJRCIsInN1Yl90eXBlIjoidXNlciIsInNjb3BlIjoidXJuOm9wYzpyZXNvdXJjZTpjb25zdW1lcjo6YWxsIiwidXNlcl9vY2lkIjoib2NpZDEudXNlci5vYzEuLmFhYWFhYWFhbTVrb3ZzYmdpb2YybWpobHFoZnBvYWlxMnBpZXVsaHVpNGpqMzVxYXB2bHJ1YjZubDZ6YSIsImNsaWVudF90ZW5hbnRuYW1lIjoiaWRjcy02M2M0MDVmMTUzMjU0ZDU5YTZlMDM0NTIwNDRjN2ZiZCIsInJlZ2lvbl9uYW1lIjoiYXAtbXVtYmFpLWlkY3MtMSIsInVzZXJfbGFuZyI6ImVuIiwiZXhwIjoxNzA0MzU0NDc5LCJpYXQiOjE3MDQzNTA4NzksImNsaWVudF9ndWlkIjoiZjc3NWZjYmRkNWY2NDU4OGFkZWQ0ODkwZDNjMmVlMTYiLCJjbGllbnRfbmFtZSI6InNtYm5vbnByb2RvaWNwbGF0Zm9ybS1ibW9zMXJmbHl4bzctYm8iLCJ0ZW5hbnQiOiJpZGNzLTYzYzQwNWYxNTMyNTRkNTlhNmUwMzQ1MjA0NGM3ZmJkIiwianRpIjoiNzk4NDAyMmRiN2EzNDZiNmI0NjIyZThlNTk4NWY2YmUiLCJndHAiOiJybyIsInVzZXJfZGlzcGxheW5hbWUiOiJTTUIgUmVhZCBPbmx5IFRlc3QiLCJvcGMiOnRydWUsInN1Yl9tYXBwaW5nYXR0ciI6InVzZXJOYW1lIiwicHJpbVRlbmFudCI6dHJ1ZSwidG9rX3R5cGUiOiJBVCIsImNhX2d1aWQiOiJjYWNjdC1lNzdlZTU4M2JkYWQ0NWUzYjAzM2U5ZDc0MDI3ZmUyMiIsImF1ZCI6WyJodHRwczpcL1wvc21iZGV2b2ljcGxhdGZvcm0tYm1vczFyZmx5eG83LWJvLmludGVncmF0aW9uLmFwLW11bWJhaS0xLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzIiwiaHR0cHM6XC9cL2Rlc2lnbi5pbnRlZ3JhdGlvbi5hcC1tdW1iYWktMS5vY3Aub3JhY2xlY2xvdWQuY29tP2ludGVncmF0aW9uSW5zdGFuY2U9c21iZGV2b2ljcGxhdGZvcm0tYm1vczFyZmx5eG83LWJvIiwiaHR0cHM6XC9cL3NtYmRldm9pY3BsYXRmb3JtLWJtb3MxcmZseXhvNy1iby5pbnRlZ3JhdGlvbi5vY3Aub3JhY2xlY2xvdWQuY29tOjQ0MyIsInVybjpvcGM6bGJhYXM6bG9naWNhbGd1aWQ9OUU2QjBGQTY4RDIzNDIxOUIzMjJCMkJFMEI3QzdFMTkiLCJodHRwczpcL1wvMjMyM0VCRTVENkY3NEJEM0FFRkY1MzVBNkYyQjI0QkIuaW50ZWdyYXRpb24ub2NwLm9yYWNsZWNsb3VkLmNvbTo0NDMiLCJodHRwczpcL1wvc21ibm9ucHJvZG9pY3BsYXRmb3JtLWJtb3MxcmZseXhvNy1iby5pbnRlZ3JhdGlvbi5vY3Aub3JhY2xlY2xvdWQuY29tOjQ0MyIsInVybjpvcGM6bGJhYXM6bG9naWNhbGd1aWQ9MjMyM0VCRTVENkY3NEJEM0FFRkY1MzVBNkYyQjI0QkIiLCJodHRwczpcL1wvOUU2QjBGQTY4RDIzNDIxOUIzMjJCMkJFMEI3QzdFMTkuaW50ZWdyYXRpb24ub2NwLm9yYWNsZWNsb3VkLmNvbTo0NDMiXSwic3R1IjoiSU5URUdSQVRJT05DQVVUTyIsInVzZXJfaWQiOiI2MTFmZWY1NzcyZGQ0MTExYjQwNDQ0NDgwNTk4NDhhMSIsImRvbWFpbiI6ImlkZW50aXR5IiwidGVuYW50X2lzcyI6Imh0dHBzOlwvXC9pZGNzLTYzYzQwNWYxNTMyNTRkNTlhNmUwMzQ1MjA0NGM3ZmJkLmlkZW50aXR5Lm9yYWNsZWNsb3VkLmNvbTo0NDMiLCJyZXNvdXJjZV9hcHBfaWQiOiJmNzc1ZmNiZGQ1ZjY0NTg4YWRlZDQ4OTBkM2MyZWUxNiJ9.AsN2TaT7SyQWJ6FttdGvzCqxDHsX9bCDcfrt6f7dLnPpiYQ-kldnGVgvTGrSuiGNGC1TtEr3zzFK_JWIIr8dZ1jJ_jHnN9eyV6swoxyrSClPK2eVxr0bxyDo_8SDD1VtkzyO4tJWvyY6nqVE2yOlPxGD_oawNGzB4TJg-WYj46OzOxiqizSsoY0rRHHqvc4zUtbmZi45aY0cB0XMDrPkaWzsy8VqZedouBzZgxr3th9qXIJSRY4FXUhJ5ioUhicMB-MjFGVuNWjS-vdvaVGKPdAY6aTc48Tv1jAQ1Dm_sCdn2yMPIUVu_PpBKGgFOGl_9ltEklt1HNe0bYZVgJiZwA",
"state": "NEW",
"kycUrlExpiry": "2024-01-04T07:45:00.086+00:00"
}
Request Parameter
| Parameters | Type | Mandatory/Optional | Description |
|---|---|---|---|
pan | string | Mandatory | The applicant's PAN. |
email | string | Mandatory | The applicant's email ID. |
phone | string | Mandatory | The applicant's phone number. |
isEmailVerified | string | Mandatory | Determines whether the email ID is verified. |
isPhoneVerified | string | Mandatory | Determines whether the phone number is verified. |
phoneVerificationDate | string | Mandatory | The phone verification date. |
emailVerificationDate | string | Mandatory | The email ID verification date. |
dateOfBirth | string | Mandatory | The applicant's date of birth. |
nameAsPerPan | string | Mandatory | The applicant's name as per the PAN card. |
callbackUrl | string | Mandatory | The callback URL. |
Response Parameters
| Name | Type | Description |
|---|---|---|
userId | string | The binding status. For example, verified. |
kycUrl | string | The KYC URL for the minimum KYC. |
state | string | The status of the user creation. |
kycUrlExpiry | string | The expiry timestamp of the KYC URL. |
CHECK_THE_USER_ELIGIBILITY
Use this action code to check a user's credit eligibility to apply for a credit card.
{
'pan': 'ABCDE7777F'
}
{
"status": "success",
"eligible": true,
"max_credit_limit": 50000,
"message": "Credit eligibility check completed."
}
Request Parameters
| Parameters | Data Type | Mandatory/Optional | Description |
|---|---|---|---|
| pan | string | Mandatory | The PAN of the applicant. For example, ABCDE7777F. |
Response Parameters
| Parameters | Data Type | Description |
|---|---|---|
status | string | The eligibility check status. Possible values:
|
eligible | boolean | Indicates whether the applicant is eligible. Possible values:
|
max_credit_limit | BigDecimal | The maximum credit eligibility of the applicant. |
message | string | An additional message. |
ADD_CARD
Use this action code to add or issue a new co-branded retail credit card.
{
'formFactor': 'Physical',
'accountID':'202000004784',
'mobNumber': '911234567890',
'dob': '22111989',
'pan': 'ABCDE7777F'
}
{
"userId":"1f27d20f-b09a-437a-85b4-c70036bb6b57",
"maskedMobileNumber":"70xxxx1041",
"accountData":{
"items":[
{
"productName":"Nyka HONOUR CREDIT CARD",
"productType":"RETAIL_CREDIT_CARD",
"productVariant":"HONOUR",
"productVariantName":"Nyka Honour Card",
"accountId":"170e13ec-9e4f-4547-a414-183cb2fb059a",
"programId":"1abbb249-27c6-4ec5-b492-75d147e61ada"
}
],
"isLastPage":true,
"pageNumber":0,
"currentPageSize":1,
"perPageSize":5,
"totalItems":1,
"totalPages":1
}
}
Request Parameters
| Parameters | Data Type | Mandatory/Optional | Description |
|---|---|---|---|
formFactor | string | Mandatory | The card type. Possible values:
|
accountID | bigdecimal | Mandatory | The account ID of the user. |
mobNumber | string | Mandatory | The mobile number of the user. |
dob | string | Mandatory | The date of birth of the user in the ddmmyy format. |
pan | string | Optional | The PAN of the user. |
Response Parameters
| Parameters | Data Type | Description |
|---|---|---|
userId | string | The unique identifier of the user. |
maskedMobileNumber | string | The masked mobile number of the user. |
accountData | object | The account details |
items | object | The card details added to the account. |
accountData[].items[].productName | string | The card name. For example, Nyka HONOUR CREDIT CARD. |
accountData[].items[].productType | string | The card type. Here, it is RETAIL_CREDIT_CARD. |
accountData[].items[].productVariant | string | The card variant. Here, it is HONOUR. |
accountData[].items[].productVariantName | string | The card variant name. Here, it is Nyka Honour Card. |
accountData[].items[].accountId | string | The unique identifier of the user account. For example, 170e13ec-9e4f-4547-a414-183cb2fb059a. |
accountData[].items[].programId | string | The program ID the card is added to. For example, 1abbb249-27c6-4ec5-b492-75d147e61ada. |
accountData[].isLastPage | string | Determines whether this is the last page of the response. Possible values:
|
accountData[].pageNumber | integer | The current page number. |
accountData[].currentPageSize | integer | The amount of data present on the current page. |
accountData[].perPageSize | The amount of data allowed on the current page. | |
accountData[].totalItems | integer | The total amount of data present in the request. |
accountData[].totalPages | integer | The total number of pages present in the request. |
Updated 4 months ago
Refer to the following pages for additional information about integrating retail co-branded credit cards.
