> ## Documentation Index
> Fetch the complete documentation index at: https://docs.txncheck.com/llms.txt
> Use this file to discover all available pages before exploring further.

# KYC by Mobile

> Get KYC data by mobile number

# KYC by Mobile

Perform KYC verification using only the mobile number. Fetches identity-linked details such as name, date of birth, PAN, and masked Aadhaar from authorized sources without OTP verification.

## Overview

This endpoint helps businesses:

* Verify customer identity using their mobile number
* Retrieve KYC data including PAN and masked Aadhaar
* Comply with regulatory requirements
* Streamline digital onboarding

## Request

<ParamField body="mobile" type="string" required>
  Mobile number in Indian international format (`+91XXXXXXXXXX`)
</ParamField>

<ParamField body="async" type="boolean" default="true">
  If `true` (default), request is queued and result delivered via webhook. If `false`, wait for result synchronously (up to 30 seconds).
</ParamField>

### Headers

| Header         | Value              | Required |
| -------------- | ------------------ | -------- |
| `X-API-Key`    | Your API key       | Yes      |
| `Content-Type` | `application/json` | Yes      |

### Example Request (Async Mode - Default)

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.txncheck.in/api/v1/kyc-by-mobile" \
    -H "X-API-Key: fb_your_api_key_here" \
    -H "Content-Type: application/json" \
    -d '{
      "mobile": "+919876543210"
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.txncheck.in/api/v1/kyc-by-mobile",
      headers={
          "X-API-Key": "fb_your_api_key_here",
          "Content-Type": "application/json"
      },
      json={"mobile": "+919876543210"}
  )
  print(response.json())
  ```

  ```javascript Node.js theme={null}
  const axios = require('axios');

  const response = await axios.post(
    'https://api.txncheck.in/api/v1/kyc-by-mobile',
    { mobile: '+919876543210' },
    {
      headers: {
        'X-API-Key': 'fb_your_api_key_here',
        'Content-Type': 'application/json'
      }
    }
  );
  console.log(response.data);
  ```

  ```php PHP theme={null}
  <?php
  $ch = curl_init("https://api.txncheck.in/api/v1/kyc-by-mobile");
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "X-API-Key: fb_your_api_key_here",
      "Content-Type: application/json"
  ]);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
      "mobile" => "+919876543210"
  ]));
  $response = curl_exec($ch);
  curl_close($ch);
  echo $response;
  ```

  ```go Go theme={null}
  payload := map[string]string{"mobile": "+919876543210"}
  body, _ := json.Marshal(payload)

  req, _ := http.NewRequest("POST", "https://api.txncheck.in/api/v1/kyc-by-mobile", bytes.NewBuffer(body))
  req.Header.Set("X-API-Key", "fb_your_api_key_here")
  req.Header.Set("Content-Type", "application/json")

  client := &http.Client{}
  resp, _ := client.Do(req)
  ```
</CodeGroup>

### Example Request (Sync Mode)

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.txncheck.in/api/v1/kyc-by-mobile" \
    -H "X-API-Key: fb_your_api_key_here" \
    -H "Content-Type: application/json" \
    -d '{
      "mobile": "+919876543210",
      "async": false
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.txncheck.in/api/v1/kyc-by-mobile",
      headers={
          "X-API-Key": "fb_your_api_key_here",
          "Content-Type": "application/json"
      },
      json={"mobile": "+919876543210", "async": False}
  )
  print(response.json())
  ```

  ```javascript Node.js theme={null}
  const axios = require('axios');

  const response = await axios.post(
    'https://api.txncheck.in/api/v1/kyc-by-mobile',
    { mobile: '+919876543210', async: false },
    {
      headers: {
        'X-API-Key': 'fb_your_api_key_here',
        'Content-Type': 'application/json'
      }
    }
  );
  console.log(response.data);
  ```
</CodeGroup>

## Response

