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

# List Transactions

> Listet Transaktionen auf. **Mindestens einer von `connection_id` oder `account_id` ist erforderlich** — ohne Filter wird 400 zurückgegeben.

- Nur `connection_id`: alle Konten dieser Connection
- Nur `account_id`: Connection wird automatisch aufgelöst
- Beide: spezifisches Konto

Der `api`-Parameter wird automatisch aus der `connection_id` abgeleitet und muss nicht angegeben werden. Sortierung: `made_on` aufsteigend.

**Cost:** 1 Credit per call



## OpenAPI

````yaml GET /v2/banking/transactions
openapi: 3.1.0
info:
  title: Business OS API
  description: >-
    API für Business OS – Zugang zu DATEV und Banking Enterprise-Schnittstellen.
    Alle Endpoints erfordern einen API Key im `x-api-key` Header. Credits werden
    pro API-Call abgezogen.
  version: 2.0.0
  contact:
    name: Business OS Support
    email: impressum@business-os.de
    url: https://business-os.de/kontakt
servers:
  - url: https://api.business-os.de
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: DATEV Allgemein
    description: >-
      Modulübergreifende DATEV-Endpunkte (z. B. Abo-/Service-Diagnose für
      Mandanten)
  - name: DATEV DUO
    description: DATEV Unternehmen Online — Kassenbuch, Belegbilder und Buchungsvorschläge
  - name: DATEV ReWe - Write
    description: 'DATEV Rechnungswesen — Write: Buchungen, Kontakte, Belegtypen, Steuersätze'
  - name: DATEV ReWe - Read
    description: >-
      DATEV Rechnungswesen — Read (Export): Geschäftsjahre und weitere
      Lesemodule
  - name: Banking AIS
    description: >-
      Account Information Services — Verbindungen, Kontostände und Transaktionen
      verwalten
  - name: Banking PIS
    description: Payment Initiation Services — Zahlungen ausführen und Status abrufen
  - name: Banking Webhooks
    description: Webhook-Konfiguration für Echtzeit-Benachrichtigungen
paths:
  /v2/banking/transactions:
    get:
      tags:
        - Banking AIS
      summary: List Transactions
      description: >-
        Listet Transaktionen auf. **Mindestens einer von `connection_id` oder
        `account_id` ist erforderlich** — ohne Filter wird 400 zurückgegeben.


        - Nur `connection_id`: alle Konten dieser Connection

        - Nur `account_id`: Connection wird automatisch aufgelöst

        - Beide: spezifisches Konto


        Der `api`-Parameter wird automatisch aus der `connection_id` abgeleitet
        und muss nicht angegeben werden. Sortierung: `made_on` aufsteigend.


        **Cost:** 1 Credit per call
      parameters:
        - name: connection_id
          in: query
          required: false
          schema:
            type: string
          description: >-
            ID der Bank-Verbindung. Mindestens dieser oder `account_id` muss
            gesetzt sein.
          example: '9182736450918273645'
        - name: account_id
          in: query
          schema:
            type: string
          description: >-
            ID des Bankkontos. Mindestens dieser oder `connection_id` muss
            gesetzt sein.
          example: '8273645091827364509'
        - name: from_date
          in: query
          schema:
            type: string
            format: date
          description: Startdatum (YYYY-MM-DD)
          example: '2026-01-01'
        - name: to_date
          in: query
          schema:
            type: string
            format: date
          description: Enddatum (YYYY-MM-DD)
          example: '2026-03-24'
        - name: from_id
          in: query
          schema:
            type: string
          description: >-
            Paginierung/Sync-Cursor: gibt nur Transaktionen mit `id` **strikt
            größer** als dieser zurück (exklusiv, numerisch verglichen). Für
            laufenden Sync zusammen mit `sort=id` nutzen — die `id` ist
            ingestion-monoton (jede neu eingelesene Transaktion bekommt eine
            höhere `id`) und fängt damit auch **rückdatierte Nachzügler**, die
            ein Datumsfilter (`from_date`) verpassen würde.
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - made_on
              - id
            default: made_on
          description: >-
            Sortierung der Rückgabe. `made_on` (Default): chronologisch nach
            Wertstellungsdatum (`id` als Tiebreaker). `id`: aufsteigend nach
            Transaktions-ID — empfohlen für inkrementellen Sync mit `from_id`,
            weil dann die letzte zurückgegebene `id` direkt der nächste Cursor
            ist.
      responses:
        '200':
          description: Liste der Transaktionen
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Transaction'
        '400':
          description: connection_id fehlt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Ungültiger API Key
        '402':
          description: Nicht genügend Credits
