VPBank API

Accept VPBank Transfers With ApiPay

Integrate the VPBank API (VPB) with ApiPay to create VietQR checkout pages, receive real-time transaction webhooks, and reconcile bank transfers automatically.

ApiPay - VPBank API
VPBank payment integration with the ApiPay API

Advanced security

Payment data is encrypted, fully authenticated, and access is managed per API account.

Instant payments

As soon as a customer transfers money, ApiPay sends a transaction event for your system to process.

Clear API

Consistent REST APIs, readable payloads, and ready documentation help technical teams move quickly.

Multi-bank support

Expand from one existing account to multiple banks without changing your payment workflow.

Flexible webhooks

Receive transaction-level webhooks for reconciliation, order updates, or automatic service activation.

Management dashboard

Track linked accounts, payment requests, revenue, and processing status in one place.

Before you connect

An active personal, business, or household business VPBank account.

The account holder or business name, account number, linked phone number, and ID or tax code.

Business accounts require a signed API agreement and manual activation. Household accounts connect online.

An ApiPay account with access key and secret key for API calls.

Connect bank

Connect VPBank in Dashboard > Banks. Personal and household accounts follow the online flow; business accounts are submitted for manual activation.

Sign in to the Dashboard and open Banks.
Choose VPBank and the account type, then enter the account details and ID or tax code.
Complete activation if requested, then copy bankPublicId for payment requests.
Sample API for VPBank

Create a payment request with VPBank

JavaScriptCreate payment request
const auth = Buffer.from('${ACCESS_KEY}:${SECRET_KEY}').toString('base64');

const response = await fetch('https://app.apipay.vn/v1/client/payment-requests', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${auth}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    bankPublicId: 'vpb_public_id',
    amount: 500000,
    content: 'ORDER-VPB-001',
  }),
});

const {data} = await response.json();
console.log(data.payUrl);
PythonREST API example
import base64
import requests

token = base64.b64encode(b'your_access_key:your_secret_key').decode()

response = requests.post(
    'https://app.apipay.vn/v1/client/payment-requests',
    headers={
        'Authorization': f'Bearer {token}',
        'Content-Type': 'application/json',
    },
    json={
        'bankPublicId': 'vpb_public_id',
        'amount': 500000,
        'content': 'ORDER-VPB-001',
    },
    timeout=30,
)

print(response.json()['data']['payUrl'])
FAQ

Frequently asked questions

Ready to integrate?

Start with VPBank today

Create a free account, connect your bank in the Dashboard, and put bank-transfer payments into production without replacing your current system.