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

# Create Virtual Account

> Virtual accounts don't act as independent money storage - they simply channel incoming payments straight to your account. These accounts cannot process outgoing payments or be linked to payment terminals. Since virtual accounts do not serve as containers for funds, there's no need for BVN verification during setup.

## Adding Test Funds

<Info>
  On test mode with your test keys, you can easily add fake funds to the jollof bank account number created for you using our [Funds Simulator App](https://d2i9iv7q8xti2t.cloudfront.net/). Note that this is for NGN and GHS only.

  See the full guide on [Adding Fake Funds For Testing](/expert-desk/simulating-funds).
</Info>


## OpenAPI

````yaml openapi.json POST /virtual-accounts/temporary
openapi: 3.1.0
info:
  title: Spotflow
  description: ''
  license:
    name: MIT
  version: 1.0.0
servers:
  - description: Production server
    url: https://api.spotflow.co/api/v1
security:
  - bearerAuth: []
paths:
  /virtual-accounts/temporary:
    post:
      description: This endpoint is used to create a dynamic account to receive payments.
      operationId: DynamicAccountCreation
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                currency:
                  type: string
                  example: NGN
                  description: >-
                    According, to our currently supported currencies, this is in
                    NGN and GHS.
                accountName:
                  type: string
                  example: Quantum Technologies
                  description: Your desired naming for your account.
                amount:
                  type: number
                  format: int32
                  description: >-
                    Amount should be in the subunit of our supported currency
                    i.e NGN and GHS for now.
                expiresIn:
                  type: number
                  format: int32
                  description: >-
                    This is optional to add. By default, the time it takes for a
                    virtual account to expire is 30 mins. However, you can
                    customize the time to lesser as you desire.
      responses:
        '200':
          description: A JSON array of dynamic account objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DynamicDetailsResponse'
        '400':
          description: Not Found - No subscriptions found for the given plan ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized - Invalid or missing authentication token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
components:
  schemas:
    DynamicDetailsResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: c1fba25a-a36b-479c-b17d-64dbaf3ba32c
        accountNumber:
          type: string
          example: '7706438396'
        accountName:
          type: string
          example: Quantum Technologies
        bankName:
          type: string
          example: Testbank MFB
        mode:
          type: string
          enum:
            - live
            - test
          example: live
        lifeCycle:
          type: string
          example: temporary
    Error400:
      type: object
      properties:
        error:
          type: string
          example: Missing Parameter
        message:
          type: string
          example: missing_parameter
        status:
          type: integer
          format: float
          example: 400
    Error401:
      type: object
      properties:
        error:
          type: string
          example: Unauthorized
        message:
          type: string
          example: invalid_credentials
        status:
          type: integer
          format: float
          example: 401
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````