Close Virtual Account
Overview
Close a VA if you no longer need it. Before closing the VA, ensure the account balance is zero and confirm with the solution manager that the VA issuing bank supports VA closure.
Resource Access
- HTTP Method:
POST - Endpoint:
/banking/iban/api/virtual-account/v2/close - Authentication: Bearer token required
Request Headers
| Header | Value | Required | Description |
|---|---|---|---|
Accept | application/json | Yes | Content type for the response |
Authorization | Bearer {access_token} | Yes | Bearer token for authentication |
Content-Type | application/json | Yes | Request body content type |
on-behalf-of | string | No | Customer ID for on-behalf-of operations |
Request Body
The request body should contain a JSON object with the following structure:
{
"biz_id": "R200801012359590001"
}
Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
biz_id | string | Yes | The unique virtual account identifier |
Response
Success Response (200 OK)
{
"biz_id": "R200801012359590001",
"status": "CLOSED",
"closed_at": "2026-01-14T10:00:00.000Z",
"message": "Virtual account closed successfully"
}
Response Fields
| Field | Type | Description |
|---|---|---|
biz_id | string | Virtual account identifier |
status | string | Account status (CLOSED) |
closed_at | string (date-time) | Account closure timestamp |
message | string | Success message |
Error Responses
- 400 Bad Request: Account balance not zero or invalid biz_id
- 401 Unauthorized: Invalid or missing authentication token
- 404 Not Found: Virtual account not found
- 409 Conflict: Account cannot be closed (non-zero balance or pending transactions)
Code Examples
cURL
curl -X POST \
'https://gateway.ahrvo.network/banking/iban/api/virtual-account/v2/close' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"biz_id": "R200801012359590001"
}'
Python
import requests
url = "https://gateway.ahrvo.network/banking/iban/api/virtual-account/v2/close"
headers = {
"Accept": "application/json",
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"biz_id": "R200801012359590001"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
JavaScript (Node.js)
const axios = require('axios');
const url = 'https://gateway.ahrvo.network/banking/iban/api/virtual-account/v2/close';
const headers = {
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
};
const data = {
biz_id: 'R200801012359590001'
};
axios.post(url, data, { headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error.response.data);
});
Usage Notes
- Zero Balance Required: Ensure the virtual account balance is zero before attempting to close
- Pending Transactions: All pending transactions must be completed or cancelled
- Bank Support: Confirm with your solution manager that the issuing bank supports VA closure
- Irreversible Action: Closing a virtual account is permanent and cannot be undone
- Historical Records: Transaction history for closed accounts is retained for compliance
- Alternative to Closing: Consider leaving the account open but inactive if you may need it in the future
Pre-Closure Checklist
Before closing a virtual account:
- ✅ Verify account balance is exactly zero
- ✅ Confirm no pending incoming transactions
- ✅ Ensure no pending outgoing payments
- ✅ Update any systems that reference this account
- ✅ Notify stakeholders who may send funds to this account
- ✅ Confirm bank supports virtual account closure
- ✅ Download transaction history if needed for records
Common Closure Reasons
- Business relationship ended
- Currency no longer needed
- Consolidating to fewer accounts
- Switching to different service provider
- Regulatory or compliance requirements