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

ParametersTypeMandatory/OptionalDescription
contextcontextMandatoryThe application context.
enterpriseIdstringMandatoryThe enterprise ID of the current user.
authorizationstringMandatoryAuthentication header key (Shared while onboarding).
mobileNumberstringMandatoryMobile number of the current user.
bankstringMandatoryThe bank identifier.
callbackApiUtils.CallbackMandatoryCallback to handle the response.

Response Parameters

ParametersTypeDescription
tokenstringThis is the device registration token sent in the verification SMS.
virtualMobileNumberstringThis is the number the verification SMS should be sent.
keywordstringThis 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

ParametersTypeDescription
contextcontextThe application context.
virtualMobileNumberstringThe verification SMS will be sent to this number (received from initiateDeviceBinding)
smsContentstringThe 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.
simSlotIndexintegerUse this to control which SIM card to use for sending the SMS. This should be the same number registered with us.
silentbooleanUse 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.
callbackSendSMSCallbackCallback 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

ParametersTypeMandatory/OptionalDescription
contextcontextMandatoryThe application context.
mobileNumberstringMandatoryThe mobile number of the user
bankstringMandatoryThe bank identifier
callbackstringMandatoryCallback to handle the response.

Response Parameters

ParametersTypeDescription
statusstringThe 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

ParametersTypeMandatory/OptionalDescription
panstringMandatoryThe applicant's PAN.
emailstringMandatoryThe applicant's email ID.
phonestringMandatoryThe applicant's phone number.
isEmailVerifiedstringMandatoryDetermines whether the email ID is verified.
isPhoneVerifiedstringMandatoryDetermines whether the phone number is verified.
phoneVerificationDatestringMandatoryThe phone verification date.
emailVerificationDatestringMandatoryThe email ID verification date.
dateOfBirthstringMandatoryThe applicant's date of birth.
nameAsPerPanstringMandatoryThe applicant's name as per the PAN card.
callbackUrlstringMandatoryThe callback URL.

Response Parameters

NameTypeDescription
userIdstringThe binding status. For example, verified.
kycUrlstringThe KYC URL for the minimum KYC.
statestringThe status of the user creation.
kycUrlExpirystringThe 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

ParametersData TypeMandatory/OptionalDescription
panstringMandatoryThe PAN of the applicant. For example, ABCDE7777F.

Response Parameters

ParametersData TypeDescription
statusstringThe eligibility check status. Possible values:
  • success
  • failed
eligiblebooleanIndicates whether the applicant is eligible. Possible values:
  • true: The applicant is eligible.
  • false: The applicant is not eligible.
max_credit_limitBigDecimalThe maximum credit eligibility of the applicant.
messagestringAn 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

ParametersData TypeMandatory/OptionalDescription
formFactorstringMandatoryThe card type. Possible values:
  • Physical: The physical card is issued.
  • Virtual: The virtual card is issued.
accountIDbigdecimalMandatoryThe account ID of the user.
mobNumberstringMandatoryThe mobile number of the user.
dobstringMandatoryThe date of birth of the user in the ddmmyy format.
panstringOptionalThe PAN of the user.

Response Parameters

ParametersData TypeDescription
userIdstringThe unique identifier of the user.
maskedMobileNumberstringThe masked mobile number of the user.
accountDataobjectThe account details
itemsobjectThe card details added to the account.
accountData[].items[].productNamestringThe card name. For example, Nyka HONOUR CREDIT CARD.
accountData[].items[].productTypestringThe card type. Here, it is RETAIL_CREDIT_CARD.
accountData[].items[].productVariantstringThe card variant. Here, it is HONOUR.
accountData[].items[].productVariantNamestringThe card variant name. Here, it is Nyka Honour Card.
accountData[].items[].accountIdstringThe unique identifier of the user account. For example, 170e13ec-9e4f-4547-a414-183cb2fb059a.
accountData[].items[].programIdstringThe program ID the card is added to. For example, 1abbb249-27c6-4ec5-b492-75d147e61ada.
accountData[].isLastPagestringDetermines whether this is the last page of the response. Possible values:
  • true
  • false
accountData[].pageNumberintegerThe current page number.
accountData[].currentPageSizeintegerThe amount of data present on the current page.
accountData[].perPageSizeThe amount of data allowed on the current page.
accountData[].totalItemsintegerThe total amount of data present in the request.
accountData[].totalPagesintegerThe total number of pages present in the request.

Related Information

Refer to the following pages for additional information about integrating retail co-branded credit cards.