Skip to main content

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

HeaderValueRequiredDescription
Acceptapplication/jsonYesContent type for the response
AuthorizationBearer {access_token}YesBearer token for authentication
Content-Typeapplication/jsonYesRequest body content type
on-behalf-ofstringNoCustomer 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

FieldTypeRequiredDescription
biz_idstringYesThe 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

FieldTypeDescription
biz_idstringVirtual account identifier
statusstringAccount status (CLOSED)
closed_atstring (date-time)Account closure timestamp
messagestringSuccess 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:

  1. ✅ Verify account balance is exactly zero
  2. ✅ Confirm no pending incoming transactions
  3. ✅ Ensure no pending outgoing payments
  4. ✅ Update any systems that reference this account
  5. ✅ Notify stakeholders who may send funds to this account
  6. ✅ Confirm bank supports virtual account closure
  7. ✅ 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

Interactive API Explorer