> ## Documentation Index
> Fetch the complete documentation index at: https://doc-test-my.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Validate a Bank Account

> Create Contact, Fund account and Validate Fund Account of type bank account via a single API.

Use this endpoint to create contact, fund account and validate the bank account in a single API call.

<RequestExample>
  ```bash Curl theme={null}
  curl -u <YOUR_KEY>:<YOUR_SECRET> \
  -X POST https://api.razorpay.com/v1/fund_accounts/validations \
  -H "Content-Type: application/json" \
  -d '{
    "source_account_number": "7878780080316316", 
    "validation_type": "optimized", 
    "reference_id": "112233",
    "notes": {
      "random_key_1": "Make it so.",
      "random_key_2": "Tea. Earl Grey. Hot."
    },
    "fund_account": {
      "account_type":"bank_account", 
      "bank_account":{
          "name":"Gaurav Kumar", 
          "ifsc":"HDFC0000053", 
          "account_number":"765432123456789" 
      },
          "contact": {
              "name":"Gaurav Kumar",
              "email":"gaurav.kumar@example.com",
              "contact":"9123456789",
              "type":"employee",
              "reference_id":"Acme Contact ID 12345",
              "notes":{
                  "notes_key_1":"Tea, Earl Grey, Hot",
                  "notes_key_2":"Tea, Earl Grey... decaf."
              }
          }
      }
  }'
  ```
</RequestExample>

<ResponseExample>
  ```json Created theme={null}
  {
    "id": "fav_00000000000001",
    "entity": "fund_account.validation",
    "status": "created",
    "utr" : "123456789012",
    "validation_results": {
        "account_status": null,
        "registered_name": null,
        "details": null,
        "name_match_score": null
     },
    "status_details": {
      "description": "Validation request is created",
      "source": "internal",
      "reason": "validation_request_created"
      },
    "reference_id": "112233",
    "notes": {
        "random_key_1": "Make it so.",
        "random_key_2": "Tea. Earl Grey. Hot."
     },
    "fund_account": {
        "id": "fa_00000000000001",
        "entity": "fund_account",
        "account_type": "bank_account",
        "bank_account": {
              "name": "Gaurav Kumar",
              "bank_name": "HDFC",
              "ifsc": "HDFC0000053",
              "account_number": "765432123456789"
        },
        "active": true,
        "created_at": 1567064019,
        "contact": {
            "id": "cont_00000000000001",
            "entity": "contact",
            "name":"Gaurav Kumar",
            "email":"gaurav.kumar@example.com",
            "contact":"9123456789",
            "type":"employee",
            "reference_id":"Acme Contact ID 12345",
            "active": true,
            "created_at": 1567064019,
            "notes":{
            "notes_key_1":"Tea, Earl Grey, Hot",
            "notes_key_2":"Tea, Earl Grey... decaf."
            }
        }
    }
  }
  ```

  ```json Completed theme={null}
  {
    "id": "fav_00000000000001",
    "entity": "fund_account.validation",
    "status": "completed",
    "utr" : "123456789012",
    "validation_results": {
        "account_status": "active",
        "registered_name": "Gaurav Kumar",
        "details": "The beneficiary account is valid." ,
        "name_match_score": 100
     },
    "status_details": {
      "description": "Validation request is completed",
      "source": "beneficiary_bank",
      "reason": "validation_completed"
      },
    "reference_id": "112233",
    "notes": {
        "random_key_1": "Make it so.",
        "random_key_2": "Tea. Earl Grey. Hot."
     },
    "fund_account": {
        "id": "fa_00000000000001",
        "entity": "fund_account",
        "account_type": "bank_account",
        "bank_account": {
              "name": "Gaurav Kumar",
              "bank_name": "HDFC",
              "ifsc": "HDFC0000053",
              "account_number": "765432123456789"
        },
        "active": true,
        "created_at": 1567064019,
        "contact": {
            "id": "cont_00000000000001",
            "entity": "contact",
            "name":"Gaurav Kumar",
            "email":"gaurav.kumar@example.com",
            "contact":"9123456789",
            "type":"employee",
            "reference_id":"Acme Contact ID 12345",
            "active": true,
            "created_at": 1567064019,
            "notes":{
            "notes_key_1":"Tea, Earl Grey, Hot",
            "notes_key_2":"Tea, Earl Grey... decaf."
            }
        }
    }
  }
  ```

  ```json Failed theme={null}
  {
    "id": "fav_00000000000001",
    "entity": "fund_account.validation",
    "status": "failed",
    "validation_results": {
        "account_status": "",
        "registered_name": "",
        "details": null,
        "name_match_score": null
     },
    "status_details": {
      "description": "Validation failed due to a temporary technical issue at the partner bank. Please retry after 30 min.",
      "source": "gateway",
      "reason": "gateway_technical_error"
      },
    "reference_id": "112233",
    "notes": {
        "random_key_1": "Make it so.",
        "random_key_2": "Tea. Earl Grey. Hot."
     },
    "fund_account": {
        "id": "fa_00000000000001",
        "entity": "fund_account",
        "account_type": "bank_account",
        "bank_account": {
              "name": "Gaurav Kumar",
              "bank_name": "HDFC",
              "ifsc": "HDFC0000053",
              "account_number": "765432123456789"
        },
        "active": true,
        "created_at": 1567064019,
        "contact": {
            "id": "cont_00000000000001",
            "entity": "contact",
            "name":"Gaurav Kumar",
            "email":"gaurav.kumar@example.com",
            "contact":"9123456789",
            "type":"employee",
            "reference_id":"112233",
            "active": true,
            "created_at": 1567064019,
            "notes":{
            "notes_key_1":"Tea, Earl Grey, Hot",
            "notes_key_2":"Tea, Earl Grey... decaf."
            }
        }
    }
  }
  ```
