Which banks support SePay webhooks?

Banks supported by SePay Webhooks (ACB, BIDV, MBBank, VPBank...), with VA features, money-in and money-out, linking accounts and assigning to webhooks.

||

For a webhook to fire, two conditions must be met: your bank account is linked to SePay, and the bank supports the transaction type (money in, money out, or both). The sections below list what each bank can do and how to configure each type.

Two VA types

Official VA: the bank issues you a dedicated VA account number. Customers transfer directly into that number, and the bank and SePay both identify the transaction by that VA number.

Memo VA (TKP): there's no dedicated account number. Customers transfer into your main account with the TKP code in the transfer memo. SePay reconciles by reading the memo to figure out which TKP the transaction belongs to.

TypeDedicated VA number?How transactions are identified
Official VAYes (each VA has its own number)By the VA account number the customer transferred to
Memo VA (TKP)NoBy the transfer memo content

Both types are configured under the bank account detail page on the Dashboard. TKP (short for "Tài khoản phụ", meaning sub-account) is a memo-based virtual account for banks that don't issue official VA numbers. It's useful when you need to allocate transactions per order or branch. The TKP code can appear anywhere in the transfer memo as long as it matches the configured TKP.

On the webhook side, both types appear in the payload's subAccount field. Your server handles them the same way.

Supported banks

What a bank can do also depends on the account type you pick when linking it: personal, business household or business.

BankAccount typeReceives on the main accountOfficial VAMoney inMoney out
ACBPersonal, business household, businessYesYesYesYes
BIDVPersonal, business householdNo, VA onlyYesYesNo
BIDVBusinessYesYesYesYes
KienlongBankPersonal, business household, businessNo, VA onlyYesYesNo
MBBankPersonal, business household, businessYesYesYesYes
MSBPersonal, business household, businessNo, VA onlyYesYesNo
OCBPersonal, business household, businessNo, VA onlyYesYesNo
SacombankPersonal, business householdYesYesYesYes
Shinhan BankBusinessYesYesYesYes
TPBankPersonal, business household, businessYesNoYesYes
VietcombankBusiness, business householdNo, VA onlyYesYesNo
VietinBankPersonal, business householdYesNoYesYes
VietinBankBusiness using the MAP identified collection serviceNo, VA onlyYesYesNo
VietinBankBusiness not using MAPYesYesYesNo
VPBankPersonal (VPBank NEO)Depends on how you link it (see below the table)YesYesNo
VPBankBusiness household (VPBank NEO)Depends on how you link it (see below the table)YesYesNo
VPBankBusiness household (VPBank NEOBiz)Depends on how you link it (see below the table)YesYesNo
VPBankBusiness (VPBank NEOBiz)YesNoYesYes

Accounts marked "No, VA only" do not receive transfers sent straight to the main account number: create at least 1 official VA and have customers pay into the VA number. Accounts that receive on the main account but whose bank issues no official VA (TPBank, VietinBank personal and business household, VPBank business) can still allocate transactions with TKP.

When linking a VPBank personal or business household account, you select Công nghệ tài khoản ảo (VA) (virtual account technology) and can also select Đồng bộ tài khoản chính (chỉ tiền vào) (sync the main account, money in only). With VA only, the account receives money only through official VAs. Adding the main account also picks up transfers sent straight to the main account number, but VPBank will soon stop accepting new links this way.

If your bank isn't in the table, webhooks aren't supported yet. The latest list is at Dashboard → Bank accounts → Add account: once you pick the bank and account type, the screen lists exactly what that type supports.

Each account must be linked before a webhook can use it. Go to Dashboard → Bank accounts → Add account.

Step 1: Pick the bank, choose the account type (personal, business household or business), enter the account number.

Step 2: Connect the API. Enter internet banking credentials or connect via OAuth (depends on the bank). SePay runs a check; once it passes, the account flips to Active.

Step 3: Create VA (if needed). Accounts marked "No, VA only" in the table above need at least 1 VA. Other accounts only need a VA if you want to allocate transactions.

Step 4: Verify. Account status must be Active (green dot). Transfer a small amount, then go to Transactions to confirm SePay received it.

Account not Active = webhook does not fire

A suspended or disconnected account produces no transactions. A webhook not firing here is not the webhook's fault. Check the account status first.

Select an account for the webhook

In the webhook wizard, pick one of two modes:

All accounts: the webhook receives every transaction from every linked account. New accounts linked later are picked up automatically.

Specific accounts: pick the accounts attached to the webhook. The interface has 2 columns: accounts not yet selected on the left, accounts already added on the right. Click to add, or click ✕ to remove. Expanding a selected account reveals VA configuration.

Account selector
Click to expand
Multi-account selection UI

VA configuration per bank

When you expand a selected account, the interface displays:

Expanded VA configuration
Click to expand
Main account checkbox and VA list inside the selected account

Main account checkbox: if enabled, the webhook fires on every transaction in the account, including transfers that don't use a VA. If disabled, the webhook only fires when the transaction matches a VA ticked below.

VA list: tick each VA to track. The webhook fires only when the transaction's subAccount matches a selected VA.

For VA-only accounts (BIDV personal and business household, KienlongBank, MSB, OCB, Vietcombank): the Main account checkbox is auto-locked, and at least 1 VA must be selected. VietinBank business accounts using MAP are also VA-only, but their checkbox is not locked: turning on Main account brings no extra transactions, so just tick the VAs you want to follow.

Mix and match

Within one webhook, Bank A can receive everything while Bank B only listens to VAs. No need for two separate webhooks.

Note when choosing Money out only

Event types All and Money in only have no constraints. Money out only works only for accounts with Money out set to Yes in the supported banks table, and cannot filter by official VA: use TKP if you need to filter by VA.

The UI blocks and warns if you try to save an invalid configuration.

Example configuration

A company has 3 accounts: MBBank, a personal BIDV account, and TPBank. Requirements:

  • MBBank: receive every transaction.
  • BIDV: only receive VA ORDER001.
  • TPBank: ignore entirely.

Steps:

  1. Selection mode: Specific accounts.
  2. Add MBBank and BIDV to the selected column. Don't add TPBank.
  3. Expand MBBank: enable Main account.
  4. Expand BIDV: Main account auto-locked (a personal BIDV account is VA-only), tick VA ORDER001.

Result:

TransactionWebhook fires?
Money into MBBank without VAYes
Money into MBBank through any VAYes
Money into BIDV through VA ORDER001Yes
Money into BIDV through VA ORDER002No
Money into TPBankNo (not in the list)

Next

Account configuration changes apply to the next transaction. Transactions already sent are unaffected.