---
title: "Close a Virtual Account"
method: POST
path: "/virtual_accounts/{id}/close"
tags: ["Virtual Accounts"]
---

# Close a Virtual Account

`POST /virtual_accounts/{id}/close`

Manually close an active virtual account so it no longer accepts payments.

## Path parameters

- `id` string, required

## Request body

- object
  - `status` 'closed', required — Must be 'closed' to close the account.

## Response `200`

Virtual Account closed.

- VirtualAccount — A virtual bank account or VPA that accepts NEFT/RTGS/IMPS/UPI payments (Smart Collect). Each payment creates a BankTransfer entity. Auto-closes after 90 days of inactivity. Prefix: va_
  - `id` string — Virtual account ID. Prefix: va_
  - `name` string — Display name of the virtual account.
  - `entity` 'virtual_account'
  - `description` string — Purpose or description of the virtual account.
  - `amount_expected` integer — Expected payment amount in paise. 0 means any amount is accepted.
  - `amount_paid` integer — Total amount received so far in paise.
  - `status` 'active' | 'closed' — active = accepting payments; closed = no longer accepting payments.
  - `receivers` object[] — Payment receivers assigned to this virtual account. Can include bank_account (ba_*) and/or vpa (vpa_*) receivers.
    - `id` string — Receiver ID. Prefix: ba_ for bank account, vpa_ for VPA.
    - `entity` 'bank_account' | 'vpa'
    - `ifsc` string — IFSC code (bank accounts only).
    - `bank_name` string — Bank name (bank accounts only).
    - `name` string — Account holder name (bank accounts) or VPA address (VPAs).
    - `notes` Notes — Key-value pairs for storing custom metadata. Maximum 15 pairs. Each key and value must not exceed 256 characters.
    - `account_number` string — Virtual account number (bank accounts only).
    - `username` string — UPI username part of the VPA (VPAs only).
    - `handle` string — UPI handle (e.g., razorpay) (VPAs only).
    - `flow` 'upi_qr' — Flow type for VPA receivers.
  - `close_by` integer — Unix timestamp by which the account will auto-close. Maximum value: 2147483647.
  - `closed_at` integer — Unix timestamp when the account was closed.
  - `customer_id` string — Customer ID linked to this virtual account (cust_*).
  - `notes` Notes — Key-value pairs for storing custom metadata. Maximum 15 pairs. Each key and value must not exceed 256 characters.
  - `created_at` integer

## Other responses

- `400` — Bad request. Invalid parameters or missing required fields.
- `401` — Authentication failed. Invalid or missing API key credentials.
- `404` — Resource not found.
- `429` — Rate limit exceeded. Implement exponential backoff with jitter before retrying.

---

[API](https://skmtc.net/curlec/apis/razorpay-api.md) · [All operations](https://skmtc.net/curlec/apis/razorpay-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/curlec/razorpay-api/versions/824ca9e6faef/schema)
