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

BankOfficial VAMoney inMoney outNotes
ACBYesYesNo
BIDVYes (required)YesNoNo main account, must use VA
MBBankYesYesNo
MSBYes (required)YesNoNo main account, must use VA
KienlongBankYes (required)YesNoNo main account, must use VA
OCBYes (required)YesNoNo main account, must use VA
SacombankNoYesYesNo official VA, use TKP
TPBankNoYesYesNo official VA, use TKP
VietinBankYes (business only)YesYesPersonal accounts have no official VA, use TKP
VPBankNoYesNoMoney-in sync only

If your bank isn't in the table, webhook isn't supported yet. Latest list at Dashboard → Bank accountsAdd account.

The Official VA column shows whether the bank issues real VAs. Banks without official VA can still use TKP for reconciling by transfer memo.

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

Step 1: Pick the bank, choose type (personal 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). For BIDV, MSB, KienlongBank, OCB (personal): at least 1 VA is required. Other banks 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 BIDV, MSB, KienlongBank, OCB: the Main account checkbox is auto-locked (these banks only support VA), at least 1 VA must be selected.

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 does:

  • Banks: only Sacombank, TPBank, VietinBank are supported.
  • VA: official VAs are not supported, must use TKP.

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

Example configuration

A company has 3 accounts: Vietcombank (VCB), BIDV, and Techcombank (TCB). Requirements:

  • VCB: receive every transaction.
  • BIDV: only receive VA ORDER001.
  • TCB: ignore entirely.

Steps:

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

Result:

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

Next

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