Bank Account Verification — Penny Drop
Verify a bank account with a penny drop transaction. Confirm the account holder's name and ensure the account is active before processing payments.
curl -X GET "https://production.deepvue.tech/v1/verification/bankaccount?account_number=example_string&ifsc=example_string&name=John Doe" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN (JWT)" \
-H "x-api-key: YOUR_API_KEY"
import requests
import json
url = "https://production.deepvue.tech/v1/verification/bankaccount?account_number=example_string&ifsc=example_string&name=John Doe"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN (JWT)",
"x-api-key": "YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://production.deepvue.tech/v1/verification/bankaccount?account_number=example_string&ifsc=example_string&name=John Doe", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN (JWT)",
"x-api-key": "YOUR_API_KEY"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://production.deepvue.tech/v1/verification/bankaccount?account_number=example_string&ifsc=example_string&name=John Doe", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN (JWT)")
req.Header.Set("x-api-key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://production.deepvue.tech/v1/verification/bankaccount?account_number=example_string&ifsc=example_string&name=John Doe')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN (JWT)'
request['x-api-key'] = 'YOUR_API_KEY'
response = http.request(request)
puts response.body
{
"code": 200,
"timestamp": 1738042952419,
"transaction_id": "fe104a7a-f3a9-4365-9390-e3af0e4193e5",
"data": {
"message": "Bank Account details verified successfully.",
"account_exists": true,
"name_at_bank": "Master NIHARika .",
"utr": "502811454342",
"amount_deposited": 1,
"name_information": {
"name_at_bank_cleaned": "Master Niharkika"
}
}
}
{
"code": 200,
"timestamp": 1738042853984,
"transaction_id": "95237c7f-607e-4601-86fe-bd14a5d07e90",
"data": {
"account_exists": false,
"message": "Invalid account number or ifsc provided"
}
}
{
"code": null,
"timestamp": null,
"transaction_id": "string",
"data": {
"account_exists": true,
"message": "Account is blocked"
}
}
{
"code": null,
"timestamp": null,
"transaction_id": "string",
"data": {
"account_exists": true,
"message": "IFSC is invalid"
}
}
{
"code": null,
"timestamp": null,
"transaction_id": "string",
"data": {
"account_exists": true,
"message": "Given account is an NRE account"
}
}
{
"detail": "Inactive client_id"
}
{
"detail": "Not authenticated"
}
{
"detail": "Not a valid token"
}
{
"code": 422,
"timestamp": 1738042992649,
"transaction_id": "800bcdd2-3b0c-48c1-8941-4f86d691804e",
"message": "Invalid IFSC pattern"
}
{
"code": null,
"timestamp": null,
"transaction_id": "string",
"message": "Source bank declined"
}
{
"code": null,
"timestamp": null,
"transaction_id": "string",
"message": "Beneficiary bank offline"
}
{
"code": null,
"timestamp": null,
"transaction_id": "string",
"message": "IMPS Mode fail"
}
{
"code": null,
"timestamp": null,
"transaction_id": "string",
"message": "NPCI Unavailable"
}
{
"detail": "Internal Server Error"
}
{
"code": null,
"timestamp": null,
"transaction_id": "string",
"message": "Source Unavailable"
}
/v1/verification/bankaccount
ACCESS_TOKEN generated from the authorize endpoint. Should be included in the header as Bearer .
The CLIENT_SECRET provided to you. This header parameter is required for authentication purposes.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token (JWT). ACCESS_TOKEN generated from the authorize endpoint. Should be included in the header as Bearer .
API Key for authentication. The CLIENT_SECRET provided to you. This header parameter is required for authentication purposes.
Query Parameters
Responses
Overview
The Penny Drop API enables bank account verification through a penny drop check mechanism. The service validates a customer's bank account and IFSC code combination by depositing 1 INR into the specified account, then retrieving the associated account information in return.
This verification method authenticates customer bank account details for KYC (Know Your Customer) compliance and account onboarding workflows.
Billing only occurs when the API returns a 200 status code response.
Response scenarios
Successful verification returns account existence confirmation, name-at-bank details, UTR reference number, and deposited amount. The response may also indicate various non-verification states including invalid credentials, blocked accounts, invalid IFSC codes, or NRE (Non-Resident External) account detection.
The API relies on bank connectivity and NPCI (National Payments Corporation of India) availability. Service disruptions may occur if beneficiary banks are offline, source banks decline requests, or NPCI services are unavailable.
Last updated 4 weeks ago
Built with Documentation.AI