Bank Verification
curl --request POST \
--url https://api.example.com/api/v1/bank-verification-pennyless \
--header 'Content-Type: application/json' \
--data '
{
"accountNumber": "<string>",
"ifscNumber": "<string>",
"async": true
}
'import requests
url = "https://api.example.com/api/v1/bank-verification-pennyless"
payload = {
"accountNumber": "<string>",
"ifscNumber": "<string>",
"async": True
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({accountNumber: '<string>', ifscNumber: '<string>', async: true})
};
fetch('https://api.example.com/api/v1/bank-verification-pennyless', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/bank-verification-pennyless",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accountNumber' => '<string>',
'ifscNumber' => '<string>',
'async' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/bank-verification-pennyless"
payload := strings.NewReader("{\n \"accountNumber\": \"<string>\",\n \"ifscNumber\": \"<string>\",\n \"async\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/v1/bank-verification-pennyless")
.header("Content-Type", "application/json")
.body("{\n \"accountNumber\": \"<string>\",\n \"ifscNumber\": \"<string>\",\n \"async\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/bank-verification-pennyless")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountNumber\": \"<string>\",\n \"ifscNumber\": \"<string>\",\n \"async\": true\n}"
response = http.request(request)
puts response.read_bodyAPI Reference
Bank Verification
Verify bank account details by account number and IFSC
POST
/
api
/
v1
/
bank-verification-pennyless
Bank Verification
curl --request POST \
--url https://api.example.com/api/v1/bank-verification-pennyless \
--header 'Content-Type: application/json' \
--data '
{
"accountNumber": "<string>",
"ifscNumber": "<string>",
"async": true
}
'import requests
url = "https://api.example.com/api/v1/bank-verification-pennyless"
payload = {
"accountNumber": "<string>",
"ifscNumber": "<string>",
"async": True
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({accountNumber: '<string>', ifscNumber: '<string>', async: true})
};
fetch('https://api.example.com/api/v1/bank-verification-pennyless', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/bank-verification-pennyless",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accountNumber' => '<string>',
'ifscNumber' => '<string>',
'async' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/bank-verification-pennyless"
payload := strings.NewReader("{\n \"accountNumber\": \"<string>\",\n \"ifscNumber\": \"<string>\",\n \"async\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/v1/bank-verification-pennyless")
.header("Content-Type", "application/json")
.body("{\n \"accountNumber\": \"<string>\",\n \"ifscNumber\": \"<string>\",\n \"async\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/bank-verification-pennyless")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountNumber\": \"<string>\",\n \"ifscNumber\": \"<string>\",\n \"async\": true\n}"
response = http.request(request)
puts response.read_bodyBank Account Verification
Verify bank account details instantly using account number and IFSC code. Returns account holder name, bank details, and account status.Overview
This endpoint helps businesses:- Verify bank account ownership
- Validate IFSC codes
- Get account holder name for verification
- Confirm account status (Active/Inactive)
Request
string
required
Bank account number (9-18 digits)
string
required
IFSC code of the bank branch (format:
XXXX0XXXXXX)boolean
default:"true"
If
true (default), request is queued and result delivered via webhook. If false, wait for result synchronously (up to 30 seconds).Headers
| Header | Value | Required |
|---|---|---|
X-API-Key | Your API key | Yes |
Content-Type | application/json | Yes |
Example Request (Async Mode - Default)
curl -X POST "https://api.txncheck.com/api/v1/bank-verification-pennyless" \
-H "X-API-Key: txncheck_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"accountNumber": "920020056012360",
"ifscNumber": "UTIB0000519"
}'
import requests
response = requests.post(
"https://api.txncheck.com/api/v1/bank-verification-pennyless",
headers={
"X-API-Key": "txncheck_your_api_key_here",
"Content-Type": "application/json"
},
json={
"accountNumber": "920020056012360",
"ifscNumber": "UTIB0000519"
}
)
print(response.json())
const axios = require('axios');
const response = await axios.post(
'https://api.txncheck.com/api/v1/bank-verification-pennyless',
{
accountNumber: '920020056012360',
ifscNumber: 'UTIB0000519'
},
{
headers: {
'X-API-Key': 'txncheck_your_api_key_here',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
<?php
$ch = curl_init("https://api.txncheck.com/api/v1/bank-verification-pennyless");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-API-Key: txncheck_your_api_key_here",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
"accountNumber" => "920020056012360",
"ifscNumber" => "UTIB0000519"
]));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
payload := map[string]string{
"accountNumber": "920020056012360",
"ifscNumber": "UTIB0000519",
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://api.txncheck.com/api/v1/bank-verification-pennyless", bytes.NewBuffer(body))
req.Header.Set("X-API-Key", "txncheck_your_api_key_here")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
Example Request (Sync Mode)
curl -X POST "https://api.txncheck.com/api/v1/bank-verification-pennyless" \
-H "X-API-Key: txncheck_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"accountNumber": "920020056012360",
"ifscNumber": "UTIB0000519",
"async": false
}'
import requests
response = requests.post(
"https://api.txncheck.com/api/v1/bank-verification-pennyless",
headers={
"X-API-Key": "txncheck_your_api_key_here",
"Content-Type": "application/json"
},
json={
"accountNumber": "920020056012360",
"ifscNumber": "UTIB0000519",
"async": False
}
)
print(response.json())
const axios = require('axios');
const response = await axios.post(
'https://api.txncheck.com/api/v1/bank-verification-pennyless',
{
accountNumber: '920020056012360',
ifscNumber: 'UTIB0000519',
async: false
},
{
headers: {
'X-API-Key': 'txncheck_your_api_key_here',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
Response
- Async Mode (202)
- Sync Mode (200)
202 Accepted
Request accepted and queued for processing. Results will be delivered via webhook.{
"statusCode": 202,
"message": "Request accepted and queued for processing",
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"status": "QUEUED"
}
Result Data (via webhook or polling)
When the request completes, you’ll receive a webhook or can poll the status endpoint:{
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"method": "bank-verification-pennyless",
"status": "COMPLETED",
"result": {
"bankVerification": {
"accountNumber": "920020056012360",
"ifsc": "UTIB0000519",
"nameAtBank": "Alex Kumar",
"bankName": "AXIS BANK",
"branchName": "Mumbai Main Branch",
"accountType": "Savings",
"accountStatus": "Active",
"verifiedOn": "2024-01-20T10:30:00Z"
}
},
"webhookStatus": "SENT",
"createdAt": "2025-01-11T10:30:00.000Z",
"completedAt": "2025-01-11T10:30:02.000Z"
}
200 OK
Request completed synchronously. Result is returned in the response body.{
"statusCode": 200,
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"method": "bank-verification-pennyless",
"status": "COMPLETED",
"result": {
"bankVerification": {
"accountNumber": "920020056012360",
"ifsc": "UTIB0000519",
"nameAtBank": "Alex Kumar",
"bankName": "AXIS BANK",
"branchName": "Mumbai Main Branch",
"accountType": "Savings",
"accountStatus": "Active",
"verifiedOn": "2024-01-20T10:30:00Z"
}
},
"createdAt": "2025-01-11T10:30:00.000Z",
"completedAt": "2025-01-11T10:30:02.000Z"
}
Sync mode has a 30-second timeout. If processing takes longer, you’ll receive a 408 Request Timeout error. Use async mode for potentially slow requests.
Result Fields
| Field | Type | Description |
|---|---|---|
accountNumber | string | The verified bank account number |
ifsc | string | IFSC code of the bank branch |
nameAtBank | string | Account holder name as registered with the bank |
bankName | string | Name of the bank |
branchName | string | Name of the bank branch |
accountType | string | Type of account (Savings, Current, etc.) |
accountStatus | string | Account status (Active, Inactive, etc.) |
verifiedOn | string | ISO 8601 timestamp of verification |
Error Responses
400 Bad Request
Invalid account number or IFSC format.{
"statusCode": 400,
"message": ["Account number must be 9-18 digits", "IFSC must be in format XXXX0XXXXXX"],
"error": "Bad Request"
}
401 Unauthorized
Invalid or missing API key.{
"statusCode": 401,
"message": "Invalid API key",
"error": "Unauthorized"
}
402 Payment Required
Insufficient account balance.{
"statusCode": 402,
"message": "Insufficient wallet balance",
"error": "Payment Required"
}
403 Forbidden
Method not enabled for your account.{
"statusCode": 403,
"message": "Access to method 'bank-verification-pennyless' is not allowed",
"error": "Forbidden"
}
404 Not Found
Bank account not found or invalid.{
"statusCode": 404,
"message": "Bank account not found or invalid",
"error": "Not Found"
}
408 Request Timeout (Sync Mode Only)
Request processing timed out. Only occurs withasync: false.
{
"statusCode": 408,
"message": "Request processing timed out after 30 seconds. Use async mode or check status later with request ID: 550e8400-e29b-41d4-a716-446655440000",
"error": "Request Timeout"
}
429 Too Many Requests
Rate limit exceeded.{
"statusCode": 429,
"message": "Too Many Requests",
"error": "Too Many Requests"
}
Use Cases
Vendor Onboarding
Vendor Onboarding
Verify vendor bank accounts during registration to ensure payouts reach the correct recipients.
Loan Disbursement
Loan Disbursement
Validate borrower bank accounts before disbursing loans to prevent failed transactions.
Refund Processing
Refund Processing
Verify customer bank details before processing refunds to ensure successful credit.
Salary Payments
Salary Payments
Validate employee bank accounts during HR onboarding for seamless salary disbursements.
