---
title: "Update a Virtual Account"
method: PATCH
path: "/virtual-accounts/{virtualAccountId}"
tags: ["VirtualAccount"]
---

# Update a Virtual Account

`PATCH /virtual-accounts/{virtualAccountId}`

Update a Virtual Account. Patchable fields: `destination` (re-point),
`sponsorGas`, `label`, `metadata`; any other JSON key is rejected with
400. Re-pointing `destination` to a healthy External Account recovers a
VA from `inactiveActionRequired` back to `active`.

## Path parameters

- `virtualAccountId` string, required

## Request body

- VirtualAccountUpdateRequest — Partial update payload for a Virtual Account. The patchable fields are `destination` (re-point to a different walletExternal / walletOms target), `sponsorGas`, `label`, and `metadata`. Any additional key in the JSON body is rejected with 400 by the handler (strict whitelist). Re-pointing `destination` to a healthy External Account recovers a VA from `inactiveActionRequired` back to `active`; a re-point on an already `active` VA updates the target without a status transition.
  - `destination` union — V0.10 Virtual Account destination - a registered OMS or external wallet, on the shared discriminated side shape. `walletOms` funds from an OMS wallet (wlt_/acc_ id); `walletExternal` delivers to a registered External Account (ext_ id). The server validates the side `details` (asset/network) against the resolved EA.
    - object — Pull from / deliver to an OMS Multi-Chain Wallet owned by the customer.
      - `type` 'walletOms', required — Type discriminator.
      - `details` WalletOmsSideDetails, required
        - `id` string, required — OMS wallet ID (wlt_ prefix).
        - `asset` string, required — Crypto asset. One of: usdc, usdt.
        - `network` string, required — Network identifier.
      - `amount` string — Wire-safe decimal string for financial float values (USD amounts, percentages).
    - object — Deliver to a wallet held outside OMS, by registered ExternalAccount only (id-only; raw addresses are not accepted). Used by Virtual Account destinations; the raw-address `WalletExternalSideRequest` stays quote/transaction-only.
      - `type` 'walletExternal', required — Type discriminator.
      - `details` WalletExternalRegisteredSideDetails, required
        - `id` string, required — Registered ExternalAccount ID (ext_wlt_ prefix). Required.
        - `asset` string, required — Crypto asset. One of: usdc, usdt.
        - `network` string, required — Network identifier.
      - `amount` string — Wire-safe decimal string for financial float values (USD amounts, percentages).
  - `sponsorGas` boolean — When `true`, OMS absorbs the on-chain gas cost for the destination delivery. Only `true` is currently supported; accepted for forward-compatibility.
  - `label` string — Partner display label.
  - `metadata` object — Free-form key-value pairs stored on the resource and echoed back on reads.

## Response `200`

The request has succeeded.

