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

# List virtual accounts

> List the virtual accounts under your account.

The rows arrive in `data`. Alongside them, `pagination` reports the `total` number of accounts matching your filters, plus the `limit` and `offset` applied to this page.

Use the query parameters to narrow the list — by `status`, `user_id`, `type`, `mode`, free text, or `metadata` — and `limit` and `offset` to page through it.



## OpenAPI

````yaml /openapi/kira-api.2026-04-14.json get /v1/virtual-accounts
openapi: 3.1.0
info:
  title: Kira API
  version: '2026-04-14'
  description: >-
    REST API for users, KYC/KYB verification, virtual accounts, payouts,
    recipients, and webhooks. Every request requires an `x-api-key` header and a
    bearer access token (see Authentication). Pin your account to version
    `2026-04-14` before integrating.
  contact:
    name: Kira API Support
    email: support@kirafin.ai
servers:
  - url: https://api.balampay.com
    description: Production
  - url: https://api.balampay.com/sandbox
    description: Sandbox
security:
  - bearerAuth: []
    apiKeyAuth: []
tags:
  - name: Authentication
  - name: Versioning
  - name: Users
  - name: Virtual Accounts
  - name: Recipients
  - name: Quotations
  - name: Payouts
  - name: Reference
paths:
  /v1/virtual-accounts:
    get:
      tags:
        - Virtual Accounts
      summary: List virtual accounts
      description: >-
        List the virtual accounts under your account.


        The rows arrive in `data`. Alongside them, `pagination` reports the
        `total` number of accounts matching your filters, plus the `limit` and
        `offset` applied to this page.


        Use the query parameters to narrow the list — by `status`, `user_id`,
        `type`, `mode`, free text, or `metadata` — and `limit` and `offset` to
        page through it.
      operationId: get_v1-virtual-accounts
      parameters:
        - in: header
          name: X-Api-Version
          required: false
          description: >-
            Version applied to this request. It wins over your account's pinned
            version — see [Versioning](/using-the-api/versioning).
          schema:
            type: string
            example: '2026-04-14'
        - in: query
          name: limit
          required: false
          description: >-
            How many accounts to return. Between `1` and `100`, and `10` when
            you omit it.


            A value outside that range is rejected with a `400`.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
        - in: query
          name: offset
          required: false
          description: >-
            How many accounts to skip before the first row returned. Use it with
            `limit` to walk the list: `offset=0`, then `offset=10`, and so on.
            `0` when you omit it.
          schema:
            type: integer
            minimum: 0
            default: 0
        - in: query
          name: status
          required: false
          description: >-
            Filter by account status.


            Available options: `pending`, `activating`, `active`, `failed`,
            `deactivated`.


            These are not the values you get back on each row — see `status` in
            the response.


            See [Virtual account
            values](/reference/virtual-accounts/values#status) for what each one
            means.
          schema:
            type: string
        - in: query
          name: user_id
          required: false
          description: Return only the accounts owned by this user.
          schema:
            type: string
            format: uuid
        - in: query
          name: type
          required: false
          description: |-
            Filter by account type.

            Available options: `US_BANK`.
          schema:
            type: string
        - in: query
          name: mode
          required: false
          description: >-
            Filter by what happens to a deposit.


            Available options: `fiat`, `crypto`.


            See [Virtual account
            values](/reference/virtual-accounts/values#mode) for what each one
            means.
          schema:
            type: string
        - in: query
          name: search
          required: false
          description: Free-text search over the account. Between 1 and 255 characters.
          schema:
            type: string
            minLength: 1
            maxLength: 255
        - in: query
          name: metadata
          required: false
          description: >-
            Return only the accounts carrying the metadata you name, in the
            `?metadata[key]=value` form. Pass more than one key to require all
            of them.


            Each key is 1 to 40 characters and cannot contain `[` or `]`.
          style: deepObject
          explode: true
          schema:
            type: object
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/VirtualAccountListItem'
                  pagination:
                    type: object
                    properties:
                      total:
                        type: integer
                        description: Total number of accounts matching the filters.
                      limit:
                        type: integer
                        description: The limit applied to this page.
                      offset:
                        type: integer
                        description: The offset applied to this page.
                      has_more:
                        type: boolean
                        description: Whether more accounts exist beyond this page.
              example:
                data:
                  - id: 11111111-2222-3333-4444-555555555555
                    user_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                    status: approved
                    type: US_BANK
                    bank: austin_capital_trust
                    mode: fiat
                    destination: null
                    source_deposit_instructions:
                      currency: usd
                      bank_name: Example Bank National Association
                      bank_address: 1 Second Street South, St. Cloud, MN, 56301
                      bank_account_number: '1000000001'
                      bank_routing_number: '000000001'
                      bank_beneficiary_name: Northwind Trading LLC
                      bank_beneficiary_address: 1 Market Street, San Francisco, CA, 94105
                    payment_methods:
                      inbound:
                        - name: WIRE
                          status: active
                        - name: ACH
                          status: active
                      outbound:
                        - name: WIRE
                          status: active
                        - name: ACH
                          status: active
                    methods:
                      inbound:
                        - name: WIRE
                          status: active
                        - name: ACH
                          status: active
                      outbound:
                        - name: WIRE
                          status: active
                        - name: ACH
                          status: active
                    account_holder_name: Northwind Trading LLC
                    account_number: '1000000001'
                    routing_number: '000000001'
                    bank_name: Example Bank National Association
                    bank_address: 1 Second Street South, St. Cloud, MN, 56301
                    account_holder_address: 1 Market Street, San Francisco, CA, 94105
                    description: Operating account
                    created_at: '2026-09-01T12:00:00.000Z'
                    updated_at: '2026-09-01T12:04:00.000Z'
                    metadata: {}
                  - id: 66666666-7777-8888-9999-aaaaaaaaaaaa
                    user_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                    status: approved
                    type: US_BANK
                    bank: null
                    mode: crypto
                    destination:
                      currency: USDC
                      network: polygon
                      address: '0x0000000000000000000000000000000000000001'
                    source_deposit_instructions: null
                    payment_methods:
                      inbound:
                        - name: WIRE
                          status: active
                        - name: ACH
                          status: active
                      outbound:
                        - name: WIRE
                          status: active
                        - name: ACH
                          status: disabled
                    methods:
                      inbound:
                        - name: WIRE
                          status: active
                        - name: ACH
                          status: active
                      outbound:
                        - name: WIRE
                          status: active
                        - name: ACH
                          status: disabled
                    created_at: '2026-09-02T09:30:00.000Z'
                    updated_at: '2026-09-02T09:30:00.000Z'
                    metadata:
                      ledger_ref: op-4471
                pagination:
                  total: 53
                  limit: 10
                  offset: 0
                  has_more: true
        '400':
          description: >-
            A query parameter is out of range, or is not one of the values it
            accepts. `errors` names each one.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Always `validation_error`.
                  message:
                    type: string
                    description: Always `Invalid query parameters`.
                  errors:
                    type: array
                    description: One entry per parameter that was rejected.
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                          description: The parameter that was rejected — `limit`.
                        message:
                          type: string
                          description: What is wrong with it.
              example:
                code: validation_error
                message: Invalid query parameters
                errors:
                  - field: limit
                    message: Number must be less than or equal to 100
        '403':
          description: >-
            Your request was turned away before it reached the API. The message
            talks about routing, but any of these causes it:


            - The `x-api-key` header is missing or wrong.

            - Your bearer token has expired. Get a new one from [Get access
            token](/api-reference/authentication/get-access-token).

            - The path or the HTTP method does not match. In sandbox, check that
            the path sits under the `/sandbox` prefix.


            A missing `Authorization` header comes back as a `401` with the same
            body.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: invalid_request
                message: >-
                  The request could not be matched to a valid route, or was
                  malformed. Verify the path and HTTP method against the API
                  reference. This is a routing or request error, not a
                  credentials or signature problem.
      security:
        - bearerAuth: []
          apiKeyAuth: []
      servers:
        - url: https://api.balampay.com/sandbox
          description: Sandbox
        - url: https://api.balampay.com
          description: Production
components:
  schemas:
    VirtualAccountListItem:
      type: object
      description: >-
        One row of the list. The six flat bank fields repeat what
        `source_deposit_instructions` holds: absent when it is `null`, and
        `null` where it holds an empty value.
      properties:
        id:
          type: string
          format: uuid
          description: Virtual account UUID.
        user_id:
          type: string
          format: uuid
          description: UUID of the user that owns the account.
        status:
          type: string
          description: >-
            Where the account is in its lifecycle — see [Virtual account
            values](/reference/virtual-accounts/values#status). Available
            options: `approved`, `rfi`, `declined`, `deactivated`.
        type:
          type: string
          enum:
            - US_BANK
          description: Account type.
        bank:
          type:
            - string
            - 'null'
          description: >-
            Which bank the account runs on, and with it the rail. `null` while
            the bank is still opening it.


            See [Virtual account
            values](/reference/virtual-accounts/values#bank) for the values.
        mode:
          type: string
          description: >-
            What happens to a deposit. `fiat` keeps it as a USD balance,
            `crypto` converts it and sends it to `destination`. Set when the
            account is created and never changes.


            See [Virtual account
            values](/reference/virtual-accounts/values#mode).
        destination:
          type:
            - object
            - 'null'
          description: >-
            Where a `crypto`-mode deposit is sent. `null` on a `fiat`-mode
            account.
          properties:
            currency:
              type: string
              description: >-
                Token the deposit is converted to.


                Available options: `USDC`, `USDT`. See [Virtual account
                values](/reference/virtual-accounts/values#destination-currency).
            network:
              type: string
              description: >-
                Chain the token is sent on.


                Available options: `polygon`, `solana`, `tron`. See [Virtual
                account
                values](/reference/virtual-accounts/values#destination-network).
            address:
              type: string
              description: Wallet address the token is sent to.
        source_deposit_instructions:
          type:
            - object
            - 'null'
          description: >-
            The bank details a payer uses to send money to this account. `null`
            until the bank assigns them.
          properties:
            currency:
              type: string
              description: Currency the account takes. Always `usd`.
            bank_name:
              type: string
              description: Name of the bank holding the account.
            bank_address:
              type: string
              description: Postal address of that bank.
            bank_account_number:
              type: string
              description: Account number the payer sends to.
            bank_routing_number:
              type: string
              description: Routing number the payer sends to.
            bank_beneficiary_name:
              type: string
              description: Name the payment must be made out to.
            bank_beneficiary_address:
              type: string
              description: Postal address of that beneficiary.
        payment_methods:
          type:
            - object
            - 'null'
          description: Which rails the account takes money on and pays out on.
          properties:
            inbound:
              type:
                - array
                - 'null'
              items:
                $ref: '#/components/schemas/PaymentMethod'
              description: Rails you can receive a deposit on, such as `WIRE` or `ACH`.
            outbound:
              type:
                - array
                - 'null'
              items:
                $ref: '#/components/schemas/PaymentMethod'
              description: Rails you can pay out on.
        methods:
          type:
            - object
            - 'null'
          description: The same value as `payment_methods`.
          properties:
            inbound:
              type:
                - array
                - 'null'
              items:
                $ref: '#/components/schemas/PaymentMethod'
              description: The same value as `payment_methods.inbound`.
            outbound:
              type:
                - array
                - 'null'
              items:
                $ref: '#/components/schemas/PaymentMethod'
              description: The same value as `payment_methods.outbound`.
        account_holder_name:
          type:
            - string
            - 'null'
          description: Name the payment must be made out to.
        account_number:
          type:
            - string
            - 'null'
          description: Account number the payer sends to.
        routing_number:
          type:
            - string
            - 'null'
          description: Routing number the payer sends to.
        bank_name:
          type:
            - string
            - 'null'
          description: Name of the bank holding the account.
        bank_address:
          type:
            - string
            - 'null'
          description: Postal address of that bank.
        account_holder_address:
          type:
            - string
            - 'null'
          description: Postal address of the beneficiary.
        description:
          type: string
          description: >-
            Label you set when you created the account. Absent when you set
            none.
        status_reason:
          type: string
          description: >-
            Why the account is in its current status. Absent when there is
            nothing to report.
        created_at:
          type: string
          description: When the account was created, as an ISO 8601 timestamp.
        updated_at:
          type: string
          description: When the account last changed, as an ISO 8601 timestamp.
        metadata:
          type: object
          description: >-
            Key/value pairs you attached to the account. `{}` when you attached
            none.
          additionalProperties: true
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        statusCode:
          type: number
        error:
          type: string
        timestamp:
          type: string
        path:
          type: string
        details: {}
      required:
        - message
    PaymentMethod:
      type: object
      description: One rail on a virtual account.
      properties:
        name:
          type: string
          description: Rail name, such as `WIRE` or `ACH`.
        status:
          type: string
          description: >-
            Whether the rail can be used right now.


            Available options: `active`, `disabled`. See [Virtual account
            values](/reference/virtual-accounts/values#payment_methods-status).
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        The `data.access_token` value from [Get access
        token](/api-reference/authentication/get-access-token).
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key issued by Kira.

````