</ResponseExample>

## Request Parameters

<ParamField body="source_account_number" type="string" required>
  The account from which money should be deducted for the account validation transaction.
</ParamField>

<ParamField body="validation_type" type="string">
  The chosen type of validation. Possible values:

  * `pennydrop`: Razorpay will make a transaction for validation.
  * `penniless`: Razorpay will validate the account without a transaction.
  * `optimized` (default): Razorpay will decide whether the validation requires a transaction or not.
</ParamField>

<ParamField body="fund_account" type="object" required>
  Details of the fund account to which the payout was made.
</ParamField>

<ParamField body="account_type" type="string" required>
  The fund account type being created. Here it will be `bank_account`.
</ParamField>

<ParamField body="bank_account" type="object" required>
  The contact's bank account details.
</ParamField>

<ParamField body="name" type="string">
  Account holder's name. For example,`Gaurav Kumar`.
</ParamField>

<ParamField body="ifsc" type="string" required>
  Beneficiary bank IFSC. For example, `HDFC0000053`.
</ParamField>

<ParamField body="account_number" type="string" required>
  Beneficiary account number. For example, `765432123456789`.
</ParamField>

<ParamField body="contact" type="object" required>
  Contact details to which the payout was made.
</ParamField>

<ParamField body="name" type="string" required>
  The contact's name. For example, `Gaurav Kumar`.
</ParamField>

<ParamField body="email" type="string">
  The contact's email address. For example, `gaurav.kumar@example.com`.
</ParamField>

<ParamField body="contact" type="string">
  The contact's phone number. For example, `9000090000`.
</ParamField>

<ParamField body="type" type="string">
  A classification for the contact being created. For example, `employee`.
</ParamField>

<ParamField body="notes" type="object">
  Key-value pair that can be used to store additional information about the entity. Maximum 15 key-value pairs, 256 characters (maximum) each. For example, `"note_key": "Beam me up Scotty”`.
</ParamField>

<ParamField body="reference_id" type="string">
  A user-generated reference given to the payout. Maximum length is 40 characters. For example, `112233`. You can use this field to store your own transaction ID, if any.
</ParamField>

## Response Parameters

<ResponseField name="id" type="string">
  The unique identifier linked to the fund account. For example, `fav_000000000001`.
</ResponseField>

<ResponseField name="entity" type="string">
  Here it will be `fund_account.validation`.
</ResponseField>

<ResponseField name="status" type="string">
  The status of the account validation transaction.
  Possible values:

  * `created`
  * `completed`
  * `failed`
</ResponseField>

<ResponseField name="utr" type="string">
  A 12-digit unique identifier for the successful IMPS fund account validation transaction. For example, `123456789012`.
