Earlier in our docs is an overview of our Know Your Business here. Now, this page is focused specifically on eKYB in India (IN). eKYB in IN leverages India's source of truth to validate the legitimacy of businesses, including their tax ID, business name, business address, and directors.

📘

Note on UBO Support

UBO (Ultimate Beneficial Owner) verification is not currently supported for India, as this information is not openly available from the source of truth. Only Directors are supported at this time. UBO support will be added in a future release.

Integration

User input flow

Module Configuration

Module configuration gives various options to specify different KYB criteria you would like to check (eg. Business name, Business Address, and Business taxID).


Direct API Approach

All module configurations and user data can be forwarded directly in the request for performing a KYB search. This will override existing configuration and data collected about the user.

📘

API Authentication

All endpoints require authentication headers to be specified as stated in Incode API Documentation.

POST /omni/externalVerification/ekyb

This endpoint performs a KYB check for the business specified. Note: Endpoint can have empty body and in that case information will be pulled from module configuration and session details.

  • plugins: must be ["ekyb"]: (mandatory)
  • businessName: (mandatory) String. Registered name of the business.
  • country: (mandatory) String. Two-letter Alpha-2 country code. Must be IN.
  • taxId: (mandatory) String. Indian business identifier. See supported tax ID types below. Input is not case-sensitive — it will be automatically converted to uppercase before processing.
  • street: (optional) String. Street name of the business.
  • houseNo: (optional) String. Building or house number on the street.
  • addressLine2: (optional) String. Additional address information.
  • city: (optional) String. City of the business address.
  • state: (optional) String. State of the business address.
  • postalCode: (optional) String. 6-digit Indian postal code (e.g. 302017).
  • directors: (optional) Array of strings. Full legal name(s) of directors to check against the list of persons associated with the business.

Note: The country parameter is used to limit business validation to that specific region. We will only validate a business established in the country selected in the eKYB request.

✍️

Business Tax IDs Supported in IN

The following tax ID types are accepted. Input is not case-sensitive and will be automatically converted to uppercase.

Tax ID TypeFormatApplicable To
CIN (Corporate Identification Number)1 letter + 5 digits + 2 letters + 4 digits + 3 letters + 6 digitsPrivate Limited Companies, Public Limited Companies, One Person Companies (OPCs), Section 8 Companies
LLPIN (Limited Liability Partnership Identification Number)3 letters + hyphen + 4 digitsLimited Liability Partnerships (LLPs)
UDYAM (MSME Registration Number)UDYAM + hyphen + 2 letters + hyphen + 2 digits + hyphen + 7 digitsMSMEs (Micro, Small, and Medium Enterprises), including sole proprietorships, partnerships, LLPs, and companies
{
    "plugins": ["ekyb"],
    "country": "IN",
    "taxId": "U72900KA2024PTC123456",
    "businessName": "AARAV TECHNOLOGIES PRIVATE LIMITED",
    "street": "MG Road",
    "houseNo": "42",
    "addressLine2": "",
    "city": "BENGALURU",
    "state": "KARNATAKA",
    "postalCode": "560001",
    "directors": ["RAJESH KUMAR"]
}

Response

All module configurations and user data can be forwarded directly in the request for performing an eKYB search. This will override existing configuration and data collected about the user.

📘

API Authentication

All endpoints require authentication headers to be specified as stated in Incode API Documentation.

"kyb": [
    { "key": "name",                 "sub_label": "Verified" },
    { "key": "tin",                  "sub_label": "Verified" },
    { "key": "address_verification", "sub_label": "Verified" },
    { "key": "registrationStatus",   "sub_label": "Active" },
    {
      "key": "entityType",
      "entityType": {
        "entityType": "PRIVATE COMPANY LIMITED BY SHARES NON-GOVERNMENT COMPANY"
      }
    },
    {
      "key": "directors_name_match",
      "sub_label": "Verified",
      "directorsName_input": "RAJESH KUMAR"
    },
    {
      "key": "directors_name_match",
      "sub_label": "Unverified",
      "directorsName_input": "ROHAN GUPTA"
    }
]
Incode API KeyStatusDefinition
nameVerified, Approximate Match, UnverifiedSubmitted business name is verified, approximate match, or unverified against the business name associated with the business Tax ID in the source of truth.
tinVerified, UnverifiedSubmitted Tax ID (CIN, LLPIN, or UDYAM number) is found or not found in the source of truth.
address_verificationVerified, Approximate Match, UnverifiedSubmitted address is verified, approximate match, or unverified against the registered address associated with the business Tax ID in the source of truth.
registrationStatusActive, Inactive, UnknownActive: the business registration status is active or amalgamated. Inactive: the business is struck off or under process of striking off. Unknown: the registration status is not available.
entityTypeLegal entity type of the businessDisplays the legal entity type of the company as returned from the source of truth (e.g. PRIVATE COMPANY LIMITED BY SHARES NON-GOVERNMENT COMPANY). If not available, "Unknown" is displayed.
directors_name_matchVerified, Approximate Match, UnverifiedSubmitted director name is matched against directors associated with the business Tax ID in the source of truth. Only persons with the role of Director are checked. One entry is returned per submitted director name, distinguishable via directorsName_input.

Learning more about Approximate Match: Approximate Match is generated through Incode's proprietary fuzzy matching algorithm. If approximate match is returned, the algorithm has identified a similar match with the string submitted in relation to the string stored in the source of truth for a particular field. Approximate Match is returned when exact matches are not possible due to misspellings, typographical errors, or slight variations in input data.

KYB error responses

Please refer to error response to see conventional HTTP response codes to indicate the success or failure of an API request.

Custom 400 error messages if taxId is missing or invalid:

message: BadRequestException: Invalid taxId.

Custom 400 error message if country is missing or empty:

message: Country field is either not correct or available.

Single Session Dashboard Results

They are available on Single Session view under the Business tab.