Account Events
These webhook events are triggered based on the overall lifecycle of a Virtual Account (VA) application and status changes. Merchants must closely monitor account update events. Only when the account status changes to active can the actual receiving bank account information be retrieved for users to fund their accounts.
🔔 Event Types
| Event Identifier | Trigger Condition & Business Meaning | Actionable Advice |
|---|---|---|
va.create | Account Application Submitted (Created): Triggered when a VA application is successfully registered in the system and submitted to the underlying bank for processing. The status is typically applying, and the bankInfoList is empty. | Use for logging that the application is received. Payment routing details are not yet available at this stage. |
va.update | Account Status Updated (Updated): Triggered whenever the VA status changes (e.g., changes to active). This is the most critical event. | 🌟 Account Opening Success Trigger: Listen to this event. When data.status in the payload changes to active, it indicates successful account creation. Extract the complete banking details (Account Number, Routing Number, etc.) from bankInfoList to display to your users for funding. |
📦 Payload Example
When an event occurs, DogPay sends a POST request to your configured webhook endpoint. Below is the complete payload example of a va.update event when the account is successfully activated (active), dispatching the bankInfoList array with specific account details:
{
"event_id": "123e4567-e89b-12d3-a456-426614174000",
"event_identifier": "va.update",
"data": {
"vaId": "0675226a-4487-46a3-932e-63bb3f776380",
"vaName": "For Test",
"currency": "USD",
"status": "active",
"statusMessage": "",
"available": "0.00",
"createAt": "2026-07-02 10:18:01",
"updateAt": "2026-07-02 14:19:42",
"country": "PR",
"bankName": "JP_MORGAN",
"payeeType": "global_multi",
"payeeCurrencies": [
"USD"
],
"bankInfoList": [
{
"accountId": "a7b04434-449a-45af-953a-aaf5a0c206d9",
"accountName": "John Mock-Doe",
"bankName": "JP Morgan Chase NA",
"bankAccountNo": "40000007289",
"bankAccountType": "bban",
"bankAddress": {
"line1": "New York NY, US",
"postCode": "",
"city": "",
"state": "",
"country": ""
},
"bankCode": "",
"branchCode": "",
"accountHolderAddress": {
"line1": "1, 2, HK, HK, Hong Kong, 111111",
"postCode": "111111",
"city": "HK",
"state": "HK",
"country": "HK"
},
"bicSwift": null,
"routingType": "ach_routing_number",
"routingNumber": "021000021",
"middleBankName": "",
"middleBankBicSwift": "",
"middleBankRoutingNumber": "",
"referenceNumber": "40000007289",
"achReferenceNumber": "40000007289",
"achDepositBankAccountNo": "866533562",
"bankCountry": "PR",
"vrnType": null
},
{
"accountId": "a7b04434-449a-45af-953a-aaf5a0c206d9",
"accountName": "John Mock-Doe",
"bankName": "Zenus Bank International Inc",
"bankAccountNo": "40000007289",
"bankAccountType": "bban",
"bankAddress": {
"line1": "Zenus Tower, 19th Floor, 252 Ponce de Leon, San Juan, PR, 00918",
"postCode": "00918",
"city": "San Juan",
"state": "San Juan",
"country": "PR"
},
"bankCode": "",
"branchCode": "",
"accountHolderAddress": {
"line1": "1, 2, HK, HK, Hong Kong, 111111",
"postCode": "111111",
"city": "HK",
"state": "HK",
"country": "HK"
},
"bicSwift": "ZEITPRSJXXX",
"routingType": "swift_bic",
"routingNumber": null,
"middleBankName": "JPMORGAN CHASE BANK, N.A.",
"middleBankBicSwift": "CHASUS33",
"middleBankRoutingNumber": "021000021",
"referenceNumber": "",
"achReferenceNumber": "",
"achDepositBankAccountNo": "",
"bankCountry": "PR",
"vrnType": null
}
]
}
}
Parsing NoteBecause the same virtual account may support multiple funding channels such as local clearing (e.g., ACH) and international wire transfers (e.g., SWIFT) simultaneously, the
bankInfoListarray may return multiple bank detail objects. Ensure you extract the corresponding information based on the Routing Type required by your business flow before displaying it to the user.
Updated 15 days ago