<Tabs>
  <Tab title="Async Mode (202)">
    ### 202 Accepted

    Request accepted and queued for processing.

    ```json theme={null}
    {
      "statusCode": 202,
      "message": "Request accepted and queued for processing",
      "requestId": "550e8400-e29b-41d4-a716-446655440000",
      "status": "QUEUED"
    }
    ```

    ### Result Data (via webhook or polling)

    ```json theme={null}
    {
      "requestId": "550e8400-e29b-41d4-a716-446655440000",
      "method": "kyc-by-mobile",
      "status": "COMPLETED",
      "result": {
        "kycByMobile": {
          "fullName": "JOHN DOE",
          "pan": "ABCDE1234F",
          "maskedAadhaar": "XXXXXXXX1234",
          "dob": "1990-01-15",
          "status": "1",
          "cached": false
        }
      },
      "webhookStatus": "SENT",
      "createdAt": "2025-01-11T10:30:00.000Z",
      "completedAt": "2025-01-11T10:30:05.000Z"
    }
    ```
  </Tab>

  <Tab title="Sync Mode (200)">
    ### 200 OK

    Request completed synchronously.

    ```json theme={null}
    {
      "statusCode": 200,
      "requestId": "550e8400-e29b-41d4-a716-446655440000",
      "method": "kyc-by-mobile",
      "status": "COMPLETED",
      "result": {
        "kycByMobile": {
          "fullName": "JOHN DOE",
          "pan": "ABCDE1234F",
          "maskedAadhaar": "XXXXXXXX1234",
          "dob": "1990-01-15",
          "status": "1",
          "cached": false
        }
      },
      "createdAt": "2025-01-11T10:30:00.000Z",
      "completedAt": "2025-01-11T10:30:05.000Z"
    }
    ```

    <Warning>
      Sync mode has a 30-second timeout. If processing takes longer, you'll receive a 408 Request Timeout error.
    </Warning>
  </Tab>
</Tabs>

### Result Fields

| Field           | Type   | Description                                   |
| --------------- | ------ | --------------------------------------------- |
| `fullName`      | string | Full name as per KYC records                  |
| `pan`           | string | PAN number                                    |
| `maskedAadhaar` | string | Masked Aadhaar number (last 4 digits visible) |
| `dob`           | string | Date of birth in `YYYY-MM-DD` format          |
| `status`        | string | `"1"` if data found, `"0"` if not found       |

## Error Responses

### 400 Bad Request

Invalid mobile number format.

```json theme={null}
{
  "statusCode": 400,
  "message": ["Mobile must be in format +91XXXXXXXXXX (Indian number)"],
  "error": "Bad Request"
}
```

### 401 Unauthorized

Invalid or missing API key.

```json theme={null}
{
  "statusCode": 401,
  "message": "Invalid API key",
  "error": "Unauthorized"
}
```

### 402 Payment Required

Insufficient account balance.

```json theme={null}
{
  "statusCode": 402,
  "message": "Insufficient wallet balance",
  "error": "Payment Required"
}
```

### 403 Forbidden

Method not enabled for your account.

```json theme={null}
{
  "statusCode": 403,
  "message": "Access to method 'kyc-by-mobile' is not allowed",
  "error": "Forbidden"
}
```

### 408 Request Timeout (Sync Mode Only)

Request processing timed out.

```json theme={null}
{
  "statusCode": 408,
  "message": "Request processing timed out after 30 seconds",
  "error": "Request Timeout"
}
```

### 429 Too Many Requests

Rate limit exceeded.

```json theme={null}
{
  "statusCode": 429,
  "message": "Too Many Requests",
  "error": "Too Many Requests"
}
```

## Use Cases

<AccordionGroup>
  <Accordion title="Digital Onboarding">
    Streamline customer onboarding by auto-populating KYC information from mobile number.
  </Accordion>

  <Accordion title="Identity Verification">
    Verify customer identity by cross-referencing provided information with KYC data.
  </Accordion>

  <Accordion title="Compliance Checks">
    Meet regulatory requirements by verifying customer identity documents.
  </Accordion>

  <Accordion title="Fraud Detection">
    Detect potential fraud by comparing claimed identity with verified KYC data.
  </Accordion>
</AccordionGroup>

<Warning>
  KYC data should be handled in compliance with data protection regulations. Store only what is necessary and ensure proper security measures.
</Warning>
