Bank Lookup (VND only)
Lookup via QR Image
Accepts VietQR (EMV Co) QR image.
This API allows you to retrieve bank account details from QR image. To do so, you need to provide the qr_image in the request body.
When the QR content is valid, the API returns account_name, account_number, bank_name and swift_code.
POST
/
v2
/
banks
/
lookup
/
qr_image
Lookup via QR Image
curl --request POST \
--url https://api.cleverhub.co/api/v2/banks/lookup/qr_image \
--header 'Content-Type: multipart/form-data' \
--header 'app-id: <api-key>' \
--header 'secret-key: <api-key>' \
--form qr_image='@example-file'import requests
url = "https://api.cleverhub.co/api/v2/banks/lookup/qr_image"
files = { "qr_image": ("example-file", open("example-file", "rb")) }
headers = {
"app-id": "<api-key>",
"secret-key": "<api-key>"
}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('qr_image', 'qr_image.png');
const options = {method: 'POST', headers: {'app-id': '<api-key>', 'secret-key': '<api-key>'}};
options.body = form;
fetch('https://api.cleverhub.co/api/v2/banks/lookup/qr_image', 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.cleverhub.co/api/v2/banks/lookup/qr_image",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qr_image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nqr_image.png\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"app-id: <api-key>",
"secret-key: <api-key>"
],
]);
$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.cleverhub.co/api/v2/banks/lookup/qr_image"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qr_image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nqr_image.png\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("app-id", "<api-key>")
req.Header.Add("secret-key", "<api-key>")
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.cleverhub.co/api/v2/banks/lookup/qr_image")
.header("app-id", "<api-key>")
.header("secret-key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qr_image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nqr_image.png\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cleverhub.co/api/v2/banks/lookup/qr_image")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["app-id"] = '<api-key>'
request["secret-key"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qr_image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nqr_image.png\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"account_name": "NGO TIEN PHONG",
"account_number": "1234567899",
"bank_name": "Ngân hàng TMCP Đầu tư và Phát triển Việt Nam",
"swift_code": "BIDVVNVX"
}{
"errors": {
"code": "REQUIRE_LOGIN",
"message": "Not Authorised"
}
}{
"errors": {
"message": "Not found"
}
}Authorizations
A unique identifier assigned to each application.
A secure token associated with the app-id.
Body
multipart/form-data
Image file of the QR code.
Supported file types are png, jpg, and jpeg with a maximum file size of 2MB.
Base64 is not supported.
⌘I
Lookup via QR Image
curl --request POST \
--url https://api.cleverhub.co/api/v2/banks/lookup/qr_image \
--header 'Content-Type: multipart/form-data' \
--header 'app-id: <api-key>' \
--header 'secret-key: <api-key>' \
--form qr_image='@example-file'import requests
url = "https://api.cleverhub.co/api/v2/banks/lookup/qr_image"
files = { "qr_image": ("example-file", open("example-file", "rb")) }
headers = {
"app-id": "<api-key>",
"secret-key": "<api-key>"
}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('qr_image', 'qr_image.png');
const options = {method: 'POST', headers: {'app-id': '<api-key>', 'secret-key': '<api-key>'}};
options.body = form;
fetch('https://api.cleverhub.co/api/v2/banks/lookup/qr_image', 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.cleverhub.co/api/v2/banks/lookup/qr_image",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qr_image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nqr_image.png\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"app-id: <api-key>",
"secret-key: <api-key>"
],
]);
$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.cleverhub.co/api/v2/banks/lookup/qr_image"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qr_image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nqr_image.png\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("app-id", "<api-key>")
req.Header.Add("secret-key", "<api-key>")
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.cleverhub.co/api/v2/banks/lookup/qr_image")
.header("app-id", "<api-key>")
.header("secret-key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qr_image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nqr_image.png\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cleverhub.co/api/v2/banks/lookup/qr_image")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["app-id"] = '<api-key>'
request["secret-key"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qr_image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nqr_image.png\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"account_name": "NGO TIEN PHONG",
"account_number": "1234567899",
"bank_name": "Ngân hàng TMCP Đầu tư và Phát triển Việt Nam",
"swift_code": "BIDVVNVX"
}{
"errors": {
"code": "REQUIRE_LOGIN",
"message": "Not Authorised"
}
}{
"errors": {
"message": "Not found"
}
}