---
type: "product"
title: "DMT API India | Domestic Money Transfer API for IMPS & NEFT"
description: "Enable instant money transfers across India with Eko's DMT API. Real-time IMPS & NEFT settlements with pan-India coverage. Integrate in minutes."
category: "payment"
canonical: "https://eps.eko.in/products/dmt-api"
---


> **Canonical URL:** https://eps.eko.in/products/dmt-api
> 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.

# Domestic Money Transfer API for Assisted Cash Remittance in India

Enable assisted domestic money transfers through retailers, agents, CSPs, and fintech platforms. Let customers send money to bank accounts across India using IMPS and NEFT, with real-time status updates and transaction receipts.

_Enable instant money transfers across India with Eko's DMT API_

To get started, fill the form at https://eps.eko.in/signup (with your name, mobile number and email) or call us at +919513181707

## Features

- Real-time Transfers: Instant money transfers via IMPS with real-time status updates and confirmations.
- Pan-India Coverage: Transfer money to any bank account across India with high success rate.
- Real-time Webhooks: Receive instant notifications for transaction status updates via webhooks.
- Secure Transactions: Bank-grade encryption and security for all transactions with audit trails.
- 24/7 Availability: Round-the-clock availability with reliable, high-volume workflows.

## Benefits

- Best Success Rate: Industry-leading success rates with smart routing and automatic retries.
- Earn Commission: Earn attractive commissions on every successful transaction processed through your platform.
- Scalable Infrastructure: Handle millions of transactions with our enterprise-grade infrastructure.
- Retailer Network: Build and manage a network of retailers for cash-in and cash-out services.
- Regulatory Compliant: Built for regulated domestic money transfer workflows with partner onboarding, KYC, audit trails, and transaction controls.

## Use Cases

- Retail Banking Apps
- Remittance Services
- Kirana Stores
- Agent Banking
- Assisted Banking Networks
- CSP/BC networks

## API Preview — Get Sender Profile

`GET /customer/payment/dmt-fino/sender/{customer_id}`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9123456789 |
| User Code | 20810200 |

### Example outputs

| Field | Value |
| --- | --- |
| Next Allowed Limit | 25000 |
| Name | Rahul |
| Kyc State | 1 |

## API Preview — Onboard Sender

`POST /customer/payment/dmt-fino/sender/{customer_id}`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9123456789 |
| Name | Ramesh Kumar |
| Dob | 1990-05-15 |
| Residence Address | {"line":"India","city":"Indore","state":"Madhya Pradesh","pincode":"226024","district":"Indore","area":"gita bhavan"} |

### Example outputs

| Field | Value |
| --- | --- |
| Otp Ref Id |  |

## API Preview — Sender eKYC (Biometric)

`PUT /customer/payment/dmt-fino/sender/{customer_id}/otp`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9123456789 |
| Aadhar | 234567890123 |
| Piddata | <PidData><Resp errCode="0" errInfo="Capture Success" .../></PidData> |

### Example outputs

| Field | Value |
| --- | --- |
| Kyc Request Id | 9332126 |
| Otp Ref Id | 666803844 |

## API Preview — Validate eKYC OTP

`PUT /customer/payment/dmt-fino/sender/{customer_id}/otp/verify`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9123456789 |
| Otp | 784512 |
| Otp Ref Id | OTPREF20240101001 |
| Kyc Request Id | KYC20240101001 |

### Example outputs

| Field | Value |
| --- | --- |
| User Code | 10472151 |

## API Preview — Get Recipients

`GET /customer/payment/dmt-fino/sender/{customer_id}/recipients`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9123456789 |

### Example outputs

| Field | Value |
| --- | --- |
| Recipient Id | 117015428 |
| Recipient Name | yashwant basnett |

## API Preview — Add Recipient

`POST /customer/payment/dmt-fino/sender/{customer_id}/recipient`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9123456789 |
| Recipient Mobile | 9002331157 |
| Recipient Name | yashwant basnett |
| Ifsc | SBIN0007515 |
| Account | 38759149196 |

### Example outputs

| Field | Value |
| --- | --- |
| Recipient Id | 117015428 |

## API Preview — Send Transaction OTP

`POST /customer/payment/dmt-fino/otp`

### Example inputs

| Field | Value |
| --- | --- |
| Recipient Id | 98765 |
| Amount | 500 |
| Customer Id | 9123456789 |

### Example outputs

| Field | Value |
| --- | --- |
| Otp Ref Id | 666902416 |