- VirtualAccount — A dedicated bank account number issued for a customer. Inbound fiat deposits are automatically converted and delivered to the configured destination, creating a transaction per deposit.
  - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
  - `object` 'virtualAccount' — Resource type discriminator. Always "virtualAccount".
  - `customerId` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
  - `status` 'pending' | 'active' | 'frozen' | 'closed' | 'deleted' | 'failed' | 'inactiveActionRequired' — Lifecycle of a Virtual Account. pending: awaiting bank provisioning. active: accepting deposits. frozen: deposits held by compliance. inactiveActionRequired: destination unusable - re-point `destination` to recover. closed: permanently disabled. deleted: close flow finalized. failed: provisioning failed.
  - `statusReason` string — Human-readable explanation of the current status.
  - `source` VirtualAccountSource — Expected inbound rail for the virtual account: fiat asset and bank network.
    - `asset` string, required — Fixed for Alpha: "usd".
    - `network` string, required — Fixed for Alpha: "usBank".
  - `depositInstructions` VirtualAccountInstructions — Spec-mandated (v0.10/v0.10) VA deposit-instructions wrapper. bankUs holds zero, one, or two routing blocks (domestic + SWIFT), depending on which incoming rails the partner has enabled.
    - `bankUs` BankRoutingBlock[]
      - `supportedSources` AssetNetworkPair[] — Asset/network pairs this routing block accepts deposits for.
        - `asset` string, required
        - `network` string, required
      - `bankName` string, required
      - `bankAddress` string, required
      - `accountNumber` string, required
      - `routingNumber` string, nullable, required — US domestic only; null for SWIFT.
      - `accountType` string, nullable, required — US domestic only; null for SWIFT. Always "checking" when present.
      - `BIC` string, nullable, required — SWIFT only; null for US domestic.
      - `beneficiary` BankRoutingBlockBeneficiary, required — Beneficiary on a bank routing block - the entity to which the funds are ultimately credited. For SWIFT this is the settlement bank; for domestic rails this is the customer. Response-only, system-synthesised (settlement-bank entity or customer counterparty). The address is a single formatted display line, e.g. "6 Acme Way, Bentonville, AR 72712 US".
        - `name` string, required
        - `address` string, required
      - `memo` string, nullable, required — SWIFT only; null for US domestic. OMS-generated: "FFC <customerName> <depositAccountNumber>".
  - `destination` union — The source side of a transaction/quote (v0.10): a typed instrument carrying identity (`party`) and instrument detail. Amounts live only in `pricing`.
    - object — OMS-custodied crypto wallet instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'walletOms', required — Type discriminator.
      - `category` 'crypto', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` WalletOmsDetails, required — WalletOms instrument details: an OMS-custodied crypto wallet.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` string — Canonical asset identifier.
        - `network` string — Network identifier.
        - `blockchainAddress` string — On-chain address.
        - `custodyType` 'custodial' | 'embedded' — How the wallet is held: `custodial` or `embedded`.
        - `txHash` string — On-chain transaction hash.
        - `blockchainAsset` BlockchainAsset
          - `protocol` 'evm' | 'svm' | 'sui', required
          - `chainId` string, required
          - `tokenId` string, required
    - object — Externally-custodied crypto wallet instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'walletExternal', required — Type discriminator.
      - `category` 'crypto', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` WalletExternalDetails, required — WalletExternal instrument details: a crypto wallet held in external custody.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` string — Canonical asset identifier.
        - `network` string — Network identifier.
        - `blockchainAddress` string — On-chain address.
        - `custodian` string — Custodian holding the funds.
        - `otherCustodian` string — Free-text custodian name when `custodian` is `other`.
        - `txHash` string — On-chain transaction hash.
        - `blockchainAsset` BlockchainAsset
          - `protocol` 'evm' | 'svm' | 'sui', required
          - `chainId` string, required
          - `tokenId` string, required
    - object — Fiat balance wallet instrument - a USD balance held at a partner bank (a settlement bank). No network or on-chain address; an internal ledger.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'walletFiat', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` WalletFiatInstrumentDetails, required — WalletFiat instrument details: a fiat balance wallet held at a partner bank (e.g. USD at a settlement bank). No network or on-chain address - an internal ledger balance.
        - `id` string — OMS fiat wallet ID (`wlt_fiat_` prefix). Look up via `GET /wallets`. Plain string, not the `typeId` scalar: `wlt_fiat_` is a two-token prefix, which the single-underscore `typeId` pattern cannot validate. Matches the sibling `WalletFiatSideDetails.id` in quote.tsp.
        - `asset` 'usd' — Fiat currency of the balance. Only `usd` today.
        - `provider` string — Legal entity holding the balance (e.g. "the settlement bank"). Read-only.
    - object — US bank account instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'bankUs', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` BankUsDetails, required — US bank account instrument details.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` 'usd' — Canonical asset identifier.
        - `network` 'ach' | 'achSameDay' | 'wire' | 'rtp' — Network identifier.
        - `secCode` 'ccd' | 'ppd' | 'web' — ACH SEC code. Populated only when the destination bank network is `ach`/`achSameDay`; null otherwise. Server-derived from the destination owner's and the source customer's `entityType`.
        - `accountNumberLast4` string — Last four digits of the account number.
        - `routingNumber` string — US ABA routing number.
        - `bankName` string — Bank display name.
        - `accountType` 'checking' | 'savings' — checking or savings.
        - `memo` string — Payment memo.
    - object — IBAN bank account instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'bankIban', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` BankIbanDetails, required — IBAN bank account instrument details.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` string — Canonical asset identifier.
        - `network` 'swift' — Network identifier.
        - `ibanLast4` string — Last four characters of the IBAN.
        - `BIC` string — SWIFT BIC.
        - `bankAddress` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
          - `line1` string — Street address, line 1.
          - `line2` string — Street address, line 2.
          - `city` string — City.
          - `state` string — State / province / region.
          - `country` string — ISO 3166-1 alpha-2
          - `zipCode` string — ZIP / postal code.
        - `countryCode` string — ISO 3166-1 alpha-2 country code.
        - `memo` string — Payment memo.
    - object — Canadian bank account instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'bankCanada', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` BankCanadaDetails, required — Canadian bank account instrument details.
        - `id` string — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - `asset` 'usd' | 'cad' — Canonical asset identifier.
        - `network` 'swift' | 'local' — Network identifier.
        - `institutionNumber` string — Canadian 3-digit institution number.
        - `transitNumber` string — Canadian 5-digit transit number.
        - `accountNumberLast4` string — Last four digits of the account number.
        - `bankName` string — Bank display name.
        - `memo` string — Payment memo.
    - object — Card instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'card', required — Type discriminator.
      - `category` 'fiatAccount', required — High-level grouping: `fiatAccount` for bank or card accounts, `crypto` for wallets.
      - `details` CardDetails, required — Card instrument details.
        - `id` string — Unique identifier.
        - `asset` 'usd' — Canonical asset identifier.
        - `network` 'card' — Network identifier.
        - `cardNumberLast4` string — Last four digits of the card number.
        - `cardProvider` string — Card network/provider.
        - `memo` string — Payment memo.
    - object — Cash instrument.
      - `party` union
        - object — The owning OMS customer is on this side.
          - `relationship` 'customer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
        - object — A different OMS customer is on this side.
          - `relationship` 'otherCustomer', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `customerId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
        - object — A registered counterparty (saved third party) is on this side.
          - `relationship` 'externalRegistered', required — Relationship discriminator.
          - `entityType` 'individual' | 'business'
          - `counterpartyId` string, required — Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID suffixes are accepted until non-v7 rows are retired.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
        - object — An unrecognized external party (no saved record) is on this side. There is no OMS record behind it, so it carries no entityType.
          - `relationship` 'externalUnregistered', required — Relationship discriminator.
          - `name` string, nullable — Display name.
          - `address` Address — A postal address. country is an ISO 3166-1 alpha-2 country code.
            - `line1` string — Street address, line 1.
            - `line2` string — Street address, line 2.
            - `city` string — City.
            - `state` string — State / province / region.
            - `country` string — ISO 3166-1 alpha-2
            - `zipCode` string — ZIP / postal code.
      - `type` 'cash', required — Type discriminator.
      - `category` 'cash', required — High-level grouping: always `cash` for cash pickups and drops.
      - `details` CashDetails, required — Cash pickup/drop instrument details.
        - `asset` string — Canonical asset identifier.
        - `cashLocationId` string — Cash location ID from `GET /cash-locations`.
        - `cashLocationReference` string — Provider reference for the location, from `GET /cash-locations`.
        - `code` string — Machine-readable code.
        - `expiresAt` string, date-time — Expiration time.
        - `locationName` string — Display name of the retail location.
        - `locationAddress` string — Street address of the retail location.
  - `sponsorGas` boolean — Whether OMS absorbs the on-chain gas cost for the destination delivery. Persisted from the create/update request (currently only `true` is accepted).
  - `bankMemo` string — Wire/ACH memo the customer can include with deposits.
  - `label` string — Partner display label.
  - `metadata` object — Free-form key-value pairs supplied at creation or update.
  - `createdAt` string, date-time — When the virtual account was created.
  - `updatedAt` string, date-time — When the virtual account was last updated.
  - `failureReason` 'provisioningTimeout' | 'systemError' | 'ereborRejected' | 'deletePendingTimeout' — Closed enum stamped by failVA when a VA flips to terminal `failed` state.
  - `deletionRequestedAt` string, date-time — Set when DELETE has been requested but the close webhook has not yet finalized.
  - `deletionRequestedBy` string — Identity (JWT subject claim) of the caller who invoked DELETE.
  - `finalBalance` AmountObject — 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.
    - `value` string, required — Wire-safe integer string for fiat amounts within int64 range.
    - `currency` string, required — ISO 4217 currency code.
    - `display` string, required — Human-readable rendering (e.g. "12.34 USD").

---

[API](https://skmtc.net/polygon-technology/apis/polygon-oms-public-api.md) · [All operations](https://skmtc.net/polygon-technology/apis/polygon-oms-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/polygon-technology/polygon-oms-public-api/revisions/18fdaebf64e5/schema)
