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

# List Balances

> Daily account balance browse endpoint for API token integrations. Returns projected balances visible to the authenticated API token, ordered by `date desc, accountId asc`. Balances are mutable: call this endpoint again for the date ranges you care about after transaction syncs. To ingest restatements incrementally, bootstrap normally, then poll with `updatedAtGte`; when `updatedAtGte` is supplied, rows are ordered by `updatedAt asc, accountId asc, date asc`. Follow every page, upsert by `(accountId, date)`, and expect duplicate rows at the saved watermark because the lower bound is inclusive.



## OpenAPI

````yaml /openapi.json get /v1/balances
openapi: 3.1.0
info:
  title: Waycore Bank Connections API
  description: >-
    Developer-first API for direct bank connections, accounts, and transactions.


    Design goals:

    - Flat records with minimal nesting.

    - Clear, bank-centric naming.

    - One canonical endpoint per resource.

    - Sparse fieldsets via `fields=`.

    - Historical browsing via `GET /transactions`.

    - Incremental ETL via `GET /transactions/sync`.

    - Discover supported institutions via `GET /institutions`.

    - Model downstream client businesses via `/entities` and explicit `entityId`
    ownership.


    Authentication:

    - Opaque API keys passed as `Authorization: Bearer <key>`.

    - Key format: `way_<environment>_<key_id>_<secret>`.

    - Keys are organization-bound, environment-bound (`live` or `test`),
    scope-carrying, and expiring.

    - Managed via the Waycore Console.
  version: 0.5.0
servers:
  - url: https://api.waycore.com
security: []
paths:
  /v1/balances:
    get:
      tags:
        - balances
      summary: List Balances
      description: >-
        Daily account balance browse endpoint for API token integrations.
        Returns projected balances visible to the authenticated API token,
        ordered by `date desc, accountId asc`. Balances are mutable: call this
        endpoint again for the date ranges you care about after transaction
        syncs. To ingest restatements incrementally, bootstrap normally, then
        poll with `updatedAtGte`; when `updatedAtGte` is supplied, rows are
        ordered by `updatedAt asc, accountId asc, date asc`. Follow every page,
        upsert by `(accountId, date)`, and expect duplicate rows at the saved
        watermark because the lower bound is inclusive.
      operationId: list_balances_v1_balances_get
      parameters:
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Opaque pagination cursor from a previous `/v1/balances` response.
              Cursors are valid only for the same query filters.
            title: Cursor
          description: >-
            Opaque pagination cursor from a previous `/v1/balances` response.
            Cursors are valid only for the same query filters.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 500
            minimum: 1
            title: Limit
            description: Maximum number of items to return.
            default: 100
          description: Maximum number of items to return.
        - name: dateGte
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date
              - type: 'null'
            description: Return balances with `date` greater than or equal to this date.
            title: Dategte
          description: Return balances with `date` greater than or equal to this date.
        - name: dateLt
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date
              - type: 'null'
            description: Return balances with `date` earlier than this date.
            title: Datelt
          description: Return balances with `date` earlier than this date.
        - name: updatedAtGte
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date-time
              - type: 'null'
            description: >-
              Return balances whose `updatedAt` is greater than or equal to this
              timestamp. When supplied, results are ordered by `updatedAt asc,
              accountId asc, date asc`.
            title: Updatedatgte
          description: >-
            Return balances whose `updatedAt` is greater than or equal to this
            timestamp. When supplied, results are ordered by `updatedAt asc,
            accountId asc, date asc`.
        - name: accountId
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: Filter by account identifier.
            title: Accountid
          description: Filter by account identifier.
        - name: connectionId
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: Filter by parent connection identifier.
            title: Connectionid
          description: Filter by parent connection identifier.
        - name: entityId
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            title: Entityid
            description: Filter by entity identifier.
          description: Filter by entity identifier.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountBalancesListResponse'
        '400':
          description: >-
            Bad Request. `type` may be `invalid_request` for malformed query
            parameters or validation failures, or `invalid_cursor` when a list
            cursor is malformed or does not match the supplied query.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
          description: Forbidden
        '429':
          description: >-
            Too Many Requests. Retry after the number of seconds in
            `Retry-After` when present, then retry the same request.
          headers:
            Retry-After:
              description: >-
                Number of seconds to wait before retrying, when rate limiting
                provides a specific backoff.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
          description: Internal Server Error
      security:
        - apiKeyBearer:
            - accounts:read
