---
title: "Close a virtual account"
method: POST
path: "/v2/virtual-accounts/{virtualAccountId}/close"
---

# Close a virtual account

`POST /v2/virtual-accounts/{virtualAccountId}/close`

## Request

- Base URL: `https://api.slash.com`
- URL: `https://api.slash.com/v2/virtual-accounts/{virtualAccountId}/close`
- Auth: API key in header `X-API-Key`

Close an accessible virtual account. Pending transfers from it are canceled, cards attached to it are closed, and its remaining balance is moved to the Account's primary virtual account shortly after the response, so the returned `balance` may still be non-zero. Inbound transfers addressed to a closed virtual account are returned. The primary virtual account cannot be closed, and closing cannot be reversed.

## Path parameters

- `virtualAccountId` string, required

## Response `200`

The closed virtual account.

- VirtualAccount: A balance-bearing virtual account. Virtual accounts in eligible bank Accounts can source or receive API v2 transfers; Global USD virtual accounts are readable but cannot be used by the API v2 transfer endpoints.
  - `id` string, required: Virtual account id with the `subaccount_` prefix.
  - `name` string, required
  - `accountId` string, required: Parent Account id with the `sa_group_` prefix.
  - `accountType` 'primary' | 'default', required
  - `status` 'open' | 'closed', required
  - `balance` Money, required: A signed monetary amount expressed in minor units.
    - `amount` integer, required: Amount in the currency's minor units.
    - `currency` string, required: Uppercase ISO 4217 currency code.
  - `commission` union: Funds diverted to the Account's primary virtual account.
    - object
      - `id` string, required: Commission configuration id.
      - `type` 'flat_fee', required
      - `amount` UsdMoney, required: A positive USD amount expressed in cents.
        - `amount` integer, required: Amount in cents. For example, `1250` represents USD 12.50.
        - `currency` 'USD', required
      - `frequency` 'monthly' | 'yearly', required
      - `startsAt` string, date-time: RFC 3339 date and time when collection begins.
    - object
      - `id` string, required: Commission configuration id.
      - `type` 'take_rate', required
      - `rate` number, required: Fraction of incoming funds diverted. `0.1` means 10%.

## Other responses

- `400`: - `invalid_request (request shape)` — The body, query, or headers failed validation, or a required header is missing. `details` has one entry per failing location, keyed by JSON pointer or header name.
- `401`: - `unauthorized` — API key authentication is missing or invalid.
- `403`: - `forbidden` — The credential is not permitted to perform this action on the resource. When the resource is a field of the request, `details` names that `field` and the `id` it received. - `forbidden (legal entity)` — The credential is not permitted to act for the selected legal entity. - `not_available` — Public API v2 is not yet available. Use [Public API v1](https://docs.slash.com/introduction) in the meantime. - `user_api_key_required` — The API key is scoped to a legal entity rather than a user. Every v2 request needs a user API key, created under Settings → API keys in the Slash dashboard, together with the `x-legal-entity` header.
- `404`: - `not_found` — No resource matches the identifier. When the identifier is a field of the request, `details` names that `field` and the `id` it received.
- `409`: - `primary_virtual_account` — The virtual account is the account's primary one, which cannot be closed or updated. - `virtual_account_closed` — The virtual account, or the account it belongs to, is closed.
- `429`: The request exceeded the applicable rate limit. The response body is plain text, not the error object; clients must not depend on its wording.
- `500`: - `internal` — Slash could not complete the request. Quote `referenceId` when contacting Slash support.

## Changes

- **2026-10-16** `8b5d371ffeea`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/slashfi/apis/slash-public-api/changes/v2/virtual-accounts/:virtualAccountId/close/post.md)

---

[API](https://skmtc.dev/slashfi/apis/slash-public-api.md) - [All operations](https://skmtc.dev/slashfi/apis/slash-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/slashfi/apis/slash-public-api/revisions/eaed2d63c9e2?raw)
