Parent: Overview · Updated: 2026-08-27
sub/create / sub/get / sub/list)VIRTUAL_ACCOUNT_UPDATED for account availability changesVIRTUAL_ACCOUNT_ORDER_UPDATED; you may receive VIRTUAL_ACCOUNT_UPDATED againSUB_VIRTUAL_ACCOUNT_RFI_REQUIRED arrives asynchronously, follow RFI — remediation is decoupled from the main payin floworder/detail / primary/get-balanceorderStatus is SUCCESS, the merchant can request a refund. BPN creates a separate RE* child (businessType=PAYIN_REFUND). The original VA* order stays SUCCESS.RE orderStatus | refundStatus | Meaning |
|---|---|---|
PROCESSING | REFUNDING | Refund created; channel not terminal |
REFUNDED | REFUNDED | Funds confirmed and ledger posted |
FAIL | REFUND_FAILED | Channel explicitly failed |
{
"orderId": "VA20260826160000000001",
"businessType": "PAY_IN",
"refundStatus": "REFUNDING",
"originalOrderId": null,
"refundOrderId": "RE20260826170000000001",
"amount": "100.00",
"currency": "BRL",
"orderStatus": "SUCCESS"
}RE* child, not on the original order as REFUNDED. Timeout or missing callback must not be treated as success — poll GET /v1/virtual-account/order/detail with the RE* orderId.POST /v1/virtual-account/order/refund. State machine: statuses.md.| Key | Use |
|---|---|
VA orderId (VA*) | Original payin |
RE orderId (RE*) | Refund child |
refundOrderId / originalOrderId | 1:1 link |
Webhook eventId | Callback idempotency |
Webhook referenceId | Linked business object |