---
title: "PUT /api/v1/customers/{customerId}/virtual-accounts/{virtualAccountId}/destination"
method: PUT
path: "/api/v1/customers/{customerId}/virtual-accounts/{virtualAccountId}/destination"
tags: ["Virtual Accounts"]
---

# PUT /api/v1/customers/{customerId}/virtual-accounts/{virtualAccountId}/destination

`PUT /api/v1/customers/{customerId}/virtual-accounts/{virtualAccountId}/destination`

Create or replace the active destination for a virtual account

## Path parameters

- `customerId` string, uuid, required — Customer UUID
- `virtualAccountId` string, uuid, required

## Headers

- `idempotency-key` string, uuid, required — Required for mutating calls. Use a V4 UUID. The server stores the first result for 24h and returns it on subsequent retries with the same key.

## Request body

- object
  - `currency` 'usdc' | 'usdt' | 'dai' | 'pyusd' | 'eurc', required
  - `payment_rail` 'arbitrum' | 'avalanche_c_chain' | 'base' | 'celo' | 'ethereum' | 'optimism' | 'polygon' | 'solana' | 'stellar' | 'tron', required
  - `address` string, required
  - `memo` string

## Response `200`

Default Response

- VirtualAccountResponse
  - `id` string, uuid, required
  - `status` 'activated' | 'deactivated' | 'pending' | 'closed', required
  - `customer_id` string, uuid, required
  - `developer_fee_percent` string
  - `created_at` string, date-time, required
  - `source_deposit_instructions` object, required
    - `currency` string, required
    - `payment_rails` string[], required
    - `bank_name` string
    - `bank_address` string
    - `bank_beneficiary_name` string
    - `bank_beneficiary_address` string
    - `bank_account_number` string
    - `bank_routing_number` string
    - `iban` string
    - `bic` string
    - `pix_key` string
    - `clabe` string
    - `account_holder_name` string
    - `pay_id` string
    - `pay_id_name` string
  - `deposit_handling_mode` 'auto_payout' | 'hold' | 'manual', required
  - `workflow_type` 'fiat_to_crypto' | 'fiat_to_fiat', required
  - `destination` object, nullable, required
    - `currency` 'usdc' | 'usdt' | 'dai' | 'pyusd' | 'eurc', required
    - `payment_rail` 'arbitrum' | 'avalanche_c_chain' | 'base' | 'celo' | 'ethereum' | 'optimism' | 'polygon' | 'solana' | 'stellar' | 'tron', required
    - `address` string, required
    - `memo` string
  - `fiat_destination` object, nullable, required
    - `type` 'bank', required
    - `recipient_type` 'individual' | 'business' — Beneficiary type. individual → account_holder_name is treated as the person's full name; business → treated as the company name. Required for payouts in AED, CAD, EUR, GBP, MXN, USD; optional for other currencies.
    - `date_of_birth` string — Beneficiary date of birth (YYYY-MM-DD). Required when recipient_type is individual for payouts in AED, CAD, EUR, GBP, MXN, USD. Not required for business beneficiaries.
    - `account_holder_name` string, required — Name of the bank account holder (or company name when recipient_type=business)
    - `account_number` string — Bank account number (required if iban is not provided)
    - `iban` string — International Bank Account Number (required if account_number is not provided)
    - `bank_name` string, required — Name of the bank
    - `bank_country` unknown, required
    - `currency` unknown, required
    - `account_type` 'savings' | 'checking' | 'payment' — Type of bank account
    - `branch_name` string — Bank branch name
    - `address` AddressApiOutput
      - `street` string, required
      - `city` string, required
      - `state` string, required
      - `postal_code` string, required
      - `country` string, required — Country code (ISO 3166-1 alpha-2, lowercase)
    - `swift_code` string — SWIFT Code
    - `bic_code` string — Bank Identifier Code (BIC)
    - `ifsc_code` string — IFS Code (India)
    - `aba_code` string — ABA / Routing Number (US)
    - `sort_code` string — SORT Code (UK)
    - `branch_code` string — Branch Code
    - `bsb_code` string — BSB Code (Australia)
    - `bank_code` string — Bank Code
    - `cnaps` string — CNAPS (China)
    - `name_in_local_language` string — Account holder name in local language (e.g. Chinese characters for CNY)
    - `national_identification_number` string — National identification number of the account holder
    - `logistics_tracking_details` object[] — Logistics tracking details (required for CNY local payouts)
      - `tracking_number` string — Logistics tracking number
      - `logistics_provider` object
        - `name` string — Logistics provider name
        - `code` string — Logistics provider code
    - `documents` object[] — Supporting documents for the payout (e.g. invoice, contract)
      - `type` 'invoice' | 'contract' | 'other', required — Document type
      - `base64_url` string, required — Base64 data URI of the document (e.g. data:application/pdf;base64,...)
  - `held_balance` object, nullable, required
    - `amount` string, required
    - `currency` string, required
  - `deposit_stats` object
    - `total_deposit_count` integer, required
    - `total_deposit_amount` string, required
    - `last_deposit_at` string, date-time, nullable, required
  - `metadata` object, nullable

## Other responses

- `404` — Default Response

---

[API](https://skmtc.net/stables/apis/stables-api.md) · [All operations](https://skmtc.net/stables/apis/stables-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/stables/stables-api/revisions/40ed0bdb89e1/schema)
