> ## Documentation Index
> Fetch the complete documentation index at: https://www.cashfree.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Bank Account Verification

> Use Cashfree Bank Account Verification to confirm that an Indian bank account is active and owned by the intended customer using IMPS rails and NPCI data.

Cashfree’s **Bank Account Verification** (BAV) validates whether a bank account exists, is active, and belongs to the intended user. The verification happens in real time using IMPS rails, and the data is validated directly against NPCI as the source, ensuring accuracy and authenticity. To make transactions foolproof, you can also validate the account holder’s details by using the [Name Match](/secure-id/biometric-kyc/name-match) feature, which enables faster and more reliable verification.

BAV verifies bank account details and the associated account holder name to prevent payout failures, reduce fraud, and enable smoother onboarding and KYC workflows.

## Key benefits

Cashfree’s bank account verification offers the following benefits:

* **Enhanced security and fraud reduction**: Confirms that the bank account belongs to the user and is active, helping prevent fraudsters from using fake, inactive, or dormant accounts.

* **Reduced chargebacks**: Verifying genuine accounts upfront helps businesses minimise chargebacks arising from unauthorised transactions or incorrect bank details.

* **Faster verification**: Enables real-time authentication through IMPS rails, eliminating delays associated with manual verification processes or document checks.

* **Clear reasons for verification failure**: Provides precise failure insights, such as invalid account number, incorrect IFSC, or blocked, frozen, or closed accounts, so you know exactly why verification failed in real-time.

* **Bulk verification at scale**: Verify up to 10,000 bank accounts in a single batch using APIs or bulk upload via simple Excel sheet uploads, without exposing sensitive financial information to any third party.

* **Approval (maker–checker) workflow**: Add maker and checker roles to manage permissions. Each time a maker uploads a batch file, checkers can review, validate, and approve or reject individual records before verification begins.

## Use cases

BAV is widely adopted across industries to verify account ownership and reduce payment failures:

| **Sector**                                            | **Use cases**                                                                                                                        |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| Marketplaces                                          | Verify users and vendors to ensure that payouts are credited only to the intended beneficiaries.                                     |
| Businesses and individuals for payment verification   | Validate bank account details and match the bank-registered name to avoid transfer failures or reversals.                            |
| Payments and fintech companies                        | Ensure frictionless onboarding by verifying user details with the bank to prevent mismatches or failed transactions.                 |
| Insurance providers                                   | Authenticate individuals during onboarding or before disbursing insurance amounts.                                                   |
| Wallet service providers                              | Fast-track user onboarding and account activation with instant individual or business account verification.                          |
| Security and equity investment platforms              | Allow users to start investing quickly with instant bank account verification. Integrate APIs that are customisable and easy to use. |
| Lending platforms                                     | Verify borrower bank details before loan disbursal to eliminate transfer reversals or failures due to incorrect account numbers.     |
| Recruitment and identification verification companies | Validate employee bank account details and match their names for faster onboarding and minimised transfer failures.                  |

## Verification flow

1. Use the [Sync BAV API](/api-reference/vrs/v2/bav-v2/bank-account-verification-sync-v2) to instantly verify a bank account.

   * Input the bank account number, IFSC, phone number (optional), and name (optional) to get the account status, such as valid, invalid, or blocked, and detailed failure reasons like invalid IFSC or unsupported NRE accounts.

2. Use the [Async BAV API](/api-reference/vrs/v2/bav-v2/bank-account-verification-async-v2) to verify a bank account within 1–2 hours, after which you can retrieve the final status of the verification using the [Get BAV Status API](/api-reference/vrs/v2/bav-v2/get-bav-status-v2).

   * Possible statuses include: valid, invalid, in\_process, rejected, and pending.

3. Use the [Bulk BAV API](/api-reference/vrs/v2/bav-v2/bulk-bank-account-verification-v2) to verify bank account information in bulk by uploading a CSV/XLSX file containing the account details you want to verify.

   * After uploading, use the [Get Bulk BAV Status API](/api-reference/vrs/v2/bav-v2/get-bulk-bav-status-v2) to track the bulk verification request.
   * You can retrieve the status using either the bulk reference ID or the bulk validation ID.
   * To fetch the status of a specific record, provide the corresponding reference ID in the request.

## Verify a bank account

To verify bank accounts through the Merchant Dashboard, follow the instructions below:

1. Log in to the [Merchant Dashboard](https://merchant.cashfree.com/auth/login).
2. Go to **Secure ID Dashboard > Bank Account > Verify Bank Account**.
3. In the Verify Bank Account pop-up, enter the **Account Number**, **IFSC**, and optionally the **Account Holder Name** and **Phone Number**.
4. Click **Verify**. The bank account information is verified, and you receive a pop-up that displays the account status, name match results, and failure reasons, if any.

<Info>Because of IMPS constraints, only the first 5 characters of the IFSC are validated.</Info>

<img src="https://mintcdn.com/cashfreepayments-d00050e9/QEZmgQauMru42zeL/static/secure-id/kyc-stack/bav-flow.gif?s=a9d06c4fa89b8bdf4fc2cb297c17ac22" alt="BAV Flow" width="1920" height="1080" data-path="static/secure-id/kyc-stack/bav-flow.gif" />

## Verify bank accounts in batch

When you have a large number of bank accounts to verify, you can upload a single file containing all the required details and process them in one go. Batch verification supports `.csv`, `.xls`, and `.xlsx` formats. Each row in the file must include the **account number**, **IFSC code**, and, optionally, the **account holder’s name** and **phone number**.

You can download the **sample file** to understand the required format before uploading your data.

Follow the steps below to upload and verify a batch file:

1. Log in to the [Merchant Dashboard](https://merchant.cashfree.com/auth/login).

2. Go to **Secure ID Dashboard > Bank Account**.

3. Select the **Batch** tab and click **Upload File**.

4. Click **Download sample file** to get the template (available in CSV or XLS format), fill in your bank account information following the required structure, and save the file.

5. Click **Upload** and select the file with the details filled in to submit the batch for verification.

6. The uploaded file will appear in the **Batch** tab as a table for easy viewing.

   <img src="https://mintcdn.com/cashfreepayments-d00050e9/QEZmgQauMru42zeL/static/secure-id/kyc-stack/bav-bulk-flow.gif?s=5a53af30addc26886ac4b9a61439b837" alt="BAV Bulk Flow" width="1920" height="1080" data-path="static/secure-id/kyc-stack/bav-bulk-flow.gif" />

7. Click the uploaded file to view the following information:

   * **File Name**: Name of the uploaded file.
   * **Status**: Status of the file, which can be success, failed, approval pending, etc.
   * **Uploaded At**: Timestamp showing when the file was uploaded.
   * **Uploaded By**: Name of the user who uploaded the file.
   * **Total records**: Total number of bank account records in the file.
   * **Valid**: Number of accounts that were successfully verified.
   * **Invalid**: Number of accounts that failed verification.

   <img src="https://mintcdn.com/cashfreepayments-d00050e9/QEZmgQauMru42zeL/static/secure-id/kyc-stack/batch-upload-details.png?fit=max&auto=format&n=QEZmgQauMru42zeL&q=85&s=2903cd25f698a2cca165383137380747" alt="Batch Upload Details" width="1254" height="762" data-path="static/secure-id/kyc-stack/batch-upload-details.png" />

8. You can view the following details in the table:

   * **Bank A/c No.**: Displays the bank account number used for verification.
   * **IFSC**: Displays the IFSC code associated with the account.
   * **Phone**: Displays the phone number of the bank account holder.
   * **Name**: Displays the name of the bank account holder.
   * **Account Status**: Displays the verification result for that account.

   <img src="https://mintcdn.com/cashfreepayments-d00050e9/QEZmgQauMru42zeL/static/secure-id/kyc-stack/bank-veri-details.png?fit=max&auto=format&n=QEZmgQauMru42zeL&q=85&s=e7ed447afc09fec061d208b458254ae0" alt="Bank Verification Details" width="1253" height="710" data-path="static/secure-id/kyc-stack/bank-veri-details.png" />

### Approve batch verification flow

To verify a large number of bank accounts in one go, Cashfree supports **Batch Upload** of bank account details. Since this involves processing all records added in the file at once, you may want to check and approve the file before verification begins.
To do this, you must create an approver profile within your Cashfree account. Once the file is approved by an approver, the bank account details will be verified, and the status of each account will be displayed in the file.

All files that are pending approval will appear in the **Approve Batch** section.

<Note>
  Cashfree supports a **maker–checker flow** to review and approve batch files before they are verified.
  You can assign up to **three approvers** for each file. Users with the necessary permissions can view the file and **approve** or **reject** it. After approval, the file is processed, and the verification results for each bank account record are displayed accordingly.
</Note>

## Name match scoring

The [Name Match](/secure-id/biometric-kyc/name-match) feature helps ensure that payments are processed to the correct beneficiary by validating whether the customer-provided name matches the name registered with the bank.

Manually checking names can be time-consuming and prone to error, especially when handling large volumes. Name Match automates this process by comparing both names and returning a **match result** along with a **numerical score** that indicates how closely they align.

Two parameters are returned in the response:

* `nameMatchResult`: The classification of the match.
* `nameMatchScore`: The numerical score (0 – 100).

### Score categorisation

| **Match result**       | **Match score range** |
| ---------------------- | --------------------- |
| Direct Match           | 100.00                |
| Good Partial Match     | 85.00 – 99.00         |
| Moderate Partial Match | 60.00 – 84.00         |
| Poor Partial Match     | 34.00 – 59.00         |
| No Match               | 0 – 33.00             |

### Examples

| **Name 1**          | **Name 2**          | **nameMatchResult**    | **nameMatchScore** |
| ------------------- | ------------------- | ---------------------- | ------------------ |
| Rohan Mathew Thomas | Rohan Mathew Thomas | Direct Match           | 100.00             |
| Rohan Mathew Thomas | Rohan Thomas        | Good Partial Match     | 85.00              |
| Rohan Mathew Thomas | Roshan Thomas       | Moderate Partial Match | 61.00              |
| Rohan Mathew Thomas | Rohan Mathew K      | Poor Partial Match     | 55.00              |
| Rohan Mathew Thomas | Rajeev              | No Match               | 14.00              |

## FAQs

<AccordionGroup>
  <Accordion
    title="For how many banks can I do the verification?"
    onClick={() =>
  posthog.capture('Accordion Clicked', {
    title: 'For how many banks can I do the verification?',
  })
}
  >
    You can verify bank accounts across all recognised Indian banks, including all public banks, private banks, and 126+ cooperative banks\*.
    <Note>Verification may not be possible for some cooperative bank accounts.</Note>

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Fbav%23for-how-many-banks-can-i-do-the-verification" style={{ width: '100%', height: '65px', border: 'none' }} title="FAQs feedback component" />
  </Accordion>

  <Accordion
    title="How can I verify bank account numbers on Cashfree Payments for multiple individuals?"
    onClick={() =>
  posthog.capture('Accordion Clicked', {
    title: 'How can I verify bank account numbers on Cashfree Payments for multiple individuals?',
  })
}
  >
    On Cashfree, you can verify any number of Indian bank accounts using two methods:

    <ol>
      <li>
        **Manual verification via the dashboard:**\
        Enter just two details: bank account number and IFSC.\
        For bulk verification, use the bulk upload feature to submit a CSV/XLSX file and receive quick results.
      </li>

      <li>
        **API-based verification:**\
        Integrate our Verification API with your existing internal systems or ERP to perform single or bulk verification automatically.
      </li>
    </ol>

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Fbav%23how-can-i-verify-bank-account-numbers-on-cashfree-payments-for-multiple-individuals" style={{ width: '100%', height: '65px', border: 'none' }} title="FAQs feedback component" />
  </Accordion>

  <Accordion
    title="What are the other use cases of this feature?"
    onClick={() =>
  posthog.capture('Accordion Clicked', {
    title: 'What are the other use cases of this feature?',
  })
}
  >
    Bank account verification can be used across several business workflows, such as:

    <ul>
      <li>As a key step in validating applicants before issuing loans for health, business, car, etc.</li>
      <li>Employee background checks: for example, by recruitment agencies.</li>

      <li>
        Vendor onboarding—marketplaces can validate vendor account details upfront to ensure accurate payouts later.
      </li>
    </ul>

    Integrating the API with existing ERP systems helps reduce operational effort and significantly saves costs.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Fbav%23what-are-the-other-use-cases-of-this-feature" style={{ width: '100%', height: '65px', border: 'none' }} title="FAQs feedback component" />
  </Accordion>

  <Accordion
    title="Why is bank account verification important?"
    onClick={() =>
  posthog.capture('Accordion Clicked', {
    title: 'Why is bank account verification important?',
  })
}
  >
    Bank account verification supports critical business decisions such as loan disbursals, fraud and risk checks during customer onboarding, and ensuring salaries or payments reach the correct recipient.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Fbav%23why-is-bank-account-verification-important" style={{ width: '100%', height: '65px', border: 'none' }} title="FAQs feedback component" />
  </Accordion>

  <Accordion
    title="How does the retry logic work in case of timeouts or failures?"
    onClick={() =>
  posthog.capture('Accordion Clicked', {
    title: 'How does the retry logic work in case of timeouts or failures?',
  })
}
  >
    In case of timeouts or failures, our system automatically retries verification internally to maintain a high success rate (SR).

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Fbav%23how-does-the-retry-logic-work-in-case-of-timeouts-or-failures" style={{ width: '100%', height: '65px', border: 'none' }} title="FAQs feedback component" />
  </Accordion>

  <Accordion
    title="What are the different bank account verification (BAV) response statuses?"
    onClick={() =>
  posthog.capture('Accordion Clicked', {
    title: 'What are the different bank account verification (BAV) response statuses?',
  })
}
  >
    BAV responses may include:\
    <code>VALID</code>, <code>INVALID</code>, <code>NRE\_ACCOUNT\_FAIL</code>, <code>REJECTED</code>, and more.\
    Refer to the [documentation](/api-reference/vrs/v2/bav-v2/bav-response-description) for a full list of available status codes and their descriptions.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Fbav%23what-are-the-different-bank-account-verification-bav-response-statuses" style={{ width: '100%', height: '65px', border: 'none' }} title="FAQs feedback component" />
  </Accordion>

  <Accordion
    title="Does BAV support webhooks for event updates?"
    onClick={() =>
  posthog.capture('Accordion Clicked', {
    title: 'Does BAV support webhooks for event updates?',
  })
}
  >
    Yes, BAV provides [webhooks](/api-reference/vrs/v2/bav-v2/webhooks-bank-account-verification) that send event-based notifications for asynchronous bank account verification.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Fbav%23does-bav-support-webhooks-for-event-updates" style={{ width: '100%', height: '65px', border: 'none' }} title="FAQs feedback component" />
  </Accordion>

  <Accordion
    title="I want to use Cashfree Payments marketplace settlement for paying vendors. Do I need to take verification feature separately?"
    onClick={() =>
  posthog.capture('Accordion Clicked', {
    title: 'I want to use Cashfree Payments marketplace settlement for paying vendors. Do I need to take verification feature separately?',
  })
}
  >
    Yes, if you are using Cashfree Payments marketplace settlement and want to use verification API as well, you need to opt for the feature separately. Our payment experts will help you with integration and you will be able to use the Cashfree Payments marketplace settlement and Secure ID together.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Fbav%23i-want-to-use-cashfree-payments-marketplace-settlement-for-paying-vendors-do-i-need-to-take-verification-feature-separately" style={{ width: '100%', height: '65px', border: 'none' }} title="FAQs feedback component" />
  </Accordion>

  <Accordion
    title="I am planning to opt for Cashfree Payouts for bulk disbursals. Do I need to go for verification API separately?"
    onClick={() =>
  posthog.capture('Accordion Clicked', {
    title: 'I am planning to opt for Cashfree Payouts for bulk disbursals. Do I need to go for verification API separately?',
  })
}
  >
    Yes, Payouts is different. Users can integrate bank account verification to do the validation and will be charged separately.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Fbav%23i-am-planning-to-opt-for-cashfree-payouts-for-bulk-disbursals-do-i-need-to-go-for-verification-api-separately" style={{ width: '100%', height: '65px', border: 'none' }} title="FAQs feedback component" />
  </Accordion>

  <Accordion
    title="Is there any limit on the total number of bank account verification requests per day?"
    onClick={() =>
  posthog.capture('Accordion Clicked', {
    title: 'Is there any limit on the total number of bank account verification requests per day?',
  })
}
  >
    No, there is no such limit. You can use this feature to verify any number of bank accounts in a day 24×7.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Fbav%23is-there-any-limit-on-the-total-number-of-bank-account-verification-requests-per-day" style={{ width: '100%', height: '65px', border: 'none' }} title="FAQs feedback component" />
  </Accordion>

  <Accordion
    title="How much time does verification take?"
    onClick={() =>
  posthog.capture('Accordion Clicked', {
    title: 'How much time does verification take?',
  })
}
  >
    On Cashfree, you can verify account numbers instantly. As you submit the request, our API gives an instant response.

    <iframe src="https://www.cashfree.com/devstudio/preview/pg/embed/faqFeedback?section=secure-id%2Fbav%23how-much-time-does-verification-take" style={{ width: '100%', height: '65px', border: 'none' }} title="FAQs feedback component" />
  </Accordion>
</AccordionGroup>