</ResponseField>

<ResponseField name="validation_results" type="object">
  Result of the validation.
</ResponseField>

<ResponseField name="account_status" type="string">
  Displays if the account is valid or not.
  Possible values:

  * `active`
  * `invalid`
</ResponseField>

<ResponseField name="registered_name" type="string">
  The name linked to the account. For example,`Gaurav Kumar`.
</ResponseField>

<ResponseField name="details" type="string">
  Details of the beneficiary account depending on the validation result.
</ResponseField>

<ResponseField name="name_match_score" type="string">
  A score between 0 - 100.

  * `100`: The name provided by you and the bank registered name are the same.
  * `0`: There is no match between the name provided by you and the bank registered name.
  * Between `0` & `100`: There is a partial match between the name provided by you and the bank registered name.
</ResponseField>

<ResponseField name="status_details" type="object">
  This parameter returns the current status of the customer's bank account.
</ResponseField>

<ResponseField name="description" type="string">
  A description for the status. For example, `Validation request is completed`.
</ResponseField>

<ResponseField name="source" type="string">
  Possible values:

  * `gateway`: Technical error at Razorpay Partner bank.
  * `beneficiary_bank`: Technical error at beneficiary bank.
  * `business`: Merchant action required.
  * `internal`: Technical error at Razorpay's server.
</ResponseField>

<ResponseField name="reason" type="string">
  The reason for the status, based on the description. For example, `validation_completed`.
</ResponseField>

<ResponseField name="fund_account" type="object">
  Fund account details to which the payout was made.
</ResponseField>

<ResponseField name="id" type="string">
  The unique identifier linked to the fund account. For example, `fa_00000000000001`.
</ResponseField>

<ResponseField name="entity" type="string">
  Here it will be `fund_account`.
</ResponseField>

<ResponseField name="account_type" type="string">
  The fund account type being created. Here it will either be `bank_account` or `vpa`.
</ResponseField>

<ResponseField name="bank_account" type="object">
  The contact's bank account details.
</ResponseField>

<ResponseField name="name" type="string">
  Account holder's name. For example,`Gaurav Kumar`.
</ResponseField>

<ResponseField name="bank_name" type="string">
  The contact's bank name. For example, `HDFC`.
</ResponseField>

<ResponseField name="ifsc" type="string">
  Beneficiary bank IFSC. For example, `HDFC0000053`.
</ResponseField>

<ResponseField name="account_number" type="string">
  Beneficiary account number. For example, `765432123456789`.
</ResponseField>

<ResponseField name="vpa" type="object">
  The contact's virtual payment address (VPA) details.
</ResponseField>

<ResponseField name="address" type="string">
  The virtual payment address. For example, `gaurav.kumar@exampleupi`.
</ResponseField>

<ResponseField name="contact" type="object">
  Contact details to which the payout was made.
</ResponseField>

<ResponseField name="id" type="string">
  The unique identifier linked to the contact. For example, `cont_00000000000001`.
</ResponseField>

<ResponseField name="entity" type="string">
  The entity being created. Here, it will be `contact`.
</ResponseField>

<ResponseField name="name" type="string">
  The contact's name. For example, `Gaurav Kumar`.
</ResponseField>

<ResponseField name="email" type="string">
  The contact's email address. For example, `gaurav.kumar@example.com`.
</ResponseField>

<ResponseField name="contact" type="string">
  The contact's phone number. For example, `9000090000`.
</ResponseField>

<ResponseField name="type" type="string">
  A classification for the contact being created. For example, `employee`.
</ResponseField>

<ResponseField name="reference_id" type="string">
  A user-generated reference given to the payout. Maximum length is 40 characters. For example, `112233`. You can use this field to store your own transaction ID, if any.
</ResponseField>

<ResponseField name="active" type="boolean">
  Possible values of Fund Account status:

  * `true`:  active
  * `false`: inactive
</ResponseField>

<ResponseField name="created_at" type="integer">
  Timestamp, in Unix, when the fund account was created. For example, `1543650891`.
</ResponseField>

<ResponseField name="notes" type="object">
  User-entered notes for internal reference. This is a key-value pair. You can enter a maximum of 15 key-value pairs. For example, `"note_key": "Beam me up Scotty"`.
</ResponseField>
