> ## 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 account deposits

> List the money that has arrived in one virtual account, newest first.

The rows come back as a plain array, with no count and no page information. Ask for a page with `limit` and `offset`, and when a page comes back short you have reached the end.



## OpenAPI

````yaml /openapi/kira-api.2026-04-14.json get /v1/virtual-accounts/{virtual_account_id}/deposits
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/{virtual_account_id}/deposits:
    get:
      tags:
        - Virtual Accounts
      summary: List virtual account deposits
      description: >-
        List the money that has arrived in one virtual account, newest first.


        The rows come back as a plain array, with no count and no page
        information. Ask for a page with `limit` and `offset`, and when a page
        comes back short you have reached the end.
      operationId: get_v1-virtual-accounts-virtual-account-id-deposits
      parameters:
        - in: path
          name: virtual_account_id
          required: true
          schema:
            type: string
            format: uuid
          description: UUID of the account whose deposits you want.
        - 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 deposits to return, between `1` and `100`, and `10` when
            you omit it.


            Anything outside that range, or anything that is not a number, is
            brought back into it instead of being rejected.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
        - in: query
          name: offset
          required: false
          description: >-
            How many deposits 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
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DepositListItem'
              example:
                - id: 77777777-8888-9999-aaaa-bbbbbbbbbbbb
                  virtual_account_id: 11111111-2222-3333-4444-555555555555
                  amount: '1000.00'
                  currency: USD
                  status: COMPLETED
                  sender:
                    name: Acme Corp
                    account_number: '****6789'
                    address: 123 Market St, San Francisco, CA
                  recipient:
                    name: Alice Smith
                    company_name: Northwind Trading LLC
                    country: USA
                  payment_rail: wire
                  settlement_tx_hash: null
                  source:
                    name: Acme Corp
                    account_number: '****6789'
                    address: 123 Market St, San Francisco, CA
                    payment_rail: wire
                    reference_number: null
                    imad: 20260901MMQFMP3K000123
                    omad: 20260901L1B7HU5R000456
                    trace_number: null
                  fees:
                    base_fees:
                      fixed_fee: '1.50'
                      percentage_fee: '2.00'
                      fx_markup: '0.00'
                    client_markup:
                      fixed_fee: '0.00'
                      percentage_fee: '1.00'
                      fx_markup: '0.00'
                    total_fees: '4.50'
                  net_amount: '995.50'
                  net_currency: USD
                  created_at: '2026-09-01T14:32:00.000Z'
                  updated_at: '2026-09-01T14:35:10.000Z'
                  metadata:
                    invoice_id: INV-2026-0042
        '400':
          description: >-
            `virtual_account_id` is not a UUID. The id is checked before the
            lookup, so a malformed one is a `400` and never a `404`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Always `Invalid request data`.
                  details:
                    type: array
                    description: One entry per rejected value.
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: >-
                            The value that was rejected. The path parameter
                            reports as `id`.
                        message:
                          type: string
                          description: What is wrong with it.
                        code:
                          type: string
                          description: The validation rule that failed.
              example:
                error: Invalid request data
                details:
                  - path: id
                    message: Invalid virtual account ID format
                    code: invalid_string
        '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.
        '404':
          description: >-
            No account of yours has that id. The same body comes back whether
            the id does not exist or the account belongs to another account
            holder, so it never reveals which.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                    description: Repeats the HTTP status.
                  error:
                    type: string
                    description: Always `Not Found`.
                  message:
                    type: string
                    description: Names the id that was not found.
                  timestamp:
                    type: string
                    description: When the call was rejected, as an ISO 8601 timestamp.
              example:
                statusCode: 404
                error: Not Found
                message: Virtual account 11111111-2222-3333-4444-555555555555 not found
                timestamp: '2026-09-01T12:00:00.000Z'
      security:
        - bearerAuth: []
          apiKeyAuth: []
      servers:
        - url: https://api.balampay.com/sandbox
          description: Sandbox
        - url: https://api.balampay.com
          description: Production
