Skip to main content

Account linking status webhook

When you create or link a virtual account (VA) via the Create virtual account (VA) API, some banks process the request asynchronously (Asynchronous Callback):

  • Vietcombank (VCB): Applies to Personal and Household business accounts (pass webhookUrl only; requestId is not needed).
  • TPBank (TPB): Applies to all account types (pass both webhookUrl and requestId).

When calling the create-va API, pass a webhookUrl to receive the result. When the bank finishes activating the account or the user completes verification, the bank sends the result to Tingee. Tingee then immediately sends a webhook notification to the webhookUrl you provided.


Flow diagram​

Account linking status webhook flow
← Swipe to see more →

Webhook details​

POST
URLhttps://your-server.com/api/webhook/va-status

Webhook that notifies the partner system of the virtual account linking or unlinking status from VCB and TPBank.

Headers sent​

These headers help you identify the request, check when it was sent and verify the integrity of the data:

HeaderDescription
Content-TypeAlways application/json.
x-request-idUnique identifier of each webhook delivery from Tingee (UUID).
x-request-timestampTime Tingee sends the notification (format: yyyyMMddHHmmssSSS, UTC+7).
x-signatureHMAC-SHA512 digital signature used to verify data integrity.

Body Parameter​

The details of the bank account status are sent in the body:

FieldTypeRequiredDescription
requestIdstring~Original request identifier (applies to TPBank only; not used for Vietcombank).
merchantIdnumber✓Merchant ID on the Tingee system.
merchantAccountNumberIdnumber~ID of the bank account record on the Tingee system (present for TPBank).
shopIdnumber~ID of the shop this virtual account is assigned to.
bankNamestring✓Bank name ("VCB" or "TPB").
bankBinstring✓Bank BIN: "970436" (Vietcombank) or "970423" (TPBank).
accountNumberstring✓The customer's original bank account number.
accountNamestring~Account holder name (uppercase, without diacritics).
vaAccountNumberstring✓The virtual account (VA) number that was issued/linked successfully.
isNotifyAccountNumberboolean✓false: virtual account (VA); true: original account receiving balance notifications.
statusstring✓Processing status from the bank (see the table below).

Status values (status):​

status valueMeaningRecommended action
confirm-va-successVA linked / created successfullySave the virtual account number (vaAccountNumber) in your system to start receiving payments.
delete-va-successVA unlinked successfullyMark the virtual account as no longer receiving balance notifications, or as unlinked.
confirm-va-failedVA linking / creation failedAsk the customer to check their information or try again.
delete-va-failedVA unlinking failedLog the unlinking error for investigation.

Sample Payload Body​

{
"merchantId": 1001,
"shopId": 24,
"bankName": "VCB",
"bankBin": "970436",
"accountNumber": "0123456789",
"accountName": "NGUYEN VAN A",
"vaAccountNumber": "99990123456789",
"isNotifyAccountNumber": false,
"status": "confirm-va-success"
}

Partner server response​

After receiving and processing the webhook, your server must respond with HTTP 200 OK and the following acknowledgement JSON:

{
"code": "00",
"message": "Success"
}