> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polygon.technology/llms.txt
> Use this file to discover all available pages before exploring further.

# Delete a Virtual Account

> Delete a customer's Virtual Account. Initiates the close flow against
the underlying Erebor DDA; the VA enters the delete-pending window
(status remains as-is, `deletionRequestedAt` set) and finalizes to
`deleted` on the subsequent `DEPOSIT_ACCOUNT.CLOSED` webhook.

Returns `503 virtualAccountCloseUnavailable` when the underlying Erebor
close primitive is not yet available for this account — the VA is not
deleted and remains active/deletable, and the request can be retried later.



## OpenAPI

````yaml /api-reference/openapi.yaml delete /virtual-accounts/{virtualAccountId}
openapi: 3.0.3
info:
  title: Polygon OMS Public API
  version: v26.05.28-0001
  description: >-
    Unified API for moving money between crypto and fiat. Three ways to move
    money: Transactions (instant, wallet or card funded, including Cash-In for
    in-person cash deposits), Deposit Addresses (reusable crypto deposit
    configurations), and Virtual Accounts (dedicated bank accounts that
    auto-convert fiat to crypto). Standard transactions follow a two-step flow:
    create a Quote (pricing), then create a Transaction (execution). Cash-in
    codes generate a one-time deposit code for in-person cash deposits at retail
    locations.
  contact:
    name: Polygon OMS
    url: https://oms.polygon.technology
servers:
  - url: https://sandbox-api.polygon.technology/v0.12
    description: Sandbox
  - url: https://api.polygon.technology/v0.12
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Auth
    description: Authentication via FrontEgg
  - name: Customers
    description: Customer management and KYC
  - name: Customer
  - name: Wallet
  - name: Quote
  - name: Transaction
  - name: CashIns
  - name: CashLocation
  - name: Sandbox
  - name: VirtualAccount
  - name: Counterparty
  - name: ExternalAccount
  - name: Reference
  - name: DepositAddress
paths:
  /virtual-accounts/{virtualAccountId}:
    delete:
      tags:
        - VirtualAccount
      summary: Delete a Virtual Account
      description: >-
        Delete a customer's Virtual Account. Initiates the close flow against

        the underlying Erebor DDA; the VA enters the delete-pending window

        (status remains as-is, `deletionRequestedAt` set) and finalizes to

        `deleted` on the subsequent `DEPOSIT_ACCOUNT.CLOSED` webhook.


        Returns `503 virtualAccountCloseUnavailable` when the underlying Erebor

        close primitive is not yet available for this account — the VA is not

        deleted and remains active/deletable, and the request can be retried
        later.
      operationId: deleteVirtualAccount
      parameters:
        - name: virtualAccountId
          in: path
          required: true
          description: Virtual Account ID (`va_` prefix).
          schema:
            type: string
      responses:
        '204':
          description: >-
            There is no content to send for this request, but the headers may be
            useful. 
        '503':
          description: |-
            Returned by `DELETE /virtual-accounts/{virtualAccountId}` when the
            underlying Erebor account-close primitive is not yet available. The
            `Retry-After` header gives the seconds the caller should wait before
            retrying; the virtual account is not deleted and remains active (no
            delete-pending marker persists).
          headers:
            retry-after:
              required: true
              description: Seconds until a retry may succeed.
              schema:
                type: integer
                format: int32
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualAccountCloseUnavailableErrorBody'
components:
  schemas:
    VirtualAccountCloseUnavailableErrorBody:
      type: object
      required:
        - error
        - code
      properties:
        error:
          type: string
          enum:
            - Account closure is not yet available at the provider; retry later.
          description: >-
            Human-readable error identifier. Stable string — partners branch on
            it.
        code:
          type: string
          enum:
            - virtualAccountCloseUnavailable
          description: Machine-readable code.
      description: >-
        Body of the 503 returned when Erebor's account-close primitive itself is

        not yet enabled for this DDA — not a rejection of this particular delete

        request. The VA is not deleted and remains active/deletable — no

        delete-pending marker persists — so the partner can safely retry once
        the

        primitive is available upstream. Retires the misleading `502` framing
        from

        bug #1653.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token from POST /auth/token

````