curl --request POST \
--url https://sandbox.cashfree.com/pg/vba \
--header 'Content-Type: application/json' \
--header 'x-api-version: <x-api-version>' \
--header 'x-client-id: <x-client-id>' \
--header 'x-client-secret: <x-client-secret>' \
--data '
{
"virtual_account_details": {
"virtual_account_id": "User01",
"virtual_account_name": "John Doe",
"virtual_account_email": "user@cashfree.com",
"virtual_account_phone": 9876543210
},
"kyc_details": {
"gst": "29AAICP2912R1ZR",
"pan": "ABCPV1234D",
"aadhaar": 655675523712
},
"remitter_lock_details": {
"allowed_remitters": [
{
"account_number": 26291800001191,
"ifsc": "YESB0000262"
}
]
},
"amount_lock_details": {
"min_amount": 1000,
"max_amount": 5000
},
"bank_codes": [
"YESB"
],
"notification_group": "finance_team"
}
'import requests
url = "https://sandbox.cashfree.com/pg/vba"
payload = {
"virtual_account_details": {
"virtual_account_id": "User01",
"virtual_account_name": "John Doe",
"virtual_account_email": "user@cashfree.com",
"virtual_account_phone": 9876543210
},
"kyc_details": {
"gst": "29AAICP2912R1ZR",
"pan": "ABCPV1234D",
"aadhaar": 655675523712
},
"remitter_lock_details": { "allowed_remitters": [
{
"account_number": 26291800001191,
"ifsc": "YESB0000262"
}
] },
"amount_lock_details": {
"min_amount": 1000,
"max_amount": 5000
},
"bank_codes": ["YESB"],
"notification_group": "finance_team"
}
headers = {
"x-client-id": "<x-client-id>",
"x-client-secret": "<x-client-secret>",
"x-api-version": "<x-api-version>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-client-id': '<x-client-id>',
'x-client-secret': '<x-client-secret>',
'x-api-version': '<x-api-version>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
virtual_account_details: {
virtual_account_id: 'User01',
virtual_account_name: 'John Doe',
virtual_account_email: 'user@cashfree.com',
virtual_account_phone: 9876543210
},
kyc_details: {gst: '29AAICP2912R1ZR', pan: 'ABCPV1234D', aadhaar: 655675523712},
remitter_lock_details: {allowed_remitters: [{account_number: 26291800001191, ifsc: 'YESB0000262'}]},
amount_lock_details: {min_amount: 1000, max_amount: 5000},
bank_codes: ['YESB'],
notification_group: 'finance_team'
})
};
fetch('https://sandbox.cashfree.com/pg/vba', 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://sandbox.cashfree.com/pg/vba",
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([
'virtual_account_details' => [
'virtual_account_id' => 'User01',
'virtual_account_name' => 'John Doe',
'virtual_account_email' => 'user@cashfree.com',
'virtual_account_phone' => 9876543210
],
'kyc_details' => [
'gst' => '29AAICP2912R1ZR',
'pan' => 'ABCPV1234D',
'aadhaar' => 655675523712
],
'remitter_lock_details' => [
'allowed_remitters' => [
[
'account_number' => 26291800001191,
'ifsc' => 'YESB0000262'
]
]
],
'amount_lock_details' => [
'min_amount' => 1000,
'max_amount' => 5000
],
'bank_codes' => [
'YESB'
],
'notification_group' => 'finance_team'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-version: <x-api-version>",
"x-client-id: <x-client-id>",
"x-client-secret: <x-client-secret>"
],
]);
$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://sandbox.cashfree.com/pg/vba"
payload := strings.NewReader("{\n \"virtual_account_details\": {\n \"virtual_account_id\": \"User01\",\n \"virtual_account_name\": \"John Doe\",\n \"virtual_account_email\": \"user@cashfree.com\",\n \"virtual_account_phone\": 9876543210\n },\n \"kyc_details\": {\n \"gst\": \"29AAICP2912R1ZR\",\n \"pan\": \"ABCPV1234D\",\n \"aadhaar\": 655675523712\n },\n \"remitter_lock_details\": {\n \"allowed_remitters\": [\n {\n \"account_number\": 26291800001191,\n \"ifsc\": \"YESB0000262\"\n }\n ]\n },\n \"amount_lock_details\": {\n \"min_amount\": 1000,\n \"max_amount\": 5000\n },\n \"bank_codes\": [\n \"YESB\"\n ],\n \"notification_group\": \"finance_team\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-client-id", "<x-client-id>")
req.Header.Add("x-client-secret", "<x-client-secret>")
req.Header.Add("x-api-version", "<x-api-version>")
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://sandbox.cashfree.com/pg/vba")
.header("x-client-id", "<x-client-id>")
.header("x-client-secret", "<x-client-secret>")
.header("x-api-version", "<x-api-version>")
.header("Content-Type", "application/json")
.body("{\n \"virtual_account_details\": {\n \"virtual_account_id\": \"User01\",\n \"virtual_account_name\": \"John Doe\",\n \"virtual_account_email\": \"user@cashfree.com\",\n \"virtual_account_phone\": 9876543210\n },\n \"kyc_details\": {\n \"gst\": \"29AAICP2912R1ZR\",\n \"pan\": \"ABCPV1234D\",\n \"aadhaar\": 655675523712\n },\n \"remitter_lock_details\": {\n \"allowed_remitters\": [\n {\n \"account_number\": 26291800001191,\n \"ifsc\": \"YESB0000262\"\n }\n ]\n },\n \"amount_lock_details\": {\n \"min_amount\": 1000,\n \"max_amount\": 5000\n },\n \"bank_codes\": [\n \"YESB\"\n ],\n \"notification_group\": \"finance_team\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.cashfree.com/pg/vba")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-client-id"] = '<x-client-id>'
request["x-client-secret"] = '<x-client-secret>'
request["x-api-version"] = '<x-api-version>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"virtual_account_details\": {\n \"virtual_account_id\": \"User01\",\n \"virtual_account_name\": \"John Doe\",\n \"virtual_account_email\": \"user@cashfree.com\",\n \"virtual_account_phone\": 9876543210\n },\n \"kyc_details\": {\n \"gst\": \"29AAICP2912R1ZR\",\n \"pan\": \"ABCPV1234D\",\n \"aadhaar\": 655675523712\n },\n \"remitter_lock_details\": {\n \"allowed_remitters\": [\n {\n \"account_number\": 26291800001191,\n \"ifsc\": \"YESB0000262\"\n }\n ]\n },\n \"amount_lock_details\": {\n \"min_amount\": 1000,\n \"max_amount\": 5000\n },\n \"bank_codes\": [\n \"YESB\"\n ],\n \"notification_group\": \"finance_team\"\n}"
response = http.request(request)
puts response.read_body{
"virtual_bank_accounts": [
{
"vba_bank_code": "UTIB",
"vba_account_number": 94351020001772,
"vba_ifsc": "UTIB0CCH274",
"vba_status": "ACTIVE",
"vba_created_on": "2019-08-24T14:15:22Z",
"vba_last_updated_on": "2019-08-24T14:15:22Z",
"virtual_account_details": {
"virtual_account_id": "User01",
"virtual_account_name": "John Doe",
"virtual_account_email": "user@cashfree.com",
"virtual_account_phone": 9876543210
},
"kyc_details": {
"gst": "29AAICP2912R1ZR",
"pan": "ABCPV1234D",
"aadhaar": "655675523712"
},
"remitter_lock_details": {
"allowed_remitters": [
{
"account_number": "026291800001191",
"ifsc": "YESB0000262"
}
]
},
"amount_lock_details": {
"min_amount": 1000,
"max_amount": 5000
},
"notification_group": "<string>"
}
]
}{
"message": "bad URL, please check API documentation",
"code": "request_failed",
"type": "invalid_request_error"
}{
"message": "authentication Failed",
"code": "request_failed",
"type": "authentication_error"
}{
"message": "something is not found",
"code": "somethind_not_found",
"type": "invalid_request_error"
}{
"message": "order with same id is already present",
"code": "order_already_exists",
"type": "invalid_request_error"
}{
"message": "something is not found",
"code": "request_invalid",
"type": "idempotency_error"
}{
"message": "Too many requests from IP. Check headers",
"code": "request_failed",
"type": "rate_limit_error"
}{
"message": "something is not found",
"code": "bank_processing_failure",
"type": "api_error"
}Create VBA
Use this API to create a virtual bank account. It allows you to receive payments just like a regular bank account.
curl --request POST \
--url https://sandbox.cashfree.com/pg/vba \
--header 'Content-Type: application/json' \
--header 'x-api-version: <x-api-version>' \
--header 'x-client-id: <x-client-id>' \
--header 'x-client-secret: <x-client-secret>' \
--data '
{
"virtual_account_details": {
"virtual_account_id": "User01",
"virtual_account_name": "John Doe",
"virtual_account_email": "user@cashfree.com",
"virtual_account_phone": 9876543210
},
"kyc_details": {
"gst": "29AAICP2912R1ZR",
"pan": "ABCPV1234D",
"aadhaar": 655675523712
},
"remitter_lock_details": {
"allowed_remitters": [
{
"account_number": 26291800001191,
"ifsc": "YESB0000262"
}
]
},
"amount_lock_details": {
"min_amount": 1000,
"max_amount": 5000
},
"bank_codes": [
"YESB"
],
"notification_group": "finance_team"
}
'import requests
url = "https://sandbox.cashfree.com/pg/vba"
payload = {
"virtual_account_details": {
"virtual_account_id": "User01",
"virtual_account_name": "John Doe",
"virtual_account_email": "user@cashfree.com",
"virtual_account_phone": 9876543210
},
"kyc_details": {
"gst": "29AAICP2912R1ZR",
"pan": "ABCPV1234D",
"aadhaar": 655675523712
},
"remitter_lock_details": { "allowed_remitters": [
{
"account_number": 26291800001191,
"ifsc": "YESB0000262"
}
] },
"amount_lock_details": {
"min_amount": 1000,
"max_amount": 5000
},
"bank_codes": ["YESB"],
"notification_group": "finance_team"
}
headers = {
"x-client-id": "<x-client-id>",
"x-client-secret": "<x-client-secret>",
"x-api-version": "<x-api-version>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-client-id': '<x-client-id>',
'x-client-secret': '<x-client-secret>',
'x-api-version': '<x-api-version>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
virtual_account_details: {
virtual_account_id: 'User01',
virtual_account_name: 'John Doe',
virtual_account_email: 'user@cashfree.com',
virtual_account_phone: 9876543210
},
kyc_details: {gst: '29AAICP2912R1ZR', pan: 'ABCPV1234D', aadhaar: 655675523712},
remitter_lock_details: {allowed_remitters: [{account_number: 26291800001191, ifsc: 'YESB0000262'}]},
amount_lock_details: {min_amount: 1000, max_amount: 5000},
bank_codes: ['YESB'],
notification_group: 'finance_team'
})
};
fetch('https://sandbox.cashfree.com/pg/vba', 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://sandbox.cashfree.com/pg/vba",
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([
'virtual_account_details' => [
'virtual_account_id' => 'User01',
'virtual_account_name' => 'John Doe',
'virtual_account_email' => 'user@cashfree.com',
'virtual_account_phone' => 9876543210
],
'kyc_details' => [
'gst' => '29AAICP2912R1ZR',
'pan' => 'ABCPV1234D',
'aadhaar' => 655675523712
],
'remitter_lock_details' => [
'allowed_remitters' => [
[
'account_number' => 26291800001191,
'ifsc' => 'YESB0000262'
]
]
],
'amount_lock_details' => [
'min_amount' => 1000,
'max_amount' => 5000
],
'bank_codes' => [
'YESB'
],
'notification_group' => 'finance_team'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-version: <x-api-version>",
"x-client-id: <x-client-id>",
"x-client-secret: <x-client-secret>"
],
]);
$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://sandbox.cashfree.com/pg/vba"
payload := strings.NewReader("{\n \"virtual_account_details\": {\n \"virtual_account_id\": \"User01\",\n \"virtual_account_name\": \"John Doe\",\n \"virtual_account_email\": \"user@cashfree.com\",\n \"virtual_account_phone\": 9876543210\n },\n \"kyc_details\": {\n \"gst\": \"29AAICP2912R1ZR\",\n \"pan\": \"ABCPV1234D\",\n \"aadhaar\": 655675523712\n },\n \"remitter_lock_details\": {\n \"allowed_remitters\": [\n {\n \"account_number\": 26291800001191,\n \"ifsc\": \"YESB0000262\"\n }\n ]\n },\n \"amount_lock_details\": {\n \"min_amount\": 1000,\n \"max_amount\": 5000\n },\n \"bank_codes\": [\n \"YESB\"\n ],\n \"notification_group\": \"finance_team\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-client-id", "<x-client-id>")
req.Header.Add("x-client-secret", "<x-client-secret>")
req.Header.Add("x-api-version", "<x-api-version>")
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://sandbox.cashfree.com/pg/vba")
.header("x-client-id", "<x-client-id>")
.header("x-client-secret", "<x-client-secret>")
.header("x-api-version", "<x-api-version>")
.header("Content-Type", "application/json")
.body("{\n \"virtual_account_details\": {\n \"virtual_account_id\": \"User01\",\n \"virtual_account_name\": \"John Doe\",\n \"virtual_account_email\": \"user@cashfree.com\",\n \"virtual_account_phone\": 9876543210\n },\n \"kyc_details\": {\n \"gst\": \"29AAICP2912R1ZR\",\n \"pan\": \"ABCPV1234D\",\n \"aadhaar\": 655675523712\n },\n \"remitter_lock_details\": {\n \"allowed_remitters\": [\n {\n \"account_number\": 26291800001191,\n \"ifsc\": \"YESB0000262\"\n }\n ]\n },\n \"amount_lock_details\": {\n \"min_amount\": 1000,\n \"max_amount\": 5000\n },\n \"bank_codes\": [\n \"YESB\"\n ],\n \"notification_group\": \"finance_team\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.cashfree.com/pg/vba")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-client-id"] = '<x-client-id>'
request["x-client-secret"] = '<x-client-secret>'
request["x-api-version"] = '<x-api-version>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"virtual_account_details\": {\n \"virtual_account_id\": \"User01\",\n \"virtual_account_name\": \"John Doe\",\n \"virtual_account_email\": \"user@cashfree.com\",\n \"virtual_account_phone\": 9876543210\n },\n \"kyc_details\": {\n \"gst\": \"29AAICP2912R1ZR\",\n \"pan\": \"ABCPV1234D\",\n \"aadhaar\": 655675523712\n },\n \"remitter_lock_details\": {\n \"allowed_remitters\": [\n {\n \"account_number\": 26291800001191,\n \"ifsc\": \"YESB0000262\"\n }\n ]\n },\n \"amount_lock_details\": {\n \"min_amount\": 1000,\n \"max_amount\": 5000\n },\n \"bank_codes\": [\n \"YESB\"\n ],\n \"notification_group\": \"finance_team\"\n}"
response = http.request(request)
puts response.read_body{
"virtual_bank_accounts": [
{
"vba_bank_code": "UTIB",
"vba_account_number": 94351020001772,
"vba_ifsc": "UTIB0CCH274",
"vba_status": "ACTIVE",
"vba_created_on": "2019-08-24T14:15:22Z",
"vba_last_updated_on": "2019-08-24T14:15:22Z",
"virtual_account_details": {
"virtual_account_id": "User01",
"virtual_account_name": "John Doe",
"virtual_account_email": "user@cashfree.com",
"virtual_account_phone": 9876543210
},
"kyc_details": {
"gst": "29AAICP2912R1ZR",
"pan": "ABCPV1234D",
"aadhaar": "655675523712"
},
"remitter_lock_details": {
"allowed_remitters": [
{
"account_number": "026291800001191",
"ifsc": "YESB0000262"
}
]
},
"amount_lock_details": {
"min_amount": 1000,
"max_amount": 5000
},
"notification_group": "<string>"
}
]
}{
"message": "bad URL, please check API documentation",
"code": "request_failed",
"type": "invalid_request_error"
}{
"message": "authentication Failed",
"code": "request_failed",
"type": "authentication_error"
}{
"message": "something is not found",
"code": "somethind_not_found",
"type": "invalid_request_error"
}{
"message": "order with same id is already present",
"code": "order_already_exists",
"type": "invalid_request_error"
}{
"message": "something is not found",
"code": "request_invalid",
"type": "idempotency_error"
}{
"message": "Too many requests from IP. Check headers",
"code": "request_failed",
"type": "rate_limit_error"
}{
"message": "something is not found",
"code": "bank_processing_failure",
"type": "api_error"
}Headers
Client app ID. You can find your app id in the Merchant Dashboard.
Client secret key. You can find your secret key in the Merchant Dashboard.
API version to be used. The accepted format is YYYY-MM-DD.
2024-07-10T00:00:00.000Z Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
"4dfb9780-46fe-11ee-be56-0242ac120002"
Body
Request parameters to create a virtual bank account.
It contains the details of the virtual bank account.
Show child attributes
Show child attributes
It contains the KYC information of the virtual bank account holder.
Show child attributes
Show child attributes
It contains the bank account information of the remitter.
Show child attributes
Show child attributes
It contains the details of the amount for the remittance at VBA account level.
Show child attributes
Show child attributes
It is the respective code used to create a virtual bank account in the corresponding bank. UTIB - Axis Bank ICIC - ICICI Bank YESB - Yes Bank Each bank code corresponds to a specific bank name.
It is the group you created with the recipients to receive notificiations regarding the payment details. The parameter allows alphanumeric characters, hyphen (-), underscore
"finance_team"
Response
Success response for creating a virtual bank account.
It contains the details of the virtual bank account.
Show child attributes
Show child attributes
Was this page helpful?