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

# List virtual accounts

> Where a payer sends fiat to fund your balance in this asset: the bank account Jenzy holds for you, and where the asset has one, the mobile-money paybill. Read-only — Jenzy enables collections in an asset for you; ask if the list is empty. Bank pay-ins carry no payer identity, so tell your payer to keep their own record of what they sent.



## OpenAPI

````yaml /v2/openapi.json get /virtual-accounts
openapi: 3.1.0
info:
  title: Jenzy Hermes Multi-asset API
  version: 2.0.0
  description: >-
    Hold, convert and pay out across the assets enabled for your organization.
    Every amount is an exact decimal string beside an `asset` field.
    Authenticate with the same `jz_live_…` API key as `/v1`.
servers:
  - url: https://api.jenzy.com/v2
    description: Production
security: []
paths:
  /virtual-accounts:
    get:
      summary: List virtual accounts
      description: >-
        Where a payer sends fiat to fund your balance in this asset: the bank
        account Jenzy holds for you, and where the asset has one, the
        mobile-money paybill. Read-only — Jenzy enables collections in an asset
        for you; ask if the list is empty. Bank pay-ins carry no payer identity,
        so tell your payer to keep their own record of what they sent.
      parameters:
        - schema:
            type: string
            minLength: 1
            description: >-
              An asset code as `GET /v2/assets` lists it — uppercase, never
              compound (`KES`, `USDT`; never `USDT-TRON`). Network and rail live
              on the payment object.
            example: KES
          required: true
          description: >-
            An asset code as `GET /v2/assets` lists it — uppercase, never
            compound (`KES`, `USDT`; never `USDT-TRON`). Network and rail live
            on the payment object.
          name: asset
          in: query
      responses:
        '200':
          description: Your coordinates in this asset — `active` and `pending` ones.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualAccountList'
        '400':
          description: '`asset` is required.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '401':
          description: Missing, malformed, or revoked API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '403':
          description: >-
            Organization suspended, request IP not on the allowlist, or no
            multi-asset access yet (`onboarding_incomplete` /
            `access_suspended`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: Not an asset enabled for your organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '422':
          description: >-
            A stablecoin has no virtual account (`unsupported_asset`) — use
            `POST /v2/deposit-addresses`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '503':
          description: The `/v2` shutter is closed — check `GET /v2/ping`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    VirtualAccountList:
      type: object
      properties:
        virtual_accounts:
          type: array
          items:
            $ref: '#/components/schemas/VirtualAccount'
      required:
        - virtual_accounts
      description: >-
        Your collection coordinates in one asset. Empty until Jenzy enables
        collections for you in it.
    ErrorEnvelope:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - validation_error
                - unauthorized
                - forbidden
                - not_found
                - conflict
                - rate_limited
                - internal_error
                - unknown_institution
                - invalid_mobile_number
                - invalid_account_number
                - mobile_number_institution_mismatch
                - service_unavailable
                - sandbox_only
                - insufficient_funds
                - rail_disabled
                - amount_limit_exceeded
                - org_limit_exceeded
                - service_incident
                - service_maintenance
                - onboarding_incomplete
                - access_suspended
                - corridor_not_enabled
                - unsupported_pair
                - invalid_wallet_address
                - rate_unavailable
                - quote_expired
                - quote_used
                - limit_exceeded
                - amount_below_minimum
                - unsupported_asset
              description: >-
                Stable identifier a client may branch on — never renamed or
                removed.
            message:
              type: string
          required:
            - code
            - message
      required:
        - error
    VirtualAccount:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: >-
            The virtual account id — what a collection’s
            `source.virtual_account_id` names.
        asset:
          type: string
          minLength: 1
          description: >-
            An asset code as `GET /v2/assets` lists it — uppercase, never
            compound (`KES`, `USDT`; never `USDT-TRON`). Network and rail live
            on the payment object.
          example: KES
        type:
          type: string
          enum:
            - bank
          description: >-
            Always `bank`. A mobile-money paybill payment to this account lands
            on the same coordinate, so it is not a separate row.
        institution:
          type:
            - string
            - 'null'
          description: The bank that holds the account. Null while `status` is `pending`.
          example: Partner Bank
        account_number:
          type:
            - string
            - 'null'
          description: >-
            The account number a payer sends to. Null while `pending`. Bank
            pay-ins carry no payer identity: a collection tells you the money
            landed here, not who sent it.
          example: '0123456789'
        account_name:
          type:
            - string
            - 'null'
          example: Acme Remittances Ltd
        status:
          type: string
          enum:
            - active
            - pending
          description: >-
            `active` — publish the coordinates. `pending` — the account is being
            issued; coordinates are null and appear without a new request.
        paybill_number:
          type: string
          description: >-
            Present only where the asset has a mobile-money paybill. The payer
            selects Pay Bill, enters this business number, and enters
            `account_number` as the account.
          example: '444174'
      required:
        - id
        - asset
        - type
        - institution
        - account_number
        - account_name
        - status
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: 'Your Jenzy API key: `Authorization: Bearer jz_live_…`'

````