Update a Virtual Account
Update a Virtual Account. Patchable fields: destination (re-point), sponsorGas, label, metadata; any other JSON key is rejected with 400. For an Erebor-vendored VA, re-pointing destination to a healthy External Account recovers it from inactiveActionRequired back to active. A Coinme-vendored VA has no PATCH-time recovery story: it only accepts a re-point while already active, and rejects anything else.
CustodialWalletUnavailableErrorResponse (10304) is declared here, not just on createVirtualAccount, because a walletCrypto re-point resolves the destination through the SAME resolver the create path uses. That resolver writes 10304 directly, so a walletCrypto PATCH re-point can surface it too.
Authorizations
Token from POST /auth/token
Path Parameters
Virtual Account ID (va_ prefix).
Body
Partial update payload for a Virtual Account. The patchable fields are destination (re-point to a different walletExternal or bank target), returnDestination (re-point or clear the fiat return destination), 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.
Re-point the VA destination (walletExternal by registered EA id, a bank EA, or a walletFiat fiat wallet — same kind as the current destination: a cross-kind switch involving walletFiat is rejected with 422 DestinationTypeSwitchNotSupported). Re-validated exactly like create; walletCrypto is NOT currently supported — 422 destinationWalletCryptoNotSupported.
- US bank account
- IBAN bank account
- Canadian bank account
- OMS wallet
- External wallet (registered)
- Fiat wallet
Re-point or clear the fiat return destination. Re-validated exactly like create; an explicit null in the JSON body clears a previously set return destination.
- US bank account
- IBAN bank account
- Canadian bank account
- Fiat wallet
When true, OMS absorbs the on-chain gas cost for the destination delivery. Only true is currently supported; accepted for forward-compatibility.
Partner display label.
Free-form key-value pairs stored on the resource and echoed back on reads.
Response
The request has succeeded.
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.
The customer that owns this record.
Virtual Account ID (va_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Current lifecycle status of the virtual account.
pending, active, frozen, closed, deleted, failed, inactiveActionRequired, deleting Why the virtual account failed. Present only when status is failed.
What you must do for a virtual account in inactiveActionRequired: set a new destination. Present only in that status.
Bank coordinates senders use to deposit into this Virtual Account. Left out until the provider has opened the account, so a pending Virtual Account carries none. Still present while it is deleting, and left out again once the account has ended, since a closed, failed or deleted Virtual Account can no longer receive a deposit. Capture it while the account is live if you need it for your own records.
The institution that issues and custodies this Virtual Account — currently "Erebor Bank, N.A." or "Cross River Bank". Assigned by OMS from your project's configuration, never supplied by you. Read it when you need to tell an end user or a support ticket which institution is holding the deposited funds. It is not the name a payout is sent under, which is the payout transfer's originatorName and can name a different company. New providers may be added, so treat the string as free-form rather than a fixed set. Read-only; omitted when OMS cannot determine the institution.
The account deposits are paid out to. A bank account carries no rail and no ACH options; they are on payout.
- OMS wallet
- External wallet
- Fiat wallet
- US bank account
- IBAN bank account
- Canadian bank account
How a deposit is paid out to a bank or walletFiat destination: the rail and, on ach and achSameDay, the ACH options. Left out for a crypto destination.
Whose name a payout from this Virtual Account goes out under. Left out for a walletFiat destination or none.
Where inbound fiat is sent back when its payout cannot be completed. It carries no rail; a bank return destination's rail is on returnPayout. Present only when you set one.
- US bank account
- IBAN bank account
- Canadian bank account
- Fiat wallet
How a deposit is returned to a bank returnDestination: only the rail. Left out with no return destination.
Whether OMS absorbs the on-chain gas cost for the destination delivery. Present only when true, the only value a create or update request accepts.
Wire/ACH memo the customer can include with deposits.
Partner display label.
Free-form key-value pairs supplied at creation or update.
When the virtual account was created.
When the virtual account was last updated.
When a delete was accepted. Present only after a delete.