Track creation, availability, deactivation, and deletion of additional virtual accounts.
Use these webhooks to keep your application's additional virtual accounts up to date. They tell you when an account becomes active, fails, is deactivated, or is deleted.
For example, after receiving virtual_account.active, retrieve the account to get the payment details you can show the customer. Follow deposit webhooks to find out when a payment arrives and is credited.
Events
| Event | Meaning | Payload state |
|---|---|---|
virtual_account.active | Creation succeeded, or an existing additional VA became active again. | status: ACTIVE, deleted: false. |
virtual_account.failed | Creation failed, or the bank made an additional VA unavailable. | status: FAILED, deleted: false. |
virtual_account.deactive | An additional VA became deactivated. | status: DEACTIVE, deleted: false. |
virtual_account.deleted | An additional VA was archived. | deleted: true; status is normally DEACTIVE, but can remain FAILED for a failed creation. |
These events apply to additional accounts. Default accounts and nickname changes do not send these notifications. Repeating an operation without changing the account's state does not create another event, though an existing event may be delivered more than once.
Payload fields
resource.id identifies the virtual account. Use data.external_id to match it to your creation request; these events do not include resource.idempotency_key.
| Data field | Meaning |
|---|---|
customer_id | Customer UUID. |
account_id | Public account ID of the owner. |
virtual_account_id | The virtual account ID to match against your records. |
asset | VA currency. |
nickname | Nickname at the time of the event; empty when unset. |
external_id | Creation reference; empty when unset. |
status | Public VA state at the time of the event. |
deleted | Whether the VA has been archived. |
revision | VA revision for this event. Use it to prevent an older delivery from overwriting newer state. |
created_at | VA creation time. |
modified_at | Time of the VA change represented by the event. |
Verify the webhook signature and use X-Webhook-Event-Id to handle duplicate deliveries. Events can arrive out of order, so keep the highest revision you have seen for each virtual_account_id. Gaps between revision numbers are expected; some account changes do not send a webhook.
After a deleted event, remove the account from your payment screen. Keep its ID in your records for matching past deposits; the account itself can no longer be retrieved.
Active example
{
"event_name": "virtual_account.active",
"resource": {
"type": "virtual_accounts",
"id": "VA-7K3M-9X2R"
},
"data": {
"customer_id": "14f20ebd-893b-11f0-b308-2eaa4f6974f2",
"account_id": "BZ-ABCD-1234",
"virtual_account_id": "VA-7K3M-9X2R",
"asset": "USD",
"nickname": "Subscriptions",
"external_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "ACTIVE",
"deleted": false,
"revision": 2,
"created_at": "2026-10-28T01:00:00.000Z",
"modified_at": "2026-10-28T01:00:05.000Z"
}
}Failed example
{
"event_name": "virtual_account.failed",
"resource": {
"type": "virtual_accounts",
"id": "VA-7K3M-9X2R"
},
"data": {
"customer_id": "14f20ebd-893b-11f0-b308-2eaa4f6974f2",
"account_id": "BZ-ABCD-1234",
"virtual_account_id": "VA-7K3M-9X2R",
"asset": "USD",
"nickname": "Subscriptions",
"external_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "FAILED",
"deleted": false,
"revision": 3,
"created_at": "2026-10-28T01:00:00.000Z",
"modified_at": "2026-10-28T02:00:00.000Z"
}
}If you need help with a failed account, contact 1Money with its virtual_account_id and external_id. The event does not include a failure reason.
Deactivated example
{
"event_name": "virtual_account.deactive",
"resource": {
"type": "virtual_accounts",
"id": "VA-7K3M-9X2R"
},
"data": {
"customer_id": "14f20ebd-893b-11f0-b308-2eaa4f6974f2",
"account_id": "BZ-ABCD-1234",
"virtual_account_id": "VA-7K3M-9X2R",
"asset": "USD",
"nickname": "Subscriptions",
"external_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "DEACTIVE",
"deleted": false,
"revision": 4,
"created_at": "2026-10-28T01:00:00.000Z",
"modified_at": "2026-10-28T03:00:00.000Z"
}
}Deleted example
{
"event_name": "virtual_account.deleted",
"resource": {
"type": "virtual_accounts",
"id": "VA-7K3M-9X2R"
},
"data": {
"customer_id": "14f20ebd-893b-11f0-b308-2eaa4f6974f2",
"account_id": "BZ-ABCD-1234",
"virtual_account_id": "VA-7K3M-9X2R",
"asset": "USD",
"nickname": "Subscriptions",
"external_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "DEACTIVE",
"deleted": true,
"revision": 5,
"created_at": "2026-10-28T01:00:00.000Z",
"modified_at": "2026-10-28T04:00:00.000Z"
}
}Use deleted: true to identify a deleted account. Its status normally remains DEACTIVE, or FAILED for a failed creation. Past deposits and fees remain on record.
You can look up missed events and request a replay. To match an incoming payment to a virtual account, use the transaction_id from its deposit webhook to retrieve the transaction.