## API Preview — Initiate Transfer

`POST /customer/payment/dmt-fino`

### Example inputs

| Field | Value |
| --- | --- |
| Recipient Id | 117015428 |
| Amount | 100 |
| Customer Id | 9155927131 |
| Otp | 4702 |
| Otp Ref Id | 667007109 |
| Client Ref Id | <unique_client_ref_id> |

### Example outputs

| Field | Value |
| --- | --- |
| Tx Status | 0 |
| Tid | 3570311831 |
| Bank Ref Num | 620415011744 |
| Amount | 100.00 |
| Recipient Name | Master YASHWANT BASNETT |
| Balance | 10131.18 |

## API Preview — Get Sender Profile

`GET /customer/profile/{customer_id}/dmt-levin`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9999999999 |
| User Code | 20180020 |

### Example outputs

| Field | Value |
| --- | --- |
| Next Allowed Limit | 24900 |
| Name |  |
| Kyc State | 0 |

## API Preview — Onboard Sender

`POST /customer/account/{customer_id}/dmt-levin`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9999999999 |
| User Code | 99080253 |
| Name | Gaurav |
| Dob | 1997-07-01 |
| Residence Address | {"line":"India","city":"Lucknow","state":"Uttar pradesh","pincode":"226024","district":"Lucknow","area":"gomtinagar"} |

### Example outputs

| Field | Value |
| --- | --- |
| Otp Ref Id | MjQzMjYxMjQzMTMyMjQ2YTJlNWEzOTc5MzU1MTRiNDg1OTc0MzU1NjYxNDE3NzQ3NTgzNjZlNzg3NTUxNjk2ODQ2NzE0ZTQ5NzE0NzcyNTg2MjZkNTc3MTY2NGI3NjRiMzA2NzM4NTk0MzUwNTg3NjRlNTQ1MjY5 |

## API Preview — Validate Aadhaar & Generate OTP

`POST /customer/payment/dmt-levin/sender/{customer_id}/aadhaar/otp`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9876543210 |
| Aadhar | 123456789012 |
| Otp Ref Id | 73849201 |
| Additional Info | 1 |

### Example outputs

| Field | Value |
| --- | --- |
| Otp Ref Id | 93847201 |
| Mobile Hint | ******3210 |

## API Preview — Validate Sender Aadhaar OTP

`POST /customer/payment/dmt-levin/sender/{customer_id}/aadhaar/otp/verify`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9876543210 |
| Otp | 123456 |
| Otp Ref Id | 93847201 |
| Intent Id | 20 |
| Additional Info | 1 |

### Example outputs

| Field | Value |
| --- | --- |
| Verified | true |
| Name | Arjun Mehta |
| Gender | M |
| Dob | 10-01-1988 |
| Masked Aadhaar | XXXX-XXXX-3456 |

## API Preview — DMT Customer KYC

`POST /customer/account/{customer_id}/dmt-levin/ekyc`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9911542536 |
| User Code | 99080253 |
| Otp Ref Id | Yd6uRIneZVJpTQRhqL6CZ1e46nmMhYYjxg40levn4pG4m+AWOZn5R29EUkNGljBEkwjW4GWlKNiPdQXFVtwHccxey5PZnPgz |
| Piddata | <?xml version='1.0'?><PidData><Data type='X'>...</Data><DeviceInfo mc='...' /></PidData> |

## API Preview — Get Recipients

`GET /customer/payment/dmt-levin/sender/{customer_id}/recipients`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 8969622436 |
| User Code | 32515001 |
| Additional Info | 1 |

### Example outputs

| Field | Value |
| --- | --- |
| Recipient Id | 10018839 |
| Recipient Name | Aditya |

## API Preview — Add Recipient

`POST /customer/payment/dmt-levin/sender/{customer_id}/recipient`

### Example inputs

| Field | Value |
| --- | --- |
| Customer Id | 9999999999 |
| User Code | 99080253 |
| Bank Id | 6 |
| Recipient Name | Rahul |
| Recipient Mobile | 8888888888 |
| Recipient Type | 3 |
| Account | 1234567891023 |
| Ifsc | HDFC0000583 |
| Account Type | 1 |
| Type | ifsc |

### Example outputs

| Field | Value |
| --- | --- |
| Recipient Id | 116456986 |

## API Preview — Send Transaction OTP

`POST /customer/payment/dmt-levin/otp`

### Example inputs

