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

# Update a virtual account

> POST /v1/virtual-accounts/{id} - re-point the wallet or change the fee.

<Warning>
  **Not available yet.** This endpoint answers `501 not_implemented`. The banking
  partner integration can open an account and report when it is funded, but cannot
  read one back or amend it, and we will not invent data or pretend the account never
  existed. Keep the details returned by
  [creation](/api-reference/virtual-account-create) until this lands.
</Warning>

Updates a virtual account. Two things can change: the destination wallet and your
fee. The bank details, the rail, and the currency are fixed for the life of the
account - the payer saved them, so they must keep working. To collect on a
different rail or currency, create a new account.

Needs the virtual-accounts permission on your key - see
[Authentication](/api-reference/authentication).

## Request

<ParamField path="id" type="string" required>
  The virtual account id.
</ParamField>

<ParamField body="wallet" type="string">
  A new destination wallet on the same chain. Transfers that arrive after the
  update settle to the new wallet; a transfer already converting when you update
  settles to the wallet that was set when it arrived.
</ParamField>

<ParamField body="feeBps" type="number">
  A new fee in basis points. Applies to money that arrives after the update.
</ParamField>

Send at least one of the two. Fields you omit keep their value.

## Response

The full updated account object, in the same shape
[create](/api-reference/virtual-account-create) returns.

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "$RHEON_API/v1/virtual-accounts/va_8f2c91d0a4" \
    -H "Authorization: Bearer $RHEON_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "wallet": "0x3333333333333333333333333333333333333333",
      "feeBps": 50
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "va_8f2c91d0a4",
    "wallet": "0x3333333333333333333333333333333333333333",
    "chain": "arbitrum",
    "asset": "USDC",
    "rail": "sepa",
    "currency": "EUR",
    "reference": "user-84921",
    "details": {
      "iban": "IE25XXXX99035504017602",
      "bankName": "Example Bank",
      "swiftCode": "EXAMPIE2XXX",
      "accountName": "Rheon Payments"
    },
    "feeBps": 50,
    "active": true,
    "createdAt": "2026-08-31T10:00:00Z"
  }
  ```
</ResponseExample>

## Errors

| HTTP | `code`              | When                                                     |
| ---- | ------------------- | -------------------------------------------------------- |
| 400  | `invalid_request`   | Neither field sent, or a field is malformed.             |
| 401  | `unauthorized`      | Missing, malformed, or unknown API key.                  |
| 403  | `permission_denied` | Your key does not carry the virtual-accounts permission. |
| 404  | `not_found`         | No account with that id on your key.                     |
| 429  | `rate_limited`      | Over your key's rate limit.                              |
| 502  | `upstream_error`    | The banking partner is unavailable.                      |
| 500  | `internal`          | Unexpected server error.                                 |
