Tài khoản ngân hàng
Các tài khoản ngân hàng đã liên kết để nhận báo có. Liên kết và hủy liên kết làm trong app vì cần mã OTP của ngân hàng; API chỉ đọc. Dùng id làm bankAccountId khi tạo yêu cầu thanh toán.
Đối tượng bank_account
Các trường
idstringID tài khoản ngân hàng, tiền tốba_. Dùng làmbankAccountIdkhi tạo yêu cầu thanh toán.objectstringLuôn là"bank_account".livemodebooleanfalsevới tài khoản ngân hàng thử của sandbox.bankobjectbin(mã BIN NAPAS),code(mã viết tắt, vd.MBB),name.accountTypeenumpersonal-account(cá nhân),business-household-account(hộ kinh doanh) hoặcbusiness-account(doanh nghiệp).accountNumberstringSố tài khoản.accountNamestringTên chủ tài khoản, in hoa không dấu.receivingNumberstring | nullTài khoản nhận báo có: virtual account (tài khoản định danh) hoặc chính số tài khoản.notifyRealAccountbooleantruenếu nhận báo có ở số tài khoản gốc thay vì virtual account; khi đóreceivingNumberlà số tài khoản gốc.statusstringactive(đang liên kết) hoặcremoved(đã hủy liên kết, sự kiệnbank_account.removed).pendingStepstring | nullBước xác nhận còn dang dở;nullkhi đã liên kết xong.linkedAtstring | nullThời điểm liên kết xong.createdAtstringThời điểm bắt đầu liên kết.
{
"id": "ba_8Hn2PqR5sT7vW9xY3zA4bC6d",
"object": "bank_account",
"livemode": true,
"bank": {
"bin": "970422",
"code": "MBB",
"name": "MB Bank"
},
"accountType": "personal-account",
"accountNumber": "0123456789",
"accountName": "NGUYEN VAN AN",
"receivingNumber": "0123456789",
"notifyRealAccount": false,
"status": "active",
"pendingStep": null,
"linkedAt": "2026-11-04T09:02:13.000Z",
"createdAt": "2026-11-04T09:00:41.000Z"
}Liệt kê tài khoản
GET/v1/bank-accounts
Trả các tài khoản đang liên kết (status là active), liên kết gần nhất trước. Không phân trang.
curl https://app.bankopenapi.com/api/v1/bank-accounts \
-H "Authorization: Bearer $BANKOPENAPI_API_KEY"const res = await fetch("https://app.bankopenapi.com/api/v1/bank-accounts", {
headers: {
Authorization: `Bearer ${process.env.BANKOPENAPI_API_KEY}`,
},
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);<?php
$ch = curl_init('https://app.bankopenapi.com/api/v1/bank-accounts');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('BANKOPENAPI_API_KEY'),
],
]);
$data = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new Exception($data['error']['code'] . ': ' . $data['error']['message']);
}
print_r($data);import os
import requests
res = requests.get(
"https://app.bankopenapi.com/api/v1/bank-accounts",
headers={"Authorization": f"Bearer {os.environ['BANKOPENAPI_API_KEY']}"},
timeout=15,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}")
print(data){
"object": "list",
"data": [
{
"id": "ba_8Hn2PqR5sT7vW9xY3zA4bC6d",
"object": "bank_account",
"livemode": true,
"bank": {
"bin": "970422",
"code": "MBB",
"name": "MB Bank"
},
"accountType": "personal-account",
"accountNumber": "0123456789",
"accountName": "NGUYEN VAN AN",
"receivingNumber": "0123456789",
"notifyRealAccount": false,
"status": "active",
"pendingStep": null,
"linkedAt": "2026-11-04T09:02:13.000Z",
"createdAt": "2026-11-04T09:00:41.000Z"
}
]
}Xem một tài khoản
GET/v1/bank-accounts/:id
Trả đối tượng bank_account theo ID (tiền tố ba_), kể cả tài khoản đã hủy liên kết.
Lỗi
404 NOT_FOUNDKhông có tài khoản với ID này trong tài khoản của bạn.
curl https://app.bankopenapi.com/api/v1/bank-accounts/ba_8Hn2PqR5sT7vW9xY3zA4bC6d \
-H "Authorization: Bearer $BANKOPENAPI_API_KEY"const res = await fetch("https://app.bankopenapi.com/api/v1/bank-accounts/ba_8Hn2PqR5sT7vW9xY3zA4bC6d", {
headers: {
Authorization: `Bearer ${process.env.BANKOPENAPI_API_KEY}`,
},
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);<?php
$ch = curl_init('https://app.bankopenapi.com/api/v1/bank-accounts/ba_8Hn2PqR5sT7vW9xY3zA4bC6d');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('BANKOPENAPI_API_KEY'),
],
]);
$data = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new Exception($data['error']['code'] . ': ' . $data['error']['message']);
}
print_r($data);import os
import requests
res = requests.get(
"https://app.bankopenapi.com/api/v1/bank-accounts/ba_8Hn2PqR5sT7vW9xY3zA4bC6d",
headers={"Authorization": f"Bearer {os.environ['BANKOPENAPI_API_KEY']}"},
timeout=15,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}")
print(data){
"id": "ba_8Hn2PqR5sT7vW9xY3zA4bC6d",
"object": "bank_account",
"livemode": true,
"bank": {
"bin": "970422",
"code": "MBB",
"name": "MB Bank"
},
"accountType": "personal-account",
"accountNumber": "0123456789",
"accountName": "NGUYEN VAN AN",
"receivingNumber": "0123456789",
"notifyRealAccount": false,
"status": "active",
"pendingStep": null,
"linkedAt": "2026-11-04T09:02:13.000Z",
"createdAt": "2026-11-04T09:00:41.000Z"
}{
"error": {
"code": "NOT_FOUND",
"message": "Không tìm thấy tài khoản ngân hàng."
}
}