| Field | Value |
| --- | --- |
| User Code | 99080253 |
| Recipient Id | 116456986 |
| Amount | 500 |
| Customer Id | 9999999999 |
| Beneficiary Id | 40378 |

### Example outputs

| Field | Value |
| --- | --- |
| Otp Ref Id | 0ac275d7-2919-44ec-a64d-3a7ee0958563 |

## API Preview — Initiate DMT-Levin Transaction

`POST /customer/payment/dmt-levin`

### Example inputs

| Field | Value |
| --- | --- |
| User Code | 17260001 |
| Customer Id | 8999999992 |
| Recipient Id | 10017680 |
| Amount | 110 |
| Otp | 778341 |
| Otp Ref Id | zCISyglexo0Pjqp4YrS2ssweuD9v1GxjISTW8wU7An8Wem1UyNws5830yh7q/sf5J4R3BY= |
| Client Ref Id | RIM65656566 |
| Timestamp | 2025-01-21 11:48:50 |
| Currency | INR |
| Channel | 2 |
| State | 1 |
| Recipient Id Type | 1 |
| Geolocation | 26.8863786,75.7393589 |

### Example outputs

| Field | Value |
| --- | --- |
| Tid | 3111111112 |
| Bank Ref Num | 51334977222863 |
| Amount | 110.00 |
| Recipient Name | Rahul |
| Balance | 1.48 |

## Integration Steps

1. **[Sign Up](/console)** — Sign up in minutes with your mobile number (OTP verify).
2. **Verify Identity** — Complete your basic KYC with PAN and address details to verify your identity.
3. **Test APIs Live** — Load funds into your wallet and test the verification APIs live — evaluate before you integrate.
4. **[Integrate with AI](/ai)** — Ready to build? Visit our AI hub for free plugins & tools to integrate faster.
5. **Go Live** — Get production credentials and start processing real transactions.

## FAQs

### How long does a transfer take?
IMPS transfers are instant (within seconds). NEFT transfers are processed in batches throughout the day.

### Is there a settlement delay?
Settlement timelines depend on your agreement. Most partners receive T+1 settlements, with options for same-day settlements for high-volume partners.

### How are money transfers authenticated?
Senders complete a **one-time biometric Aadhaar eKYC**. Every transfer after that requires a **fresh OTP** sent to the sender's registered mobile. Transfers are capped at **₹5,000 per transaction**, and sender-level monthly limits apply.

### How do I get started?
Four steps: **sign up** at the [developer console page](/console), verify your identity with PAN and address details, load your wallet to test the APIs live, then integrate and go live. Sandbox credentials are issued immediately — you can call your first endpoint before any paperwork clears.

### What is EPS?
**EPS (Eko Platform Services)** is the technology arm of Eko — the developer tools, AI tooling and APIs that power modern fintech integration, from money transfer and AePS to identity verification.

### What are the different ways to integrate with Eko EPS?
Three paths, pick whichever suits your stack:

