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

# Banka hareketlerini listeler

> Firmanın banka hareketlerini en yeniden eskiye listeler: önce transactionDate, eşitlikte hareket kimliği azalan sırada. Filtreler doğrudan veya filter[...] biçiminde gönderilebilir. IBAN veya TCKN/VKN niteliğindeki q aramaları baPii gerektirir. updatedSince, durum ve not değişiklikleri dahil güncellenen hareketleri artımlı eşitleme için yeniden almayı sağlar. baPii yoksa karşı taraf IBAN ve TCKN/VKN alanları ile açıklama içindeki eşleşmeler maskelenir. İşlem sonrası hesap bakiyesi yalnız banka ilgili harekette bakiyeyi bildirdiyse ve baAccounts varsa gösterilir.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/bank-transactions
openapi: 3.0.3
info:
  title: BankaPro API
  version: 1.0.0
  description: >-
    BankaPro'nun sunucudan sunucuya kullanılan, tek firmalı REST API'sidir.
    Kimlik doğrulama HTTP Basic ile yapılır: kullanıcı adı anahtar kimliği,
    parola secret key değeridir. Firma anahtarın kendisinden belirlenir;
    companies, companiesId, companyIds veya scope adlı sorgu parametresi ya da
    başlık kabul edilmez. Tarayıcı kaynaklı (Origin başlığı taşıyan) istekler
    reddedilir. Anahtarın IP kısıtı doluysa istek yalnız listedeki adreslerden
    kabul edilir. Uçlar baAccounts, baTransactions, baOperations veya baSync
    yetkisiyle korunur; karşı taraf IBAN ve TCKN/VKN değerlerini açık görmek
    için baPii ayrıca atanmalıdır. Başarı yanıtı success/data/meta, hata yanıtı
    success:false/error/traceId biçimindedir. Tüm yanıtlarda x-request-id ve
    Cache-Control: no-store bulunur. Zamanlar UTC ISO-8601, parasal değerler iki
    ondalıklı metindir; farklı para birimleri tek toplamda birleştirilmez.
    Bilinmeyen bakiye null, bankanın bildirdiği gerçek sıfır 0.00 olarak döner.
    Bu sözleşme banka hesabı, banka hareketi ve manuel banka sorgusu uçlarını
    kapsar.
servers:
  - url: https://api.banka.pro
    description: BankaPro canlı API
security:
  - BasicAuth: []
tags:
  - name: Accounts
    description: >-
      Credential firmasının banka hesapları, bakiye özetleri ve doğrulanmış
      bakiye geçmişi
  - name: Transactions
    description: Credential firmasının banka hareketleri, özetleri ve izinli operasyonları
  - name: Queries
    description: >-
      Credential firmasının banka hesaplarında mevcut sorgu motoruyla manuel
      yenileme