components:
  schemas:
    AccountBalancesListResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/AccountBalance'
          type: array
          title: Data
        pagination:
          $ref: '#/components/schemas/app__balances__public__models__Pagination'
        meta:
          $ref: '#/components/schemas/app__balances__public__models__Meta'
      type: object
      required:
        - data
        - pagination
        - meta
      title: AccountBalancesListResponse
    PublicErrorResponse:
      properties:
        type:
          title: Type
          type: string
        message:
          type: string
          title: Message
        requestId:
          anyOf:
            - type: string
            - type: 'null'
          title: Requestid
        details:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Details
      type: object
      required:
        - type
        - message
      title: PublicErrorResponse
    AccountBalance:
      properties:
        accountId:
          type: string
          format: uuid
          title: Accountid
          description: Identifier of the account this balance belongs to.
        connectionId:
          type: string
          format: uuid
          title: Connectionid
          description: Identifier of the parent connection.
        entityId:
          type: string
          format: uuid
          title: Entityid
          description: Identifier of the entity that owns the parent connection.
        date:
          type: string
          format: date
          title: Date
          description: Balance date.
        currency:
          type: string
          pattern: ^[A-Z0-9]{3,12}$
          title: Currency
          description: Balance currency or asset code.
        ledgerBalance:
          type: string
          title: Ledgerbalance
          description: End-of-day posted/current ledger balance.
        postedTransactionDelta:
          type: string
          title: Postedtransactiondelta
          description: >-
            Sum of posted transaction amounts on this date. Positive amounts are
            credits/inflows; negative amounts are debits/outflows. Pending
            transactions are excluded.
        source:
          $ref: '#/components/schemas/AccountBalanceSource'
          description: >-
            `bankProvided` means the balance came from bank data, such as a BAI
            closing balance or a bank-provided running balance. `derived` means
            Waycore computed the balance from an observed balance anchor and
            posted transactions.
        updatedAt:
          type: string
          format: date-time
          title: Updatedat
          description: When the projected public balance row last changed.
      type: object
      required:
        - accountId
        - connectionId
        - entityId
        - date
        - currency
        - ledgerBalance
        - postedTransactionDelta
        - source
        - updatedAt
      title: AccountBalance
    app__balances__public__models__Pagination:
      properties:
        hasMore:
          type: boolean
          title: Hasmore
        nextCursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Nextcursor
          description: >-
            Opaque cursor for the next page. It is null when `hasMore` is false.
            Balances are ordered by `date desc, accountId asc` by default. When
            `updatedAtGte` is supplied, balances are ordered by `updatedAt asc,
            accountId asc, date asc`.
      type: object
      required:
        - hasMore
      title: Pagination
    app__balances__public__models__Meta:
      properties:
        requestId:
          type: string
          title: Requestid
      type: object
      required:
        - requestId
      title: Meta
    AccountBalanceSource:
      type: string
      enum:
        - bankProvided
        - derived
      title: AccountBalanceSource
  securitySchemes:
    apiKeyBearer:
      type: http
      scheme: bearer
      bearerFormat: way_<environment>_<key_id>_<secret>
      description: >-
        Opaque API key passed as `Authorization: Bearer <key>`. Keys are
        organization-bound, environment-bound (`live` or `test`),
        scope-carrying, and expiring. Create and manage keys via the console.

````