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

# List transactions

> Return a paginated list of individual transactions for the authenticated group, with optional server-side filters on date, creation date, amount, status, payment method, and campaign code. Results are ordered newest-first by default. Maximum limit is 1000.

Unlike `GET /v1/transaction_bundles`, this endpoint filters server-side, so you no longer need to page through every bundle to find a date range.

**Date range:** use `date_from`/`date_to` (transaction date) or `created_from`/`created_to` (record creation). Either bound is optional.

**Amount range:** `amount_min`/`amount_max` in cents.

**Statuses:** repeat `status_id` or comma-separate; IDs come from `GET /v1/transaction_statuses`.

Each transaction includes `contact_id`, so monthly metrics (unique donors, totals) can be computed directly.


## OpenAPI

````yaml /src/autogen/donation-membership-transaction-openapi3.0.yaml get /v1/transactions
openapi: 3.1.0
info:
  description: >-
    This OpenAPI 3.1 specification describes the public API of the Qomon
    platform. It is generated from the code and serves both as documentation for
    API consumers and as a contract for future development.
  title: Qomon API Reference
  version: 0.0.1
servers:
  - description: Production
    url: https://incoming.qomon.app
security:
  - bearerAuth: []
tags:
  - description: >-
      Create, read, update, and delete transaction bundles. A bundle is a single
      payment event grouping one or more transactions with optional donations
      and memberships.
    name: Transaction bundles
  - description: >-
      Read individual transactions (the payment legs of a bundle) with
      server-side filtering by date, amount, status, payment method and
      campaign, plus a contact's full transaction history.
    name: Transactions
  - description: >-
      List donations directly, filtered by donation date, contact, price or
      amount — without fetching whole bundles.
    name: Donations
  - description: >-
      List memberships directly, filtered by start/end/creation date, contact,
      price or amount.
    name: Memberships
  - description: >-
      Read-only configuration resources: transaction settings, statuses,
      donation and membership prices, and code campaigns.
    name: Settings and configuration
paths:
  /v1/transactions:
    get:
      tags:
        - Transactions
      summary: List transactions
      description: >-
        Return a paginated list of individual transactions for the authenticated
        group, with optional server-side filters on date, creation date, amount,
        status, payment method, and campaign code. Results are ordered
        newest-first by default. Maximum limit is 1000.
      operationId: list-transactions
      parameters:
        - description: Maximum number of items to return.
          explode: false
          in: query
          name: limit
          schema:
            default: 20
            description: Maximum number of items to return.
            format: int64
            maximum: 1000
            minimum: 1
            type: integer
        - description: Number of items to skip.
          explode: false
          in: query
          name: offset
          schema:
            default: 0
            description: Number of items to skip.
            format: int64
            minimum: 0
            type: integer
        - description: >-
            Only transactions on or after this date (transaction date, RFC
            3339).
          explode: false
          in: query
          name: date_from
          schema:
            description: >-
              Only transactions on or after this date (transaction date, RFC
              3339).
            format: date-time
            type: string
        - description: >-
            Only transactions on or before this date (transaction date, RFC
            3339).
          explode: false
          in: query
          name: date_to
          schema:
            description: >-
              Only transactions on or before this date (transaction date, RFC
              3339).
            format: date-time
            type: string
        - description: Only transactions created on or after this date (RFC 3339).
          explode: false
          in: query
          name: created_from
          schema:
            description: Only transactions created on or after this date (RFC 3339).
            format: date-time
            type: string
        - description: Only transactions created on or before this date (RFC 3339).
          explode: false
          in: query
          name: created_to
          schema:
            description: Only transactions created on or before this date (RFC 3339).
            format: date-time
            type: string
        - description: Minimum amount in cents (inclusive).
          explode: false
          in: query
          name: amount_min
          schema:
            description: Minimum amount in cents (inclusive).
            format: int64
            minimum: 0
            type: integer
        - description: Maximum amount in cents (inclusive).
          explode: false
          in: query
          name: amount_max
          schema:
            description: Maximum amount in cents (inclusive).
            format: int64
            minimum: 0
            type: integer
        - description: >-
            Filter by one or more transaction status IDs (repeat the param or
            comma-separate). See GET /v1/transaction_statuses.
          explode: false
          in: query
          name: status_id
          schema:
            description: >-
              Filter by one or more transaction status IDs (repeat the param or
              comma-separate). See GET /v1/transaction_statuses.
            items:
              format: int64
              minimum: 0
              type: integer
            type:
              - array
              - 'null'
        - description: Filter by payment method kind (e.g. card, check, cash, transfer).
          explode: false
          in: query
          name: payment_method_kind
          schema:
            description: Filter by payment method kind (e.g. card, check, cash, transfer).
            type: string
        - description: Filter by campaign code.
          explode: false
          in: query
          name: code_campaign
          schema:
            description: Filter by campaign code.
            type: string
        - description: Filter by external transaction ID.
          explode: false
          in: query
          name: external_transaction_id
          schema:
            description: Filter by external transaction ID.
            format: int64
            minimum: 0
            type: integer
        - description: Sort column.
          explode: false
          in: query
          name: sort
          schema:
            default: created_at
            description: Sort column.
            enum:
              - created_at
              - date
              - amount
            type: string
        - description: Sort direction.
          explode: false
          in: query
          name: order
          schema:
            default: desc
            description: Sort direction.
            enum:
              - asc
              - desc
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusListEnvelopeTransaction'
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorModel'
          description: Error