components:
  schemas:
    Transaction:
      type: object
      description: Eine Kontotransaktion
      properties:
        id:
          type: string
          description: Eindeutige Transaktions-ID
          example: '6450918273645091827'
        account_id:
          type: string
          description: ID des zugehörigen Kontos
          example: '8273645091827364509'
        payment_id:
          type: string
          nullable: true
          description: >-
            ID der zugehörigen Zahlung, sofern diese Transaktion über `POST
            /v2/banking/payments` initiiert wurde (Match über die
            server-generierte `end_to_end_id`). Sonst `null`.
          example: '4509182736450918273'
        duplicated:
          type: boolean
          description: Ob die Transaktion als Duplikat erkannt wurde
          example: false
        mode:
          type: string
          description: Modus der Transaktion
          example: normal
        status:
          type: string
          enum:
            - posted
            - pending
          description: Buchungsstatus
          example: posted
        made_on:
          type: string
          format: date
          description: Datum der Transaktion
          example: '2026-01-23'
        amount:
          type: number
          description: Betrag (negativ = Abbuchung, positiv = Gutschrift)
          example: -2000
        currency_code:
          type: string
          description: Währungscode (ISO 4217)
          example: EUR
        description:
          type: string
          description: Buchungstext
          example: FOLGELASTSCHRIFT
        description_parsed:
          type: object
          description: >-
            Aus dem `description`-Verwendungszweck geparste, standardisierte
            SEPA-Felder (DK-/DFÜ-Konvention). Alle Felder sind immer vorhanden,
            `null` wenn nicht im Text gefunden. EREF, Gegen-IBAN und
            Gegenpartei-Name sind hier bewusst ausgelassen — die liefert das
            `extra`-Objekt bereits strukturiert (`extra.end_to_end_id`,
            `extra.payee`/`extra.payer`,
            `extra.payee_information`/`extra.payer_information`). Erkennt sowohl
            Kurz-Codes (`CRED:`/`MREF:` …) als auch deutsche Langformen
            (`Glaeubiger-ID:`/`Mandatsreferenz:` …); Kurz-Codes haben Vorrang.
          properties:
            cred:
              type: string
              nullable: true
              description: Gläubiger-ID (SEPA Creditor Identifier, CRED)
              example: DE98ZZZ09999999999
            mref:
              type: string
              nullable: true
              description: Mandatsreferenz (MREF)
              example: M-2026-0042
            kref:
              type: string
              nullable: true
              description: Kundenreferenz (KREF)
              example: null
            debt:
              type: string
              nullable: true
              description: Debtor Identifier (DEBT)
              example: null
            svwz:
              type: string
              nullable: true
              description: SEPA-Verwendungszweck (SVWZ)
              example: null
            abwa:
              type: string
              nullable: true
              description: Abweichender Auftraggeber / Ultimate Debtor (ABWA)
              example: null
            abwe:
              type: string
              nullable: true
              description: Abweichender Empfänger / Ultimate Creditor (ABWE)
              example: null
            bic:
              type: string
              nullable: true
              description: BIC der Gegenpartei
              example: COBADEFF
            oamt:
              type: string
              nullable: true
              description: Ursprungsbetrag (Original Amount, OAMT)
              example: null
            coam:
              type: string
              nullable: true
              description: Zinskompensationsbetrag (Compensation Amount, COAM)
              example: null
            purp:
              type: string
              nullable: true
              description: SEPA-Zweckcode (Purpose Code, PURP)
              example: null
        category:
          type: string
          description: Automatisch erkannte Kategorie
          example: service_fee
        extra:
          type: object
          description: Zusätzliche Transaktionsdetails
          properties:
            time:
              type: string
              description: Uhrzeit der Buchung
              example: '00:07:13'
            payee:
              type: string
              description: IBAN des Empfängers
              example: DE02100100100006820101
            payer:
              type: string
              description: IBAN des Absenders
              example: DE89370400440532013000
            additional:
              type: string
              description: Zusätzlicher Buchungstext
              example: FOLGELASTSCHRIFT
            merchant_id:
              type: string
              nullable: true
              description: Händler-ID (sofern von der Bank geliefert, sonst null).
              example: null
            posting_date:
              type: string
              format: date
              description: Buchungsdatum
              example: '2026-01-23'
            end_to_end_id:
              type: string
              description: Ende-zu-Ende-Referenz
              example: RE-2026-0042
            payee_information:
              type: string
              description: Name des Empfängers
              example: Beispiel Handels GmbH
            payer_information:
              type: string
              description: Name des Absenders
              example: MUSTERMANN GMBH
            account_balance_snapshot:
              type: number
              description: Kontostand nach der Transaktion
              example: 12450.75
            categorization_confidence:
              type: number
              description: Konfidenz der automatischen Kategorisierung (0-1)
              example: 1
        created_at:
          type: string
          format: date-time
          description: Erstellungszeitpunkt
          example: '2026-03-24T13:51:32Z'
        updated_at:
          type: string
          format: date-time
          description: Letzter Aktualisierungszeitpunkt
          example: '2026-03-24T13:51:39Z'
    Error:
      type: object
      properties:
        error:
          type: string
          description: Fehlermeldung
          example: 'Missing required parameter: connection_id'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Dein Business OS API Key. Erstelle einen unter
        [app.business-os.de](https://app.business-os.de/) → API Keys.

````