Earlier in our docs is an overview of our Know Your Business [here](https://developer.incode.com/docs/ekyb). Now, this page is focused specifically on eKYB Pre-fill in Mexico (MX). eKYB Pre-fill in MX leverages Mexico's source of truth to automatically retrieve and populate business information based on a company's tax ID (RFC), including the business name, entity type, registration status, incorporation date, and contact details — without requiring manual input from the user.

# Integration

## Direct API Approach

All module configurations and user data can be forwarded directly in the request for performing a KYB Pre-fill lookup. 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](https://developer.incode.com/reference/introduction).

### [KYB Pre-fill request](https://developer.incode.com/reference/externalverificationekyb)

**POST /omni/externalVerification/ekyb-prefill**

This endpoint performs a KYB Pre-fill lookup for the business specified, retrieving and returning available business data from the source of truth. All fields below are mandatory.

- **plugins: must be ["ekyb-prefill"]**: (mandatory) String array. Specifies the pre-fill flow.
- **source: must be "MX_KYB_PREFILL"**: (mandatory) String. Identifies the pre-fill source.
- **country**: (mandatory) String. Two-letter Alpha-2 country code. Must be `MX`.
- **taxId**: (mandatory) String. Mexican RFC number. Accepted formats: 13 characters (4 letters + 6 digits + 3 alphanumeric characters) for legal entities, or 12 characters (3 letters + 6 digits + 3 alphanumeric characters) for individuals.

### **Business Tax IDs Supported in MX**

- **RFC (Registro Federal de Contribuyentes)**: 12 characters for individuals (e.g. `AIGB850818QJ9` → 4 letters + 6 digits + 3 chars), or 13 characters for legal entities (e.g. `CSE250529PSA` → 3 letters + 6 digits + 3 chars).

Input must be 12 or 13 alphanumeric characters. Requests with an invalid format will return a 400 error.

JSON

```json
{
    "plugins": ["ekyb-prefill"],
    "source": "MX_KYB_PREFILL",
    "country": "MX",
    "taxId": "ABCD123456789"
}
```

### Response

The KYB Pre-fill response returns business data retrieved directly from the source of truth. Fields are returned as-is from the source, without fuzzy matching or verification scoring.

### **API Authentication**

All endpoints require authentication headers to be specified as stated in [Incode API Documentation](https://developer.incode.com/reference/introduction).

JSON

```json
"kyb-prefill": [
    {
        "tin": "ABCD123456789",
        "name": "Company Name ABC",
        "entityType": "Company/Legal Entity",
        "registrationStatus": "Active",
        "taxIdEffectiveDate": "2025-07-17",
        "incorporationDate": "2025-05-29",
        "email": "sampleemail@gmail.com"
    }
]
```

| Incode API Key | Value | Definition |
| --- | --- | --- |
| tin | RFC number | The tax ID submitted in the request, as returned and confirmed by the source of truth. |
| name | Business name | The registered legal name of the business as returned from the source of truth. |
| entityType | Entity type | The legal entity type of the business as returned from the source of truth (e.g. `Company/Legal Entity`, `Individual/Sole Proprietorship`). |
| registrationStatus | Active, Expired, Unknown | Current registration status of the business. <br>`Active` = currently registered and active (Vigente). <br>`Expired` = registration has lapsed (Expirado). <br>`Unknown` = status could not be determined.<br>`Not Found` = inactive RFC or RFC could not be found. |
| taxIdEffectiveDate | Date | The date from which the RFC became effective, as returned from the source of truth. |
| incorporationDate | Date | The date the business was incorporated, as returned from the source of truth. |
| email | Email address | The business contact email address registered with the source of truth, if available. |

_Note:_ 'RFC is not found' message with a 200 code will be returned but not all keys will come back. As of now (June 30th), message is returned with registrationStatus key but will be revisited by July 2nd.

### KYB Pre-fill error responses

Please refer to [error response](https://developer.incode.com/reference/introduction#api-responses) to see conventional HTTP response codes to indicate the success or failure of an API request.

Custom 400 error if `taxId` is missing, empty, or not 12–13 alphanumeric characters:

```undefined
{
    "timestamp": 1782851408892,
    "status": 400,
    "error": "taxId must be a valid Mexican RFC: 12 or 13 alphanumeric characters (3-4 letters, 6 digits, 3 alphanumeric)",
    "message": "taxId must be a valid Mexican RFC: 12 or 13 alphanumeric characters (3-4 letters, 6 digits, 3 alphanumeric)",
    "path": "/omni/externalVerification/ekyb-prefill"
}
```

Custom 400 error if any mandatory field (`plugins`, `source`, `country`, or `taxId`) is missing:

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

Custom 400 error if wrong country code is provided (i.e anything other than MX):

```text
{
    "timestamp": 1782851583695,
    "status": 400,
    "error": "Bad Request",
    "message": "IllegalArgumentException: No enum constant com.incodesmile.onboarding.integration.external.government.ekyb.domain.entity.model.EkybCountry.CO",
    "path": "/omni/externalVerification/ekyb-prefill"
}
```

## Single Session Dashboard Results

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