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

# Create virtual account

> The endpoint registers a [virtual account](/glossary#virtual-account) for bank transfer deposits with the `SEPA_BCB_GROUP` [provider](/glossary#provider). A [fiat deposit](/api-reference/account-wallet/create-fiat-deposit) through `SEPA_BCB_GROUP` requires an active virtual account.

Registration is asynchronous. The endpoint returns `pending`, and the provider allocates the account afterward. Poll [Get virtual account status](/api-reference/account-wallet/get-virtual-account-status) until `status` is `active`.

The request carries no identity data. WhiteBIT builds the account holder details from the [KYC](/glossary#kyc) data and profile of the account. Before registering, complete KYC verification and set the billing name, billing address, or tax ID in the account profile.

An account with a `pending` or `active` virtual account cannot register another one. After the status changes to `rejected` or `closed`, the account can register again.

Two settings control access to the endpoint:
- **Endpoint access.** Enable the endpoint in the [API key settings](/api-reference/authentication#setting-up-api-keys).
- **Provider access.** WhiteBIT support enables API deposits for each provider on the account. Without provider access, the endpoint returns `403`.

<Warning>
Rate limit: 1000 requests/10 sec.
</Warning>

<Note>
The API does not cache the response.
</Note>


POST

Copy URL

Copy URL


## OpenAPI

````yaml openapi/private/main_api_v4.yaml POST /api/v4/main-account/payment/virtual-accounts
openapi: 3.0.3
info:
  title: WhiteBIT Private HTTP API V4
  description: |
    WhiteBIT Private HTTP API V4 for Main balance changes.

    Base URL: https://whitebit.com

    All endpoints return time in Unix-time format.
    All endpoints return either a JSON object or array.
    For receiving responses from API calls please use http method POST.
  version: 4.0.0
  contact:
    name: WhiteBIT Support
    email: support@whitebit.com
    url: https://whitebit.com
servers:
  - url: https://whitebit.com
    description: WhiteBIT Global Server
  - url: https://whitebit.eu
    description: WhiteBIT EU Server
  - url: https://whitebit.tr
    description: WhiteBIT TR Server
  - url: https://whitebit.ge
    description: WhiteBIT GE Server
security:
  - ApiKeyAuth: []
    PayloadAuth: []
    SignatureAuth: []
tags:
  - name: Main Account
    description: Main account balance and operations
  - name: Deposit
    description: Cryptocurrency and fiat deposit operations
  - name: Withdraw
    description: Cryptocurrency and fiat withdrawal operations
  - name: Transfer
    description: Balance transfer operations
  - name: Codes
    description: WhiteBIT codes operations
  - name: Crypto Lending - Fixed
    description: Fixed crypto lending plans
  - name: Crypto Lending - Flex
    description: Flexible crypto lending plans
  - name: Fees
    description: Fee information
  - name: Sub-Account
    description: Sub-account management
  - name: Sub-Account API Keys
    description: Sub-account API key management
  - name: Mining Pool
    description: Mining pool operations
  - name: Credit Line
    description: Credit line information
  - name: JWT
    description: JWT token management
  - name: Travel Rule
    description: Travel Rule compliance endpoints for deposits and withdrawals
paths:
  /api/v4/main-account/payment/virtual-accounts:
    post:
      tags:
        - Deposit
      summary: Create virtual account
      description: >
        The endpoint registers a [virtual account](/glossary#virtual-account)
        for bank transfer deposits with the `SEPA_BCB_GROUP`
        [provider](/glossary#provider). A [fiat
        deposit](/api-reference/account-wallet/create-fiat-deposit) through
        `SEPA_BCB_GROUP` requires an active virtual account.


        Registration is asynchronous. The endpoint returns `pending`, and the
        provider allocates the account afterward. Poll [Get virtual account
        status](/api-reference/account-wallet/get-virtual-account-status) until
        `status` is `active`.


        The request carries no identity data. WhiteBIT builds the account holder
        details from the [KYC](/glossary#kyc) data and profile of the account.
        Before registering, complete KYC verification and set the billing name,
        billing address, or tax ID in the account profile.


        An account with a `pending` or `active` virtual account cannot register
        another one. After the status changes to `rejected` or `closed`, the
        account can register again.


        Two settings control access to the endpoint:

        - **Endpoint access.** Enable the endpoint in the [API key
        settings](/api-reference/authentication#setting-up-api-keys).

        - **Provider access.** WhiteBIT support enables API deposits for each
        provider on the account. Without provider access, the endpoint returns
        `403`.


        <Warning>

        Rate limit: 1000 requests/10 sec.

        </Warning>


        <Note>

        The API does not cache the response.

        </Note>
      operationId: createVirtualAccount
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - ticker
                - provider
                - request
                - nonce
              properties:
                ticker:
                  type: string
                  description: >
                    Base currency [ticker](/glossary#ticker) of the
                    [fiat](/glossary#fiat) currency. Use `EUR`.
                  example: EUR
                provider:
                  type: string
                  description: >
                    [Fiat](/glossary#fiat) [provider](/glossary#provider) that
                    issues the virtual account. Use `SEPA_BCB_GROUP`. Confirm
                    the providers enabled for the account with the [Asset Status
                    endpoint](/api-reference/market-data/asset-status-list).
                  example: SEPA_BCB_GROUP
                request:
                  type: string
                  description: >
                    Request path. See the [authentication
                    guide](/api-reference/authentication) for signature
                    generation details.
                  example: '{{request}}'
                nonce:
                  type: integer
                  description: >
                    A unique identifier for the request. Use a monotonically
                    increasing value such as a Unix timestamp in milliseconds.
                  example: 1594297865000
            example:
              ticker: EUR
              provider: SEPA_BCB_GROUP
              request: '{{request}}'
              nonce: 1594297865000
      responses:
        '200':
          description: Registration accepted
          content:
            application/json:
              schema:
                type: object
                required:
                  - status
                properties:
                  status:
                    type: string
                    enum:
                      - pending
                    description: >-
                      Registration status. The endpoint always returns `pending`
                      on success.
              example:
                status: pending
        '400':
          description: >
            Validation failed. The endpoint also returns `400` when KYC
            verification of the account is incomplete or when the account
            profile has no billing address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FiatDepositError'
              examples:
                requiredFields:
                  summary: Required fields missing
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      ticker:
                        - The ticker field is required.
                      provider:
                        - The provider field is required.
                invalidProvider:
                  summary: Provider not available
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      provider:
                        - The selected provider is invalid.
                providerNotSupported:
                  summary: Provider not supported for the currency
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      provider: Provider is not supported for this currency
                virtualAccountsNotSupported:
                  summary: Provider does not issue virtual accounts
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      provider: Provider does not support virtual accounts
                alreadyExists:
                  summary: Virtual account already exists
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      provider: Virtual account already exists
                inProgress:
                  summary: Registration already in progress
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      provider: Virtual account registration is already in progress
                rejectedByProvider:
                  summary: Provider rejected the registration
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      provider: >-
                        Virtual account registration was rejected by the
                        provider
                categoryRestricted:
                  summary: Currency not available for the account category
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      ticker: Currency is not available for this account category
                notDepositable:
                  summary: Currency not depositable
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      ticker: Currency is not depositable
                registrationFailed:
                  summary: Registration failed on the provider side
                  value:
                    code: 0
                    message: Something went wrong
                    errors:
                      message: Failed to register virtual account
        '403':
          description: >-
            API deposits are not enabled for the provider on the account.
            Contact WhiteBIT support to enable the provider.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FiatDepositError'
              example:
                code: 0
                message: >-
                  You don't have permission to use this endpoint. Please contact
                  support for more details
        '423':
          description: >
            Another registration request from the same account is in progress.
            The endpoint processes registration requests from the same account
            one at a time: a concurrent request waits until the earlier request
            completes and fails with `423` only if the wait period runs out.
            Retry after the earlier request completes.
        '451':
          description: The currency is unavailable for the jurisdiction of the account.
components:
  schemas:
    FiatDepositError:
      type: object
      description: >
        Error response of the fiat deposit and virtual account endpoints.
        Request-rule failures return each `errors` value as an array of
        messages. Business-rule failures return each `errors` value as a single
        message string.
      properties:
        code:
          type: integer
        message:
          type: string
        errors:
          type: object
          additionalProperties:
            oneOf:
              - type: string
              - type: array
                items:
                  type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-TXC-APIKEY
      description: The public WhiteBIT API key.
    PayloadAuth:
      type: apiKey
      in: header
      name: X-TXC-PAYLOAD
      description: Base64-encoded JSON request body.
    SignatureAuth:
      type: apiKey
      in: header
      name: X-TXC-SIGNATURE
      description: >-
        HMAC-SHA512 signature of the payload, hex-encoded. Computed as
        hex(HMAC-SHA512(payload, api_secret)).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.