paths:
  /v1/bank-transactions:
    parameters:
      - $ref: '#/components/parameters/RequestIdInput'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/Search'
      - $ref: '#/components/parameters/AccountIdQuery'
      - $ref: '#/components/parameters/Currency'
      - $ref: '#/components/parameters/BankCode'
      - $ref: '#/components/parameters/Direction'
      - $ref: '#/components/parameters/Incoming'
      - $ref: '#/components/parameters/TransactionStatus'
      - $ref: '#/components/parameters/StartDate'
      - $ref: '#/components/parameters/EndDate'
      - $ref: '#/components/parameters/UpdatedSince'
    get:
      tags:
        - Transactions
      summary: Banka hareketlerini listeler
      description: >-
        Firmanın banka hareketlerini en yeniden eskiye listeler: önce
        transactionDate, eşitlikte hareket kimliği azalan sırada. Filtreler
        doğrudan veya filter[...] biçiminde gönderilebilir. IBAN veya TCKN/VKN
        niteliğindeki q aramaları baPii gerektirir. updatedSince, durum ve not
        değişiklikleri dahil güncellenen hareketleri artımlı eşitleme için
        yeniden almayı sağlar. baPii yoksa karşı taraf IBAN ve TCKN/VKN alanları
        ile açıklama içindeki eşleşmeler maskelenir. İşlem sonrası hesap
        bakiyesi yalnız banka ilgili harekette bakiyeyi bildirdiyse ve
        baAccounts varsa gösterilir.
      operationId: listBankTransactions
      responses:
        '200':
          description: Sayfalanmış hareket listesi
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
            Cache-Control:
              $ref: '#/components/headers/NoStore'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  parameters:
    RequestIdInput:
      name: x-request-id
      in: header
      required: false
      description: >-
        Opsiyonel izleme kimliği. Değer 1-100 karakter ve yalnız harf, rakam,
        nokta, alt çizgi, iki nokta veya tire içeriyorsa korunur; aksi halde
        sunucu yeni bir UUID üretir.
      schema:
        type: string
        minLength: 1
        maxLength: 100
        pattern: ^[A-Za-z0-9._:-]{1,100}$
      example: 9cc0d3d1-1e63-4c90-b08f-90b6332e70ca
    Page:
      name: page
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        default: 1
    PageSize:
      name: pageSize
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
    Search:
      name: q
      in: query
      required: false
      description: >-
        Büyük/küçük harf ve Türkçe karakter farkına duyarsız arama. Hesaplarda
        ad, banka adı/kodu, hesap kodu ve IBAN aranır. Hareket araması karşı
        taraf adında ve açıklamanın normalize edilmiş kelime belirteçlerinde
        çalışır; baPii varsa ayrıca IBAN ve kimlik numarasında da çalışır. İşlem
        kodu ve alt hesap hareket aramasının kapsamı dışındadır. Açıklama
        belirteçleri en az üç karakterli kelimelerden üretilir; daha kısa
        terimler yalnız karşı taraf adında aranır. IBAN veya kimlik numarası
        niteliğindeki hareket aramaları baPii gerektirir.
      schema:
        type: string
        minLength: 2
        maxLength: 100
      example: müşteri ödemesi
    AccountIdQuery:
      name: accountId
      in: query
      required: false
      description: Tek banka hesabının hareketleri.
      schema:
        $ref: '#/components/schemas/ObjectId'
    Currency:
      name: currency
      in: query
      required: false
      description: >-
        Para birimi filtresi. Sabit destek listesi yoktur; tüm üç harfli kodlar
        kabul edilir. TL, ERU ve GPD sırasıyla TRY, EUR ve GBP olarak normalize
        edilir. TRY filtresi eksik, null veya boş saklanmış para birimi
        değerlerini de kapsar.
      schema:
        $ref: '#/components/schemas/CurrencyInput'
    BankCode:
      name: bankCode
      in: query
      required: false
      schema:
        type: string
        minLength: 1
        maxLength: 30
        example: '00010'
    Direction:
      name: direction
      in: query
      required: false
      schema:
        type: string
        enum:
          - incoming
          - outgoing
    Incoming:
      name: incoming
      in: query
      required: false
      description: >-
        direction filtresinin boolean karşılığıdır. İkisi birlikte gönderilirse
        aynı yönü göstermelidir.
      schema:
        type: boolean
    TransactionStatus:
      name: status
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/TransactionStatus'
    StartDate:
      name: startDate
      in: query
      required: false
      description: Dahil alt sınır. YYYY-MM-DD verilirse Europe/Istanbul gün başlangıcıdır.
      schema:
        $ref: '#/components/schemas/IsoDateInput'
    EndDate:
      name: endDate
      in: query
      required: false
      description: Dahil üst sınır. YYYY-MM-DD verilirse Europe/Istanbul gün sonudur.
      schema:
        $ref: '#/components/schemas/IsoDateInput'
    UpdatedSince:
      name: updatedSince
      in: query
      required: false
      description: >-
        Bu UTC zamandan itibaren güncellenen hareketleri filtreler; dış
        sistemlerin artımlı REST eşitlemesi için kullanılır.
      schema:
        $ref: '#/components/schemas/IsoDateInput'
  headers:
    RequestId:
      description: >-
        İsteğin izleme kimliği. İstemcinin gönderdiği değer 1-100 karakter ve
        yalnız harf, rakam, nokta, alt çizgi, iki nokta veya tire içeriyorsa
        korunur; aksi halde sunucu tarafından UUID üretilir.
      schema:
        type: string
        maxLength: 100
        pattern: ^[A-Za-z0-9._:-]{1,100}$
        example: 9cc0d3d1-1e63-4c90-b08f-90b6332e70ca
    NoStore:
      description: Banka verisinin istemci veya ara katmanda saklanmamasını belirtir.
      schema:
        type: string
        enum:
          - no-store
    WwwAuthenticate:
      description: HTTP Basic kimlik doğrulama challenge değeri.
      schema:
        type: string
        example: Basic realm="BankaPro API", charset="UTF-8"
    RetryAfter:
      description: İsteğin kaç saniye sonra yeniden denenebileceğini belirtir.
      schema:
        type: integer
        minimum: 0
    RateLimit:
      description: >-
        Geçerli oran sınırı ve kalan kota bilgisini standart RateLimit biçiminde
        taşır.
      schema:
        type: string
  schemas:
    TransactionListResponse:
      allOf:
        - $ref: '#/components/schemas/PaginatedSuccessBase'
        - type: object
          required:
            - data
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/BankTransaction'
    ObjectId:
      type: string
      pattern: ^[a-fA-F0-9]{24}$
      example: 64f000000000000000000001
    CurrencyInput:
      type: string
      pattern: ^(?:[A-Za-z]{3}|[Tt][Ll])$
      description: >-
        Sabit bir liste olmadan herhangi bir üç harfli para/kıymet kodu veya TL.
        Girdi büyük harfe çevrilir; TL, ERU ve GPD sırasıyla TRY, EUR ve GBP
        olarak normalize edilir.
      example: TRY
    TransactionStatus:
      type: integer
      enum:
        - 0
        - 1
        - 2
      description: 0=pending, 1=processed, 2=ignored.
    IsoDateInput:
      oneOf:
        - type: string
          format: date
          example: '2026-09-01'
        - type: string
          format: date-time
          example: '2026-09-01T00:00:00.000Z'
      description: Geçerli YYYY-MM-DD tarihi veya saat ve Z/ofset içeren ISO-8601 zamanı.
    PaginatedSuccessBase:
      type: object
      required:
        - success
        - meta
      properties:
        success:
          type: boolean
          enum:
            - true
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    BankTransaction:
      type: object
      required:
        - id
        - company
        - account
        - direction
        - transactionDate
        - amount
        - currency
        - exchangeRate
        - balance
        - balanceKnown
        - bankCode
        - transactionCode
        - subAccount
        - counterparty
        - description
        - status
        - isChecked
        - hasNote
        - createdAt
        - updatedAt
      properties:
        id:
          $ref: '#/components/schemas/ObjectId'
        company:
          $ref: '#/components/schemas/CompanyCompact'
        account:
          $ref: '#/components/schemas/TransactionAccount'
        direction:
          type: string
          enum:
            - incoming
            - outgoing
        transactionDate:
          type: string
          format: date-time
          nullable: true
        amount:
          $ref: '#/components/schemas/NullableMoney'
        currency:
          $ref: '#/components/schemas/NullableCurrencyCode'
        exchangeRate:
          $ref: '#/components/schemas/DecimalRate'
        balance:
          $ref: '#/components/schemas/AuthorizedTransactionBalance'
        balanceKnown:
          type: boolean
          description: >-
            baAccounts yoksa false. Yalnız banka ilgili harekette işlem sonrası
            bakiyeyi açıkça bildirdiyse true olur.
        bankCode:
          type: string
          nullable: true
        transactionCode:
          type: string
          nullable: true
        subAccount:
          type: string
          nullable: true
        counterparty:
          $ref: '#/components/schemas/Counterparty'
        description:
          type: string
          nullable: true
          maxLength: 5000
          description: >-
            Açıklamadaki düz veya boşluk, nokta, eğik çizgi ya da tireyle
            biçimlendirilmiş IBAN ve 10-11 haneli TCKN/VKN eşleşmeleri baPii
            yoksa maskelenir.
        status:
          $ref: '#/components/schemas/TransactionStatus'
        isChecked:
          type: boolean
        hasNote:
          type: boolean
        createdAt:
          type: string
          format: date-time
          nullable: true
        updatedAt:
          type: string
          format: date-time
          nullable: true
    ErrorEnvelope:
      type: object
      required:
        - success
        - error
        - traceId
      properties:
        success:
          type: boolean
          enum:
            - false
        error:
          type: object
          required:
            - code
            - message
            - details
          properties:
            code:
              type: string
              example: VALIDATION_FAILED
            message:
              type: string
              example: İstek doğrulanamadı.
            details:
              type: array
              items:
                $ref: '#/components/schemas/ValidationDetail'
        traceId:
          type: string
          nullable: true
          example: 9cc0d3d1-1e63-4c90-b08f-90b6332e70ca
    PaginationMeta:
      allOf:
        - $ref: '#/components/schemas/ResponseMeta'
        - type: object
          required:
            - page
            - pageSize
            - total
            - totalPages
          properties:
            page:
              type: integer
              minimum: 1
              example: 1
            pageSize:
              type: integer
              minimum: 1
              maximum: 100
              example: 25
            total:
              type: integer
              minimum: 0
              example: 1
            totalPages:
              type: integer
              minimum: 0
              example: 1
    CompanyCompact:
      type: object
      nullable: true
      required:
        - id
        - title
        - logo
      properties:
        id:
          $ref: '#/components/schemas/ObjectId'
        title:
          type: string
          nullable: true
        logo:
          type: string
          nullable: true
    TransactionAccount:
      type: object
      required:
        - id
        - name
        - bankName
        - bankCode
        - accountCode
        - currency
      properties:
        id:
          $ref: '#/components/schemas/NullableObjectId'
        name:
          type: string
          nullable: true
        bankName:
          type: string
          nullable: true
        bankCode:
          type: string
          nullable: true
        accountCode:
          type: string
          nullable: true
        currency:
          $ref: '#/components/schemas/NullableCurrencyCode'
    NullableMoney:
      type: string
      pattern: ^-?[0-9]+\.[0-9]{2}$
      nullable: true
      description: >-
        İki ondalıklı parasal metin; değer bilinmiyorsa veya alan için yetki
        yoksa null.
      example: '125000.00'
    NullableCurrencyCode:
      type: string
      pattern: ^[A-Z]{3}$
      nullable: true
      description: >-
        Normalize edilmiş üç harfli para veya kıymet kodu. Eksik, null veya boş
        saklanmış değer TRY döner; yalnız açık fakat geçersiz eski bir kod null
        olabilir.
      example: TRY
    DecimalRate:
      type: string
      pattern: ^-?[0-9]+\.[0-9]{6}$
      nullable: true
      description: Hareket para biriminin bir birimi için TRY kuru.
      example: '1.000000'
    AuthorizedTransactionBalance:
      type: string
      pattern: ^-?[0-9]+\.[0-9]{2}$
      nullable: true
      description: >-
        Hareket sonrası hesap bakiyesi. İlgili firmada baAccounts yetkisi yoksa
        veya değer bilinmiyorsa null; bilinen gerçek sıfır 0.00 olarak döner.
      example: '8750.00'
    Counterparty:
      type: object
      required:
        - name
        - iban
        - identityNumber
      properties:
        name:
          type: string
          nullable: true
          example: Örnek Müşteri
        iban:
          type: string
          nullable: true
          description: baPii yoksa ilk ve son dört karakter dışı maskelenir.
          example: TR00******************0000
        identityNumber:
          type: string
          nullable: true
          description: baPii yoksa ilk üç ve son iki karakter dışı maskelenir.
          example: 123******01
    ValidationDetail:
      type: object
      required:
        - field
        - rule
      properties:
        field:
          type: string
          example: pageSize
        rule:
          type: string
          example: min:1,max:100
    ResponseMeta:
      type: object
      required:
        - requestId
        - timestamp
      properties:
        requestId:
          type: string
          example: 9cc0d3d1-1e63-4c90-b08f-90b6332e70ca
        timestamp:
          $ref: '#/components/schemas/UtcTimestamp'
        partial:
          type: boolean
          description: Yanıtın kontrollü fallback veya eksik veri içerdiğini belirtir.
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/ApiWarning'
    NullableObjectId:
      type: string
      pattern: ^[a-fA-F0-9]{24}$
      nullable: true
      example: 64f000000000000000000001
    UtcTimestamp:
      type: string
      format: date-time
      description: UTC ISO-8601 zamanı.
      example: '2026-09-08T20:00:00.000Z'
    ApiWarning:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          enum:
            - TODAY_BALANCE_SNAPSHOT_FALLBACK
            - BALANCE_HISTORY_MISSING
            - BALANCE_HISTORY_PARTIAL
            - BALANCE_CURRENCY_MISMATCH
            - BALANCE_VALUE_UNKNOWN
            - BALANCE_VALUE_STALE
            - INVALID_ACCOUNT_CURRENCY
        message:
          type: string
        date:
          type: string
          format: date
          example: '2026-09-07'
        accountCount:
          type: integer
          minimum: 0
  responses:
    BadRequest:
      description: İstek doğrulama hatası
      headers:
        x-request-id:
          $ref: '#/components/headers/RequestId'
        Cache-Control:
          $ref: '#/components/headers/NoStore'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            success: false
            error:
              code: VALIDATION_FAILED
              message: pageSize 1-100 araliginda olmalidir.
              details:
                - field: pageSize
                  rule: min:1,max:100
            traceId: 9cc0d3d1-1e63-4c90-b08f-90b6332e70ca
    Unauthorized:
      description: HTTP Basic credential yok, geçersiz, iptal edilmiş veya süresi geçmiş
      headers:
        x-request-id:
          $ref: '#/components/headers/RequestId'
        Cache-Control:
          $ref: '#/components/headers/NoStore'
        WWW-Authenticate:
          $ref: '#/components/headers/WwwAuthenticate'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    Forbidden:
      description: >-
        Credential firması banka ürününe uygun değil, zorunlu ürün/endpoint
        yetkisi bulunmuyor veya yapılandırılmış IP allowlist bağlantının
        güvenilir istemci IP'siyle eşleşmiyor
      headers:
        x-request-id:
          $ref: '#/components/headers/RequestId'
        Cache-Control:
          $ref: '#/components/headers/NoStore'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            success: false
            error:
              code: FORBIDDEN
              message: Bu islem icin yetkiniz bulunmuyor.
              details: []
            traceId: 9cc0d3d1-1e63-4c90-b08f-90b6332e70ca
    TooManyRequests:
      description: İstek limiti aşıldı
      headers:
        x-request-id:
          $ref: '#/components/headers/RequestId'
        Cache-Control:
          $ref: '#/components/headers/NoStore'
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
        RateLimit:
          $ref: '#/components/headers/RateLimit'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            success: false
            error:
              code: RATE_LIMITED
              message: Istek limiti asildi. Daha sonra tekrar deneyin.
              details: []
            traceId: 9cc0d3d1-1e63-4c90-b08f-90b6332e70ca
    InternalError:
      description: Beklenmeyen sunucu hatası
      headers:
        x-request-id:
          $ref: '#/components/headers/RequestId'
        Cache-Control:
          $ref: '#/components/headers/NoStore'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: >-
        Kullanıcı adı anahtar kimliği, parola secret key değeridir. Anahtar
        aktif olmalı, erişim bitiş tarihi geçmemiş olmalı ve BankaPro erişimine
        sahip olmalıdır. Firma anahtardan sunucu tarafında belirlenir;
        istemciden firma kimliği alınmaz. Anahtarın IP kısıtı doluysa istek
        yalnız listedeki adreslerden kabul edilir. Kimlik bilgileri yalnız HTTPS
        üzerinden gönderilmelidir.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.