components:
  schemas:
    DepositListItem:
      type: object
      description: >-
        One deposit.


        `source` repeats what `sender` holds and adds the rail and its tracking
        numbers. Both are `null` together, when the bank has not told us who
        sent the money.
      properties:
        id:
          type: string
          format: uuid
          description: Deposit UUID.
        virtual_account_id:
          type: string
          format: uuid
          description: UUID of the account the money arrived in.
        amount:
          type: string
          description: How much arrived, before charges, as a decimal string.
        currency:
          type: string
          description: Currency of `amount`.
        status:
          type: string
          description: >-
            Where the deposit has got to — see [Virtual account
            values](/reference/virtual-accounts/values#deposit-status).
            Available options: `PENDING`, `COMPLETED`, `FAILED`, `REFUNDED`,
            `KYT_PENDING`, `KYT_REJECTED`.
        sender:
          type:
            - object
            - 'null'
          description: Who sent the money, as the bank reported it.
          properties:
            name:
              type:
                - string
                - 'null'
              description: Name on the sending account.
            account_number:
              type:
                - string
                - 'null'
              description: Sending account number, usually masked by the bank.
            address:
              type:
                - string
                - 'null'
              description: Address on the sending account.
        recipient:
          type: object
          description: >-
            The user who owns the account the money arrived in. Every field is
            `null` if that user can no longer be read.
          properties:
            name:
              type:
                - string
                - 'null'
              description: The user's full name, joined from the names on record.
            company_name:
              type:
                - string
                - 'null'
              description: The user's registered company name.
            country:
              type:
                - string
                - 'null'
              description: Country on the user's address, as an ISO 3166-1 alpha-3 code.
        payment_rail:
          type:
            - string
            - 'null'
          description: >-
            How the money travelled, such as `wire` or `ach_push`. Mirrors
            `source.payment_rail`.
        settlement_tx_hash:
          type:
            - string
            - 'null'
          description: >-
            On-chain transaction that settled the deposit. `null` on a fiat
            account, and until settlement runs.
        source:
          type:
            - object
            - 'null'
          description: Who sent the money, plus what the rail recorded about the transfer.
          properties:
            name:
              type:
                - string
                - 'null'
              description: Name on the sending account.
            account_number:
              type:
                - string
                - 'null'
              description: Sending account number, usually masked by the bank.
            address:
              type:
                - string
                - 'null'
              description: Address on the sending account.
            payment_rail:
              type:
                - string
                - 'null'
              description: >-
                How the money travelled, such as `wire` or `ach_push`;
                `stablecoin` on a crypto-funded deposit. `null` until the rail
                resolves.


                Not a closed set: a scheme Kira does not recognise arrives
                verbatim, so read it as an open string rather than switching on
                every value.
            reference_number:
              type:
                - string
                - 'null'
              description: Reference the sender attached to the payment.
            imad:
              type:
                - string
                - 'null'
              description: >-
                Input Message Accountability Data — the wire's identifier at the
                sending bank.
            omad:
              type:
                - string
                - 'null'
              description: >-
                Output Message Accountability Data — the same wire's identifier
                at the receiving bank.
            trace_number:
              type:
                - string
                - 'null'
              description: The ACH transfer's trace number.
        fees:
          type: object
          description: >-
            What was charged on this deposit. Every figure is a decimal string,
            and they are all `0.00` when nothing was charged.
          properties:
            base_fees:
              type: object
              description: What Kira charged.
              properties:
                fixed_fee:
                  type: string
                  description: A flat charge, as a decimal string.
                percentage_fee:
                  type: string
                  description: A charge worked out from the amount, as a decimal string.
                fx_markup:
                  type: string
                  description: A currency-conversion charge. An amount, not a rate.
            client_markup:
              type: object
              description: What you added on top, from the account's `markup`.
              properties:
                fixed_fee:
                  type: string
                  description: A flat charge, as a decimal string.
                percentage_fee:
                  type: string
                  description: A charge worked out from the amount, as a decimal string.
                fx_markup:
                  type: string
                  description: A currency-conversion charge. An amount, not a rate.
            total_fees:
              type: string
              description: Everything in `base_fees` and `client_markup` added up.
        net_amount:
          type: string
          description: '`amount` less `total_fees`, as a decimal string. Never below `0.00`.'
        net_currency:
          type: string
          description: Currency of `net_amount`.
        created_at:
          type: string
          description: When the deposit was first recorded, as an ISO 8601 timestamp.
        updated_at:
          type: string
          description: When it last changed, as an ISO 8601 timestamp.
        metadata:
          type: object
          description: Key/value pairs attached to the deposit. `{}` when there are 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
  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.

````