---
title: "Validate Sender PAN API Reference"
description: "Validate the sender's PAN to complete DigiKhata KYC and return the updated wallet profile."
canonical: "https://eps.eko.in/docs/ppi-digikhata-validate-pan"
---


> **Canonical URL:** https://eps.eko.in/docs/ppi-digikhata-validate-pan
> This is a machine-readable Markdown version of the page for AI agents and LLMs. The primary (HTML) version lives at the canonical URL above.

# Validate Sender PAN API Reference

`POST https://staging.eko.in/ekoapi/v3/customer/payment/ppi-digikhata/sender/{customer_id}/pan`

Validate the sender's PAN to complete DigiKhata KYC and return the updated wallet profile.

Submits the sender's PAN to finish DigiKhata onboarding KYC. On success the response returns the updated `customer_profile` (verified sender name and recalculated limits).

> View product & pricing details: [PPI Wallet](https://eps.eko.in/products/ppi-api.md)

## Path parameters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| customer_id | string | yes | Sender's 10-digit mobile number. e.g. 9444444444 |

## Body parameters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| initiator_id | string | yes | Registered mobile number of the API user (see Platform Credentials). e.g. 9962981729 |
| user_code | string | yes | User code of the retailer/agent the service is run for. e.g. 20810200 |
| client_ref_id | string | no | Unique reference id per API call, generated by your system. e.g. REQ-20260101-001 |
| pan_number | string | yes | The PAN number of the sender. e.g. ABCDE1234F |

## Headers

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| developer_key | string | yes | Static API key issued to your account after KYC. |
| secret-key | string | yes | Dynamic per-request signature: base64(HMAC-SHA256(timestamp, base64(access_key))). |
| secret-key-timestamp | string | yes | Current time in milliseconds since UNIX epoch, used to compute secret-key. Must match server time. |
| content-type | string | yes | application/json e.g. application/json |

## Response

⭐ marks fields highlighted as verifiable.

| Field | Type | Description |
| --- | --- | --- |
| status | number | Primary success indicator (0 = success). |
| message | string | Human-readable response / error message. |
| response_status_id | number | Granular status id; see the shared error-codes table. |
| response_type_id | number | A unique id for every possible response shape (success or error) — useful for client logic branching and analytics. |
| data | object | API-specific response payload. |
| data.customer_profile ⭐ | object | Updated wallet profile with verified sender name and recalculated limits. |
| data.customer_profile.name ⭐ | string | Verified registered name of the sender. |
| data.customer_profile.next_allowed_limit ⭐ | string | Remaining transfer limit for the period (INR). |
| data.sender_name ⭐ | string | Verified name of the sender. |

## Example request

```json
{
  "initiator_id": "9962981729",
  "user_code": "20810200",
  "client_ref_id": "REQ-20260101-001",
  "pan_number": "ABCDE1234F"
}
```

## Example response

```json
{
  "response_status_id": -1,
  "data": {
    "customer_profile": {
      "total_monthly_limit": "50000.0",
      "mobile": "9444444444",
      "kyc_id": "",
      "ekyc_enabled": 0,
      "kyc_validity": "",
      "kyc_remark": "",
      "kyc_type": "",
      "balance": "0.00",
      "next_allowed_limit": "5287.0",
      "name": "Karan Garg",
      "digital_ekyc": 0,
      "chart": [
        {
          "data_type_id": 10,
          "data": {
            "unavailable": 0,
            "used": 44713,
            "remaining": 5287
          },
          "label": ""
        }
      ],
      "email": "",
      "kyc_state": 0
    },
    "id_proof_type_id": "",
    "is_registered": 0,
    "id_proof": "",
    "otpOptionalSum": "",
    "sender_name": "Karan Garg",
    "otpNotRequiredSum": "",
    "ekyc_enabled": "",
    "otpNotRequiredSumNeft": "",
    "next_allowed_limit": 5287,
    "account": "",
    "kyc_state": 0,
    "otpOptionalSumNeft": ""
  },
  "response_type_id": 309,
  "message": "Success!",
  "status": 0
}
```
