Bank Account Verification
Banking & CreditConfirm an account exists and belongs to the person or emver you are paying.
Verify a bank account number and IFSC, confirm the account is live, and match the account holder's name against the name you hold. Stop failed payouts, misdirected salaries and vendor payment fraud before the first transfer.
Endpoint
Request parameters
| Field | Type | Description |
|---|---|---|
account_number
required
|
string | Account number |
i_f_s_c_code
required
|
string | IFSC code |
account_holder_name
optional
|
string | Account holder name |
p_a_n_number
optional
|
string | PAN number |
Example request
curl -X POST https://app.emver.io/api/sandbox/v1/bank-account-verification \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"account_number": "string",
"i_f_s_c_code": "string",
"account_holder_name": "string",
"p_a_n_number": "string"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/bank-account-verification",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"account_number": "string",
"i_f_s_c_code": "string",
"account_holder_name": "string",
"p_a_n_number": "string"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/bank-account-verification", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"account_number": "string",
"i_f_s_c_code": "string",
"account_holder_name": "string",
"p_a_n_number": "string"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/bank-account-verification', {
"account_number": "string",
"i_f_s_c_code": "string",
"account_holder_name": "string",
"p_a_n_number": "string"
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING,
"data": {
"account_exists": STRING,
"name_as_per_bank": STRING,
"name_match_result": STRING,
"bank_name": STRING
}
}
Example · 200
{
"status": 200,
"message": "string",
"data": {
"account_exists": "string",
"name_as_per_bank": "string",
"name_match_result": "string",
"bank_name": "string"
}
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.
About this API
Mistyped account numbers and deliberately swapped beneficiary details are the two most common causes of payment failure and fraud. The Bank Account Verification API validates the account with the bank, returns the name as held by the bank and gives you a match result against the name you supply.
Optionally include a PAN to corroborate the account ownership further, which is particularly useful for vendor and contractor payments.
Typical uses
- Payroll onboarding. Validate salary accounts for every new employee.
- Vendor master data. Verify beneficiary details on creation and on every change.
- Gig partner payouts. Confirm accounts before weekly settlements.
- Lending disbursal and insurance claims. Ensure funds reach the right, verified account.
Questions
- Does verification move any money?
- Verification is performed with the bank without your customer seeing a transaction on their statement in most cases. emver handles the underlying mechanics so you only see the result.
- What if the account holder name differs slightly?
- The match result accounts for common variations such as initials and ordering. Clear mismatches are flagged so you can request corrected details.
- Can I verify a UPI ID instead?
- Yes. The UPI Verification API resolves a UPI handle to the registered account holder name without needing account and IFSC.