---
title: "India"
url: "https://developer.incode.com/general-reference/india/"
section: "general-reference"
group: "eKYB Reference / eKYB Prefill Coverage"
version: "v1.1"
status: "live"
---
# India

eKYB Prefill in India leverages India's source of truth to automatically retrieve and populate business information based on a company's tax identifier (CIN or GSTIN), including the business name, entity type, registration status, registration date, credit rating, PAN details, and GST registrations, without requiring manual input from the user.

### Source

| Country | Source | Description |
| --- | --- | --- |
| India | `IN_KYB_PREFILL` | Returns matching Indian business details from India's source of truth for pre-fill. |

### Direct API approach

For general integration notes and shared response semantics, see the [eKYB Prefill API Reference](/general-reference/ekyb-prefill-api-reference/).

All module configurations and user data can be forwarded directly in the request for performing a Prefill lookup. This overrides existing configuration and data collected about the user.

#### Endpoint

`POST /omni/externalVerification/ekyb-prefill`

#### Request parameters

| Parameter | Required | Description |
| --- | --- | --- |
| `plugins` | Mandatory | String array. Must be `["ekyb-prefill"]`. Specifies the Prefill flow. |
| `source` | Mandatory | String. Must be `IN_KYB_PREFILL`. Identifies the Prefill source. |
| `country` | Mandatory | String. Two-letter Alpha-2 country code. Must be `IN`. |
| `taxId` | Mandatory | String. CIN or GSTIN. See [Tax ID formats](#tax-id-formats) for details. |
| `businessName` | Optional | String. Registered business name, used to verify the match against the source of truth. |
| `address` | Optional | String. Business address, used to verify the match against the source of truth. |

#### Tax ID formats

India supports two business identifier formats as search input. Requests with an invalid format return a 400 error.

| Entity Type | Format |
| --- | --- |
| CIN (Corporate Identification Number) | 21 alphanumeric characters — company-type entities only (e.g. `U12345MH2020PTC123456`) |
| GSTIN (Goods and Services Tax Identification Number) | 15 alphanumeric characters |

Routing logic: if `taxId` is exactly 21 characters, it is treated as a CIN. Otherwise, if it matches the 15-character GSTIN format, it is treated as a GSTIN. Any other length or format returns a 400 error.

:::note
PAN (Permanent Account Number) is a valid Indian tax identifier but is **not** usable as search input — it does not return results. PAN is still returned as a field within the response (`panNumber`/`panName`) when available.

India does not have a separate VAT distinct from GST — the GSTIN serves as both. Not every entity has a GSTIN, since registration is turnover-threshold dependent. Proprietorships (sole proprietors) have no CIN at all — only a GSTIN and PAN.
:::

#### Sample request

```json
{
    "plugins": ["ekyb-prefill"],
    "source": "IN_KYB_PREFILL",
    "country": "IN",
    "taxId": "U12345MH2020PTC123456",
    "businessName": "",
    "address": "123 Sample Road, Mumbai, MH 123 456"
}
```

#### Sample response

The Prefill response returns business data retrieved directly from the source of truth. Passthrough fields are returned as-is from the source, without fuzzy matching or verification scoring. Match fields (`nameMatch`, `addressMatch`) are only returned when the corresponding input (`businessName`, `address`) was submitted. Field availability varies significantly by entity type — see the notes under each example below.

**Example 1 — public company (CIN-based)**

```json
{
    "kyb-prefill": [
        {
            "tin": "U12345MH2020PTC123456",
            "vatNo": "14AAAAA0000A1Z1",
            "allGSTINs": [
                { "gstin": "14AAAAA0000A1Z1", "status": "Active" },
                { "gstin": "32AAAAA0000A1Z2", "status": "Active" },
                { "gstin": "02AAAAA0000A1Z3", "status": "Cancelled" }
            ],
            "panNumber": "AAAAA0000A",
            "panName": "SAMPLE INDUSTRIES LIMITED",
            "leiNumber": "5493000000000000AB12",
            "name": "SAMPLE INDUSTRIES LIMITED",
            "nameMatch": "Verified",
            "address": "1ST FLOOR SAMPLE TOWER 100 EXAMPLE ROAD NA MUMBAI Maharashtra India 400001",
            "entityType": "Public",
            "registrationStatus": "Active",
            "registrationDate": "1990-01-15T00:00:00Z",
            "creditRating": "C",
            "creditRatingDescription": "Moderate Risk",
            "industryDesc": "Manufacture of fuels, oils, and related chemical products.",
            "activityDesc": "The company is engaged in the business of manufacturing, refining, and distribution of industrial products.",
            "turnover": { "currency": "INR", "value": 5000000000000 },
            "websites": ["www.sampleindustries.example"],
            "shareholders": [
                { "name": "Public", "percentSharesHeld": 49.52 },
                { "name": "Example Commercials LLP", "percentSharesHeld": 11.12 }
            ],
            "directors": [
                { "name": "ANANYA SAMPLE RAO", "positionName": "Whole-time director" },
                { "name": "ROHAN SAMPLE MEHTA", "positionName": "Director" }
            ]
        }
    ]
}
```

*(`ultimateParent`/`immediateParent` omitted — this entity sits at the top of its own group.)*

**Example 2 — sole proprietorship (GSTIN/PAN-based, no CIN)**

```json
{
    "kyb-prefill": [
        {
            "vatNo": "27BBBBB1111B1Z1",
            "allGSTINs": [
                { "gstin": "27BBBBB1111B1Z1", "status": "Active" }
            ],
            "panNumber": "BBBBB1111B",
            "panName": "SAMPLE PROPRIETOR NAME",
            "name": "Sample Engineering Works",
            "nameMatch": "Verified",
            "address": "Plot 12, Sample Industrial Estate, Sample Road, Pune - 411000, Maharashtra, India",
            "entityType": "Proprietorship",
            "registrationStatus": "Active",
            "creditRating": "C",
            "creditRatingDescription": "Moderate Risk",
            "industryDesc": "Manufacture of fabricated metal products.",
            "activityDesc": "The entity is engaged in the business of manufacturing metal components and providing related services.",
            "otherAddresses": [
                { "type": "PAN Address", "otherAddress": "Flat 5, Sample Apartments, Sample Nagar, Pune - 411001, Maharashtra, INDIA" }
            ]
        }
    ]
}
```



:::info
Field availability differs across entity types and is not consistent even within the same type. `tin` (CIN), `leiNumber`, `registrationDate`, `turnover`, `shareholders`, `directors`, `ultimateParent`, and `immediateParent` are generally not available for proprietorships, since these entities have no company registration or share structure. `city` and `postalCode` are not consistently present for any entity type and should be treated as optional.
:::

#### Response fields

| Key | Value | Description |
| --- | --- | --- |
| `tin` | CIN | Corporate Identification Number. May not be available for all entities (e.g. proprietorships have no CIN). |
| `vatNo` | GSTIN | The active GSTIN. India has no separate VAT — this field holds the GSTIN. If the input `taxId` was a GSTIN, that value is echoed back; otherwise the first active GSTIN on record is returned. |
| `allGSTINs` | Array of `{gstin, state, status}` | All GSTINs on record for the business. May not be available for all entities. Some entities hold multiple GSTINs (one per state of operation). |
| `panNumber` | PAN | The business's (or, for proprietorships, the owner's) Permanent Account Number. |
| `panName` | Name | The legal name associated with the PAN. May reflect the individual owner's name for proprietorships. |
| `leiNumber` | LEI | Legal Entity Identifier, if available. |
| `name` | Business name | The registered legal name of the business as returned from the source of truth. |
| `nameMatch` | Verified, Approximate Match, Unverified | Match result comparing the submitted `businessName` against the registered name. Only returned when `businessName` is submitted. |
| `address` | Address | The registered business address as returned from the source of truth. |
| `addressMatch` | Verified, Approximate Match, Unverified | Match result comparing the submitted `address` against the registered address. Only returned when `address` is submitted. |
| `city` | City | The city associated with the registered business address, when available. |
| `postalCode` | Postal code | The postal code associated with the registered business address, when available. |
| `entityType` | Entity type | The legal entity type of the business (e.g. Public, Proprietorship). Defaults to "Unknown" when not available. |
| `registrationStatus` | Active, Expired, Unknown, Not Found | Current registration status of the business. Defaults to "Unknown" when not available. |
| `registrationDate` | Date | The date the business was registered. May not be available for all entities. |
| `creditRating` | Rating value (e.g. A, C) | The business's credit rating, as returned from the source of truth. Defaults to "Unknown" when not available. |
| `creditRatingDescription` | Description (e.g. Moderate Risk) | Human-readable description of the credit rating. Defaults to "Unknown" when not available. |
| `industryDesc` | Industry description | Description of the business's main activity. Defaults to "Unknown" when not available. |
| `activityDesc` | Activity description | Description of the business's principal activity. Defaults to "Unknown" when not available. |
| `turnover` | `{currency, value}` object | The business's latest reported turnover figure. May not be available for all entities. |
| `websites` | Array of strings | Websites associated with the business, if available. |
| `otherAddresses` | Array of `{type, otherAddress}` | Addresses associated with the business other than the main registered address, if any. |
| `shareholders` | Array of `{name, percentSharesHeld}` | Shareholder information, if available. |
| `directors` | Array of `{name, positionName}` | Directors associated with the business, if available. |
| `ultimateParent` | `{name, country, registrationNumber}` | The business's ultimate parent company, if the business is a subsidiary. |
| `immediateParent` | `{name, country, registrationNumber}` | The business's immediate parent company, if the business is a subsidiary. |

### Error responses

For standard HTTP response codes, see the API Error Response page. India Prefill returns the following country-specific 400 errors.

`taxId` is not a valid 21-character CIN or a valid 15-character GSTIN:

```json
{
    "status": 400,
    "error": "Bad Request",
    "message": "taxId must be a valid CIN (21 characters) or GSTIN (15 characters)",
    "path": "/omni/externalVerification/ekyb-prefill"
}
```

Any mandatory field (`plugins`, `source`, `country`, or `taxId`) is missing:

```json
{
    "status": 400,
    "error": "Bad Request",
    "message": "must not be blank",
    "path": "/omni/externalVerification/ekyb-prefill"
}
```









### Single Session Dashboard results

Prefill results are available on the **Business** tab in [single Session view](/dashboard-platform-administration/single-session-view/).