components:
  schemas:
    StatusListEnvelopeTransaction:
      additionalProperties: true
      properties:
        data:
          items:
            $ref: '#/components/schemas/Transaction'
          type:
            - array
            - 'null'
        status:
          description: Operation result.
          examples:
            - success
          type: string
        total:
          description: Total number of matching items.
          format: int64
          type: integer
      required:
        - status
        - data
        - total
      type: object
    ErrorModel:
      additionalProperties: true
      properties:
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
      type: object
    Transaction:
      additionalProperties: true
      properties:
        CreatedAt:
          description: Creation timestamp.
          format: date-time
          type: string
        UpdatedAt:
          description: Last update timestamp.
          format: date-time
          type: string
        amount:
          default: 0
          description: Amount in cents.
          examples:
            - 5000
          format: int64
          minimum: 0
          type: integer
        code_campaign:
          description: Optional campaign code (must exist in group's campaigns).
          type: string
        comment:
          description: Optional comment.
          type: string
        comment_date:
          description: Optional comment date.
          format: date-time
          type: string
        contact_id:
          description: Contact ID - required for transactions.
          format: int64
          minimum: 0
          type: integer
        currency:
          description: Currency code.
          examples:
            - eur
          type: string
        date:
          description: Transaction date (ISO 8601 format).
          format: date-time
          type:
            - string
            - 'null'
        delivered_at:
          description: Optional delivery date.
          format: date-time
          type: string
        delivery_token:
          description: Optional delivery token.
          type: string
        external_transaction_id:
          description: Optional external transaction ID.
          format: int64
          minimum: 0
          type: integer
        group_id:
          description: ID of the group (espace) the transaction belongs to.
          format: int64
          minimum: 0
          readOnly: true
          type: integer
        id:
          description: Transaction ID (for updates, omit for new transactions).
          format: int64
          minimum: 0
          type: integer
        payment_method:
          additionalProperties: {}
          description: Additional payment method details (JSON object).
          type: object
        payment_method_kind:
          description: >-
            Payment method type (e.g., 'card', 'check', 'cash', 'transfer').
            Must match allowed payment methods for the group.
          type: string
        reimbursed_amount:
          description: Reimbursed amount in cents.
          format: int64
          minimum: 0
          type: integer
        status_id:
          description: >-
            Transaction status identifier. Use an ID from GET
            /v1/transaction_statuses, or default_status_id from GET
            /v1/transaction_settings.
          format: int64
          minimum: 0
          type: integer
        transaction_bundle_id:
          description: Bundle identifier.
          format: int64
          minimum: 0
          type: integer
        unpaid_amount:
          description: Unpaid amount in cents.
          format: int64
          minimum: 0
          type: integer
      required:
        - contact_id
        - date
        - amount
      type: object
    ErrorDetail:
      additionalProperties: true
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: opaque
      description: >-
        OAuth2 access token. Pass the token in the Authorization header as
        `Bearer <token>`. The token is looked up in Redis to resolve the caller
        identity.
      scheme: bearer
      type: http

````