---
title: "DMT (Fino) — Send Money — API Recipe"
description: "Full Fino DMT money-transfer flow: look up the sender, onboard and biometric-eKYC them if new, pick or add the recipient, then send an OTP-verified transfer."
canonical: "https://eps.eko.in/recipe/dmt-fino-send-money"
---


> **Canonical URL:** https://eps.eko.in/recipe/dmt-fino-send-money
> 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.

# DMT (Fino) — Send Money — API Recipe

Full Fino DMT money-transfer flow: look up the sender, onboard and biometric-eKYC them if new, pick or add the recipient, then send an OTP-verified transfer.

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

## Flow

```mermaid
flowchart TD
  s1["GET Get Sender Profile"]
  s2["POST Onboard Sender"]
  s3["PUT Sender eKYC (Biometric)"]
  s4["PUT Validate eKYC OTP"]
  s5["GET Get Recipients"]
  s6["POST Add Recipient"]
  s7["POST Send Transaction OTP"]
  s8["POST Initiate Transfer"]
  done(["done"])
  s1 -->|"response_type_id 308: Sender not found — onboard them before continuing."| s2
  s1 -->|"response_type_id 2134: Sender found but biometric eKYC is pending — capture their fingerprint."| s3
  s1 -->|"response_type_id 2129: Sender found mid-eKYC — only the OTP validation is left."| s4
  s1 -->|"response_type_id 309: Sender found and KYC complete — skip onboarding and go straight to recipients."| s5
  s2 -->|"response_type_id 309: Already onboarded on Fino externally, KYC complete — no eKYC needed."| s5
  s2 --> s3
  s3 --> s4
  s4 --> s5
  s5 -->|"response_type_id 22: No recipients saved yet — add one before transacting."| s6
  s5 -->|"response_type_id 23: Recipient already saved — reuse its `recipient_id`."| s7
  s6 --> s7
  s7 --> s8
  s8 -->|"status 0"| done
```

## Steps

1. `GET` **[Get Sender Profile](https://eps.eko.in/docs/dmt-get-sender.md)** — Check whether the customer is already a registered DMT sender, and which stage of onboarding they are at. The `response_type_id` decides where the flow enters.
   - If `response_type_id` is `308` → go to step 2 (Onboard Sender). Sender not found — onboard them before continuing.
   - If `response_type_id` is `2134` → go to step 3 (Sender eKYC (Biometric)). Sender found but biometric eKYC is pending — capture their fingerprint.
   - If `response_type_id` is `2129` → go to step 4 (Validate eKYC OTP). Sender found mid-eKYC — only the OTP validation is left.
   - If `response_type_id` is `309` → go to step 5 (Get Recipients). Sender found and KYC complete — skip onboarding and go straight to recipients.
2. `POST` **[Onboard Sender](https://eps.eko.in/docs/dmt-onboard-sender.md)** — Register a new sender with name, date of birth and residence address. This opens the sender on Eko but leaves KYC pending on Fino (`response_type_id=2134`) — they cannot transact yet.
   - If `response_type_id` is `309` → go to step 5 (Get Recipients). Already onboarded on Fino externally, KYC complete — no eKYC needed.
3. `PUT` **[Sender eKYC (Biometric)](https://eps.eko.in/docs/dmt-fino-sender-ekyc.md)** — Biometric Aadhaar eKYC — one-time per sender. Capture the PID block from an RD-service fingerprint scanner and submit it with the sender's Aadhaar number; the response returns the `kyc_request_id` and `otp_ref_id` the next step needs. Completing eKYC raises the sender's monthly limit from ₹5,000 to ₹25,000.
4. `PUT` **[Validate eKYC OTP](https://eps.eko.in/docs/dmt-fino-validate-ekyc-otp.md)** — Confirm the eKYC by submitting the OTP sent to the sender's Aadhaar-linked mobile, along with the `kyc_request_id` and `otp_ref_id` from the biometric step. The sender is fully KYC-verified on success.
5. `GET` **[Get Recipients](https://eps.eko.in/docs/dmt-get-recipients.md)** — List the sender's saved beneficiaries. If the one they want is already there, reuse its `recipient_id` and skip Add Recipient.
   - If `response_type_id` is `22` → go to step 6 (Add Recipient). No recipients saved yet — add one before transacting.
   - If `response_type_id` is `23` → go to step 7 (Send Transaction OTP). Recipient already saved — reuse its `recipient_id`.
6. `POST` **[Add Recipient](https://eps.eko.in/docs/dmt-add-recipient.md)** — Add the beneficiary the sender wants to transfer to; returns the `recipient_id` used by the two transaction steps.
7. `POST` **[Send Transaction OTP](https://eps.eko.in/docs/dmt-send-otp.md)** — Pre-authorise the transfer: sends an OTP to the sender's registered mobile and returns the `otp_ref_id`. Required before every transfer — request a fresh one per attempt.
8. `POST` **[Initiate Transfer](https://eps.eko.in/docs/dmt-initiate-transfer.md)** — Submit the transfer with the customer-entered OTP, its `otp_ref_id`, and a `client_ref_id` unique to this attempt. The only money-debit step — persist `tid` and `bank_ref_num` and reconcile before any retry.
   - If `status` is `0` → the flow is complete.

## Notes

- Call the steps in the order shown above; each links to its full API reference.
- Branch on the exact field each step names above: `response_type_id` says which response shape came back (the usual routing key), while `status` is the envelope's success flag — `0` is success, anything else is a failure.
- All requests are signed; see [How Auth Works](https://eps.eko.in/docs/how-auth-works).
