---
title: "Get Sender Profile API Reference"
description: "Fetch the DMT-Fino profile of a registered sender by mobile number."
canonical: "https://eps.eko.in/docs/dmt-get-sender"
---


> **Canonical URL:** https://eps.eko.in/docs/dmt-get-sender
> 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.

# Get Sender Profile API Reference

`GET https://staging.eko.in/ekoapi/v3/customer/payment/dmt-fino/sender/{customer_id}`

Fetch the DMT-Fino profile of a registered sender by mobile number.

The first step in the DMT flow. Call this to check whether a customer is already registered as a DMT sender. If the sender exists, the response returns their profile and remaining transfer limits so you can skip registration.

> View product & pricing details: [Domestic Money Transfer (DMT)](https://eps.eko.in/products/dmt-api.md)

## Path parameters

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

## Query parameters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| initiator_id | string | yes | Registered mobile number of the API user (see Platform Credentials). e.g. 9962981729 |
| client_ref_id | string | no | Unique reference ID per API call, generated by your system (max 20 characters). e.g. 2026010100123456789 |
| user_code | string | yes | Agent user code (sent as a query parameter). e.g. 20810200 |

## 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.is_registered | number | Registration flag from the profile lookup. Read customer_profile.kyc_state to determine KYC completion. |
| data.next_allowed_limit ⭐ | number | Remaining remittance limit currently available (INR). |
| data.kyc_state | number | Top-level KYC flag for the lookup response. |
| data.customer_profile ⭐ | object | Sender profile summary (present once KYC is complete). |
| data.customer_profile.name ⭐ | string | Sender name. |
| data.customer_profile.mobile | string | Sender's mobile number. |
| data.customer_profile.balance | string | Sender wallet balance (INR). |
| data.customer_profile.total_monthly_limit | string | Sender's monthly remittance limit (INR). |
| data.customer_profile.next_allowed_limit | string | Remaining limit currently available (INR). |
| data.customer_profile.kyc_state ⭐ | number | Sender KYC state (1 = KYC complete on the profile). |
| data.customer_profile.chart | array | Per-period limit-usage breakdown. |
| data.customer_profile.chart.data_type_id | number | Identifier for the limit period/bucket. |
| data.customer_profile.chart.data | object | Limit usage for the period. |
| data.customer_profile.chart.data.unavailable | number | Amount blocked/unavailable (INR). |
| data.customer_profile.chart.data.used | number | Amount already used (INR). |
| data.customer_profile.chart.data.remaining | number | Remaining limit for the period (INR). |
| data.customer_profile.chart.label | string | Display label for the period. |

## Response types

Branch on `response_type_id` to decide the next call:

| response_type_id | Meaning | Next step |
| --- | --- | --- |
| 308 | Sender not found | [dmt-onboard-sender](https://eps.eko.in/docs/dmt-onboard-sender.md) |
| 309 | Sender found | [dmt-get-recipients](https://eps.eko.in/docs/dmt-get-recipients.md) |
| 2134 | Sender found, Biometric eKYC pending | [dmt-fino-sender-ekyc](https://eps.eko.in/docs/dmt-fino-sender-ekyc.md) |
| 2129 | Sender found, Validate eKYC OTP pending | [dmt-fino-validate-ekyc-otp](https://eps.eko.in/docs/dmt-fino-validate-ekyc-otp.md) |

## Example response

`response_type_id` `309` — Sender found. Next step: [dmt-get-recipients](https://eps.eko.in/docs/dmt-get-recipients.md).

```json
{
  "status": 0,
  "response_status_id": -1,
  "response_type_id": 309,
  "message": "Success!",
  "data": {
    "is_registered": 0,
    "next_allowed_limit": 25000,
    "kyc_state": 0,
    "customer_profile": {
      "total_monthly_limit": "25000.0",
      "mobile": "9155927131",
      "balance": "0.00",
      "next_allowed_limit": "25000.0",
      "name": "Rahul",
      "kyc_state": 1,
      "chart": [
        {
          "data_type_id": 10,
          "data": {
            "unavailable": 0,
            "used": 0,
            "remaining": 25000
          },
          "label": ""
        }
      ]
    }
  }
}
```

## Error scenarios

| Status | response_type_id | Scenario |
| --- | --- | --- |
| 200 | `308` — Sender not found | Sender not enrolled — proceed to Onboard Sender |
| 200 | `2134` — Sender found, Biometric eKYC pending | Enrolled on Eko, KYC pending on Fino — proceed to Sender eKYC |
