---
title: "Bank Account Verification API Reference"
description: "Verify a bank account by transferring ₹1 (penny drop) and retrieve the account holder name, account status, and branch details in real time."
canonical: "https://eps.eko.in/docs/bank-account-verification"
---


> **Canonical URL:** https://eps.eko.in/docs/bank-account-verification
> 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.

# Bank Account Verification API Reference

`POST https://staging.eko.in/ekoapi/v3/tools/kyc/bank-account/sync`

Verify a bank account by transferring ₹1 (penny drop) and retrieve the account holder name, account status, and branch details in real time.

Performs a live penny-drop transaction of ₹1 to the specified bank account and returns the account holder name as registered with the bank, account status, IFSC details, and the UTR of the debit. Use this before payouts to prevent failures and fraud. The ₹1 is credited to the beneficiary — no refund occurs. Supports all IMPS-enabled banks in India.

> View product & pricing details: [Bank Account Verification](https://eps.eko.in/products/bank-verification-api.md)

## 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 |
| bank_account | number | yes | Complete bank account number to be verified. e.g. 1234567890 |
| ifsc | string | yes | IFSC code of the bank account to be verified (11-character alphanumeric). e.g. SBIN0001234 |

## 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.account_exists ⭐ | boolean | Whether the bank account is valid and active. |
| data.account_name ⭐ | string | Account holder name as registered with the bank. Use for name matching against provided details. |
| data.ifsc ⭐ | string | IFSC code confirmed by the bank for the verified account. |
| data.bank ⭐ | string | Full name of the bank associated with the account. |
| data.branch ⭐ | string | Branch name associated with the IFSC code. |
| data.utr | string | Unique Transaction Reference number of the ₹1 penny-drop credit. Useful for reconciliation. |

## Example request

```json
{
  "initiator_id": "9962981729",
  "user_code": "20810200",
  "client_ref_id": "REQ-20260101-001",
  "bank_account": 1234567890,
  "ifsc": "SBIN0001234"
}
```

## Example response

```json
{
  "status": 0,
  "response_status_id": 0,
  "message": "Bank account verification successful",
  "response_type_id": 1388,
  "data": {
    "account_exists": true,
    "account_name": "Rajesh Kumar",
    "ifsc": "SBIN0001234",
    "bank": "State Bank of India",
    "branch": "MG Road Branch",
    "utr": "431712345678"
  }
}
```

## Error scenarios

| Status | Scenario |
| --- | --- |
| 200 | Invalid IFSC code — malformed or non-existent IFSC provided |
| 200 | Invalid or non-existent bank account number — penny drop failed |
| 200 | Bank not supported — not live on IMPS (e.g. Deutsche Bank, Fincare SFB) |
