> ## 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 deposit account; the VA enters the delete-pending window
(status remains as-is, `deletionRequestedAt` set) and finalizes to
`deleted` once the underlying account is closed.



## 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.10
    description: Sandbox
  - url: https://api.polygon.technology/v0.10
    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: Webhook
  - name: CashIns
  - name: CashLocation
  - name: Sandbox
  - name: VirtualAccount
  - name: Counterparty
  - name: ExternalAccount
  - name: DepositAddress
  - name: Simulation
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 deposit account; the VA enters the delete-pending window
        (status remains as-is, `deletionRequestedAt` set) and finalizes to
        `deleted` once the underlying account is closed.
      operationId: deleteVirtualAccount
      parameters:
        - in: path
          name: virtualAccountId
          required: true
          schema:
            type: string
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualAccount'
          description: >-
            The request has been accepted for processing, but processing has not
            yet completed.
components:
  schemas:
    VirtualAccount:
      properties:
        bankDetails:
          allOf:
            - $ref: '#/components/schemas/VirtualAccountBankDetails'
          description: Null until the underlying deposit account is provisioned.
        bankMemo:
          type: string
        createdAt:
          type: string
          format: date-time
        customerId:
          type: string
        deletionRequestedAt:
          description: >-
            Set when DELETE has been requested but the close webhook has not yet
            finalized.
          format: date-time
          type: string
        deletionRequestedBy:
          description: Identity (JWT subject claim) of the caller who invoked DELETE.
          type: string
        destination:
          allOf:
            - $ref: '#/components/schemas/TransactionSide'
          description: Unified side shape.
        failureReason:
          allOf:
            - $ref: '#/components/schemas/VirtualAccountFailureReason'
          description: >-
            Set when status = `failed`; closed enum identifying the failure
            category.
        finalBalance:
          allOf:
            - $ref: '#/components/schemas/AmountObject'
          description: DDA balance snapshot at the moment the VA flipped to `deleted`.
        id:
          type: string
        label:
          type: string
        metadata:
          type: object
          additionalProperties:
            type: string
        object:
          enum:
            - virtualAccount
          type: string
        source:
          $ref: '#/components/schemas/VirtualAccountSource'
        status:
          $ref: '#/components/schemas/VirtualAccountStatus'
        statusReason:
          type: string
        updatedAt:
          type: string
          format: date-time
      type: object
    VirtualAccountBankDetails:
      description: |-
        Dual-rail bank deposit instructions. Both fields are optional so
        future program variants can support only one rail family; at launch
        both are populated.
      properties:
        domestic:
          $ref: '#/components/schemas/DomesticDepositInstruction'
        swift:
          $ref: '#/components/schemas/SwiftDepositInstruction'
      type: object
    TransactionSide:
      description: >-
        The source side of a transaction or quote: a typed instrument carrying
        identity (`party`) and instrument detail. Amounts live only in
        `pricing`.
      discriminator:
        mapping:
          bankCanada:
            $ref: '#/components/schemas/BankCanadaInstrument'
          bankIban:
            $ref: '#/components/schemas/BankIbanInstrument'
          bankUs:
            $ref: '#/components/schemas/BankUsInstrument'
          card:
            $ref: '#/components/schemas/CardInstrument'
          cash:
            $ref: '#/components/schemas/CashInstrument'
          walletExternal:
            $ref: '#/components/schemas/WalletExternalInstrument'
          walletOms:
            $ref: '#/components/schemas/WalletOmsInstrument'
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/WalletOmsInstrument'
        - $ref: '#/components/schemas/WalletExternalInstrument'
        - $ref: '#/components/schemas/BankUsInstrument'
        - $ref: '#/components/schemas/BankIbanInstrument'
        - $ref: '#/components/schemas/BankCanadaInstrument'
        - $ref: '#/components/schemas/CardInstrument'
        - $ref: '#/components/schemas/CashInstrument'
      type: object
    VirtualAccountFailureReason:
      description: >-
        Closed enum stamped by failVA when a VA flips to terminal `failed`
        state.
      enum:
        - provisioningTimeout
        - systemError
        - ereborRejected
        - deletePendingTimeout
      type: string
    AmountObject:
      description: >-
        Single-amount snapshot - value in minor units, plus the currency code
        and

        a human-readable display string. Used wherever the API exposes a
        one-shot

        amount (e.g. virtualAccount.finalBalance), as distinct from balance
        shapes

        with available/pending/reserved components.
      properties:
        currency:
          description: ISO 4217 currency code.
          type: string
        display:
          description: Human-readable rendering (e.g. "12.34 USD").
          type: string
        value:
          allOf:
            - $ref: '#/components/schemas/int64String'
          description: Amount in fiat minor units (e.g. cents).
      required:
        - value
        - currency
        - display
      type: object
    VirtualAccountSource:
      properties:
        asset:
          description: 'Fixed for Alpha: "usd".'
          type: string
        network:
          description: 'Fixed for Alpha: "usBank".'
          type: string
      required:
        - asset
        - network
      type: object
    VirtualAccountStatus:
      enum:
        - pending
        - active
        - frozen
        - closed
        - deleted
        - failed
        - inactiveActionRequired
      type: string
    DomesticDepositInstruction:
      description: |-
        Domestic deposit instruction (ACH, wire, book transfer, future RTP).
        Funds route directly to the OMS bank partner with the customer as
        the beneficiary.
      properties:
        accountNumber:
          description: Account number for the OMS-provisioned account.
          type: string
        accountType:
          description: Always "checking" for OMS-provisioned accounts.
          type: string
        bankAddress:
          description: Address of the OMS bank partner.
          type: string
        bankName:
          description: Name of the OMS bank partner.
          type: string
        beneficiary:
          allOf:
            - $ref: '#/components/schemas/DepositBeneficiary'
          description: Customer as beneficiary on the domestic route.
        network:
          description: Supported domestic payment rails for this account number.
          items:
            $ref: '#/components/schemas/BankDepositNetworkType'
          type: array
        routingNumber:
          description: Routing number for the OMS-provisioned account.
          type: string
      required:
        - bankName
        - bankAddress
        - accountNumber
        - routingNumber
        - accountType
        - beneficiary
        - network
      type: object
    SwiftDepositInstruction:
      description: |-
        SWIFT (international wire) deposit instruction. Funds route via the
        OMS bank partner's correspondent / intermediary bank with the OMS
        bank partner as the beneficiary; the OMS-provisioned account number
        is referenced in the memo so the receiving bank can credit the
        correct customer account.
      properties:
        accountNumber:
          description: >-
            Intermediary bank account number: static across all OMS-provisioned
            virtual accounts in the program.
          type: string
        bankAddress:
          description: Intermediary bank address.
          type: string
        bankName:
          description: Intermediary bank name.
          type: string
        beneficiary:
          allOf:
            - $ref: '#/components/schemas/DepositBeneficiary'
          description: OMS bank partner as beneficiary on the SWIFT route.
        bic:
          description: Intermediary bank BIC / SWIFT code.
          type: string
        memo:
          description: OMS-generated memo of the form `FFC <customerName> <accountNumber>`.
          type: string
      required:
        - bankName
        - bankAddress
        - accountNumber
        - bic
        - beneficiary
        - memo
      type: object
    BankCanadaInstrument:
      description: Canadian bank account instrument.
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/BankCanadaDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - bankCanada
          type: string
      required:
        - type
        - category
        - details
      type: object
    BankIbanInstrument:
      description: IBAN bank account instrument.
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/BankIbanDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - bankIban
          type: string
      required:
        - type
        - category
        - details
      type: object
    BankUsInstrument:
      description: US bank account instrument.
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/BankUsDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - bankUs
          type: string
      required:
        - type
        - category
        - details
      type: object
    CardInstrument:
      description: Card instrument.
      properties:
        category:
          enum:
            - fiatAccount
          type: string
        details:
          $ref: '#/components/schemas/CardDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - card
          type: string
      required:
        - type
        - category
        - details
      type: object
    CashInstrument:
      description: Cash instrument.
      properties:
        category:
          enum:
            - cash
          type: string
        details:
          $ref: '#/components/schemas/CashDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - cash
          type: string
      required:
        - type
        - category
        - details
      type: object
    WalletExternalInstrument:
      description: Externally-custodied crypto wallet instrument.
      properties:
        category:
          enum:
            - crypto
          type: string
        details:
          $ref: '#/components/schemas/WalletExternalDetails'
        party:
          $ref: '#/components/schemas/Party'
        type:
          enum:
            - walletExternal
          type: string
      required:
        - type
        - category
        - details
      type: object
    WalletOmsInstrument:
      description: OMS-custodied crypto wallet instrument.
      properties:
        category:
          enum:
            - crypto
          type: string
        details:
          $ref: '#/components/schemas/WalletOmsDetails'
        party:
          allOf:
            - $ref: '#/components/schemas/Party'
          description: Structured identity of who is on this side.
        type:
          enum:
            - walletOms
          type: string
      required:
        - type
        - category
        - details
      type: object
    int64String:
      description: Wire-safe integer string for fiat amounts within int64 range.
      type: string
      x-go-type: types.Int64String
      x-go-type-import:
        path: github.com/0xPolygon/bpn-api/types
    DepositBeneficiary:
      description: |-
        Beneficiary on a deposit instruction: the entity to which the funds
        are ultimately credited. For SWIFT this is the OMS bank partner;
        for domestic rails this is the customer. Response-only, rendered
        into the developer-facing bankDetails response.
      properties:
        address:
          $ref: '#/components/schemas/VirtualAccountCounterpartyAddress'
        name:
          type: string
      required:
        - name
        - address
      type: object
    BankDepositNetworkType:
      enum:
        - ACH
        - WIRE
        - DOMESTIC_WIRE
        - ALL
      type: string
    BankCanadaDetails:
      description: Canadian bank account instrument details.
      properties:
        accountNumberLast4:
          type: string
        asset:
          enum:
            - usd
            - cad
          type: string
        bankName:
          type: string
        id:
          type: string
        institutionNumber:
          type: string
        memo:
          type: string
        network:
          enum:
            - swift
            - local
          type: string
        transitNumber:
          type: string
      type: object
    Party:
      discriminator:
        mapping:
          customer:
            $ref: '#/components/schemas/PartyCustomer'
          externalRegistered:
            $ref: '#/components/schemas/PartyExternalRegistered'
          externalUnregistered:
            $ref: '#/components/schemas/PartyExternalUnregistered'
          otherCustomer:
            $ref: '#/components/schemas/PartyOtherCustomer'
        propertyName: relationship
      oneOf:
        - $ref: '#/components/schemas/PartyCustomer'
        - $ref: '#/components/schemas/PartyOtherCustomer'
        - $ref: '#/components/schemas/PartyExternalRegistered'
        - $ref: '#/components/schemas/PartyExternalUnregistered'
      type: object
    BankIbanDetails:
      description: IBAN bank account instrument details.
      properties:
        BIC:
          type: string
        asset:
          type: string
        bankAddress:
          $ref: '#/components/schemas/Address'
        countryCode:
          type: string
        ibanLast4:
          type: string
        id:
          type: string
        memo:
          type: string
        network:
          enum:
            - swift
          type: string
      type: object
    BankUsDetails:
      description: US bank account instrument details.
      properties:
        accountNumberLast4:
          type: string
        accountType:
          enum:
            - checking
            - savings
          type: string
        asset:
          enum:
            - usd
          type: string
        bankName:
          type: string
        id:
          type: string
        memo:
          type: string
        network:
          enum:
            - ach
            - achSameDay
            - wire
            - rtp
          type: string
        routingNumber:
          type: string
        secCode:
          allOf:
            - $ref: '#/components/schemas/SecCode'
          description: ACH SEC code. Populated only when network is ach or achSameDay.
      type: object
    CardDetails:
      description: Card instrument details.
      properties:
        asset:
          enum:
            - usd
          type: string
        cardNumberLast4:
          type: string
        cardProvider:
          type: string
        id:
          type: string
        memo:
          type: string
        network:
          enum:
            - card
          type: string
      type: object
    CashDetails:
      description: Cash pickup/drop instrument details.
      properties:
        asset:
          type: string
        cashLocationId:
          type: string
        cashLocationReference:
          type: string
        code:
          type: string
        expiresAt:
          type: string
          format: date-time
        locationAddress:
          type: string
        locationName:
          type: string
      type: object
    WalletExternalDetails:
      description: >-
        WalletExternal instrument details: a crypto wallet held in external
        custody.
      properties:
        asset:
          type: string
        blockchainAddress:
          type: string
        blockchainAsset:
          allOf:
            - $ref: '#/components/schemas/BlockchainAsset'
          description: Resolved on-chain asset identity (protocol/chainId/tokenId).
        custodian:
          type: string
        id:
          type: string
        network:
          type: string
        otherCustodian:
          type: string
        txHash:
          type: string
      type: object
    WalletOmsDetails:
      description: 'WalletOms instrument details: an OMS-custodied crypto wallet.'
      properties:
        asset:
          type: string
        blockchainAddress:
          type: string
        blockchainAsset:
          allOf:
            - $ref: '#/components/schemas/BlockchainAsset'
          description: Resolved on-chain asset identity (protocol/chainId/tokenId).
        custodyType:
          enum:
            - custodial
            - embedded
          type: string
        id:
          description: Internal OMS wallet (acc_ prefix).
          type: string
        network:
          type: string
        txHash:
          type: string
      type: object
    VirtualAccountCounterpartyAddress:
      properties:
        city:
          type: string
        country:
          description: ISO 3166-1 alpha-2.
          type: string
        countryArea:
          description: State / province / region. Required when country = "US".
          type: string
        postalCode:
          type: string
        streetAddress:
          type: string
      required:
        - streetAddress
        - city
        - postalCode
        - country
      type: object
    PartyCustomer:
      description: The owning OMS customer is on this side.
      properties:
        customerId:
          type: string
        entityType:
          $ref: '#/components/schemas/OwnerType'
        relationship:
          enum:
            - customer
          type: string
      required:
        - relationship
        - customerId
      type: object
    PartyExternalRegistered:
      description: A registered counterparty (saved third party) is on this side.
      properties:
        address:
          allOf:
            - $ref: '#/components/schemas/Address'
          nullable: true
          type: object
        counterpartyId:
          type: string
        entityType:
          $ref: '#/components/schemas/OwnerType'
        name:
          nullable: true
          type: string
        relationship:
          enum:
            - externalRegistered
          type: string
      required:
        - relationship
        - counterpartyId
      type: object
    PartyExternalUnregistered:
      description: >-
        An unrecognized external party (no saved record) is on this side. There
        is no

        OMS record behind it, so it carries no entityType.
      properties:
        address:
          allOf:
            - $ref: '#/components/schemas/Address'
          nullable: true
          type: object
        name:
          nullable: true
          type: string
        relationship:
          enum:
            - externalUnregistered
          type: string
      required:
        - relationship
      type: object
    PartyOtherCustomer:
      description: A different OMS customer is on this side.
      properties:
        customerId:
          type: string
        entityType:
          $ref: '#/components/schemas/OwnerType'
        name:
          nullable: true
          type: string
        relationship:
          enum:
            - otherCustomer
          type: string
      required:
        - relationship
        - customerId
      type: object
    Address:
      description: A postal address. country is an ISO 3166-1 alpha-2 country code.
      properties:
        city:
          type: string
        country:
          description: ISO 3166-1 alpha-2
          type: string
        line1:
          type: string
        line2:
          type: string
        state:
          type: string
        zipCode:
          type: string
      type: object
    SecCode:
      description: >-
        ACH SEC code. Populated only when the destination bank network is `ach`
        or `achSameDay`; null otherwise. Server-derived from the destination
        owner's and the source customer's `entityType`.
      enum:
        - ccd
        - ppd
        - web
      type: string
    BlockchainAsset:
      description: >-
        On-chain identity for an asset: the chain it lives on, the wire-level
        protocol (EVM, SVM, Sui), and the token identifier within that chain.
      properties:
        chainId:
          description: >-
            Chain identifier within the protocol (for example, an EVM chain ID
            or a Solana cluster name).
          type: string
        protocol:
          $ref: '#/components/schemas/BlockchainProtocol'
        tokenId:
          description: >-
            Token identifier on the chain (for example, an ERC-20 contract
            address or an SPL mint address). Use the chain's canonical
            representation for the native asset.
          type: string
      required:
        - protocol
        - chainId
        - tokenId
      type: object
    OwnerType:
      enum:
        - individual
        - business
      type: string
    BlockchainProtocol:
      description: >-
        Wire-level protocol family for a chain. `evm` covers Ethereum-compatible
        chains, `svm` covers the Solana virtual machine, and `sui` covers the
        Sui Move VM.
      enum:
        - evm
        - svm
        - sui
      type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token from POST /auth/token

````