- Call the **REST APIs** directly.
- Use our official **Node.js, Python, PHP, Go or Java SDKs** to skip request-signing boilerplate.
- Let an **AI coding agent** build it via our [MCP server and agent skills](/ai#install).

For multi-step flows (onboard a sender, *then* transfer) start from a [transaction-flow recipe](/recipe) rather than wiring single endpoints together yourself.

### How does API authentication work?
Each request carries your static `developer_key` header plus a per-request `secret-key` header — an **HMAC-SHA256** signature of the current timestamp, keyed by your access key. The access key itself is **never sent over the wire**. You receive UAT keys on signup and production keys after KYC.

The [How Authentication Works](/docs/how-auth-works) guide has the full signing recipe in five languages plus an **in-browser playground** that generates and verifies a real `secret-key` against your own access key.

### Why does my API call return 401 Unauthorized?
Authentication failed. For the known causes, the response body's `status` names the check that failed:

- `2483` — The developer_key is wrong.
- `2484` — The secret-key (signature) is wrong.
- `2485` — The secret-key-timestamp is more than 2 minutes older or newer than the server clock, or was reused from an earlier request.
- `2486` — The secret-key-timestamp is not in milliseconds (13 digits) — often seconds (10 digits).
- `2487` — The secret-key or secret-key-timestamp header is missing.

If your signature checks out in the [secret-key playground](/docs/how-auth-works#try-it-secret-key-playground) and you still get a `401`, make sure the base URL matches your keys (UAT vs production) and, in production, that your server's IP is whitelisted.

### Is there a sandbox environment for testing?
Yes. A full **sandbox** is available immediately on signup — test your integration end-to-end before going live, no commitment required. For offline work you can also run our [mock server](/ai#artifacts) (`npx -y @ekoindia/eps-mock-server`) and get canned responses with no network calls at all.

### What are the sandbox and production base URLs?
Sandbox and production share the same paths and differ **only** by base URL:

- UAT / Sandbox — `https://staging.eko.in/ekoapi/v3`
- Production — `https://api.eko.in/ekoicici/v3`

A common cause of failures is calling the sandbox URL with live credentials, or vice-versa — **make sure the base URL matches the keys you are using**.

### Do I need to whitelist my server IP?
It's optional. **IP whitelisting** is available for **production** access as an extra layer of security — share your **static public (server) IP** with us and we'll whitelist it.

### Can an AI coding agent build the integration for me?
Yes — that is the fastest path. Point your agent (Claude Code, Codex, Cursor, Copilot, …) at our **MCP server** and it can look up any endpoint, generate correctly-signed requests, and scaffold the integration in your own stack. Install it in [one step from the AI hub](/ai#install), or start from a [ready-made prompt](/ai#quick-start).

We also publish an **OpenAPI 3.1 spec**, a **Postman collection** and per-agent **context packs** (`AGENTS.md`, `CLAUDE.md`, `.cursorrules`) so an agent has the ground truth instead of guessing.

### What response times can I expect?
Most verification APIs return in **real time with sub-second responses**, and 99th-percentile latency stays under two seconds across verification endpoints. Transaction APIs (DMT, AePS, BBPS) respond within seconds.

### Can the API handle high volumes?
Yes. The API is designed to handle **large-scale volumes** reliably without performance degradation.

### How is API usage billed?
Usage is billed **per successful API call** with no minimum commitment. Volume-based pricing tiers are available — see the [pricing calculator](/pricing) for indicative rates, or contact our team for a custom quote.

## API Endpoints

- **DMT – Fino**
  - **Sender**
    - [Get Sender Profile](https://eps.eko.in/docs/dmt-get-sender.md) (GET)
    - [Onboard Sender](https://eps.eko.in/docs/dmt-onboard-sender.md) (POST)
    - [Sender eKYC (Biometric)](https://eps.eko.in/docs/dmt-fino-sender-ekyc.md) (PUT)
    - [Validate eKYC OTP](https://eps.eko.in/docs/dmt-fino-validate-ekyc-otp.md) (PUT)
  - **Recipients**
    - [Get Recipients](https://eps.eko.in/docs/dmt-get-recipients.md) (GET)
    - [Add Recipient](https://eps.eko.in/docs/dmt-add-recipient.md) (POST)
  - **Transaction**
    - [Send Transaction OTP](https://eps.eko.in/docs/dmt-send-otp.md) (POST)
    - [Initiate Transfer](https://eps.eko.in/docs/dmt-initiate-transfer.md) (POST)
- **DMT – Levin**
  - **Sender**
    - [Get Sender Profile](https://eps.eko.in/docs/dmt-levin-get-sender.md) (GET)
    - [Onboard Sender](https://eps.eko.in/docs/dmt-levin-onboard-sender.md) (POST)
    - [Validate Aadhaar & Generate OTP](https://eps.eko.in/docs/aadhaar-dmt-levin-validate.md) (POST)
    - [Validate Sender Aadhaar OTP](https://eps.eko.in/docs/aadhaar-dmt-levin-verify-otp.md) (POST)
    - [DMT Customer KYC](https://eps.eko.in/docs/dmt-levin-sender-ekyc.md) (POST)
  - **Recipients**
    - [Get Recipients](https://eps.eko.in/docs/dmt-levin-get-recipients.md) (GET)
    - [Add Recipient](https://eps.eko.in/docs/dmt-levin-add-recipient.md) (POST)
  - **Transaction**
    - [Send Transaction OTP](https://eps.eko.in/docs/dmt-levin-send-otp.md) (POST)
    - [Initiate DMT-Levin Transaction](https://eps.eko.in/docs/dmt-levin-initiate-transfer.md) (POST)

## API Documentation

- [Full developer docs](https://eps.eko.in/docs/dmt-get-sender)

## Related Products

- [AePS Cashout](https://eps.eko.in/products/aeps-api): Aadhaar-enabled biometric cash withdrawal & transfer ([markdown](https://eps.eko.in/products/aeps-api.md))

- [Site index](https://eps.eko.in/index.md): Full list of API products, industries, and solution packs
