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

# Banka fatura otomasyonunu çalıştır

> Etkin ve doğrulanmış TRY banka fatura otomasyonunu çalıştırır.

<Warning>
  Bu GET çağrısı veri değiştirir ve **write** izni ister. Banka otomasyonundaki desteklenen fatura aksiyonunu
  çalıştırır; mali kayıt oluşabilir. `HEAD` ile çalıştırılmaz.
</Warning>

<Note>
  Mali işlem sonucunu ve varsa `operationId` değerini saklayın. Zaman aşımında veya `review_required` durumunda otomatik
  tekrar yapmayın. Tamamlanmış tekrar cevabı ilk cevabın bütün gövdesini yeniden sunmaz. [İşlem
  takibi](/rehberler/islem-takibi)
</Note>

## Ne yapar?

Etkin ve doğrulanmış TRY banka fatura otomasyonunu çalıştırır. GET isteği mali kayıt oluşturur; write izni ve Idempotency-Key zorunludur. Çalışmakta olan veya etkin olmayan otomasyon 409 döndürür. En fazla 1000 hareket ve son 10 gün değerlendirilir. Bütün satırlar başarılıysa ya da işlenecek hareket yoksa işlem başarılıdır. Başarısız veya sonucu belirsiz bir satır varsa HTTP 502, review\_required ve retryable=false döner. İşlem durumunu, otomasyon geçmişini ve ilgili faturaları incelemeden yeniden çalıştırmayın. İşlem makbuzunu saklayın; replayed=true ilk cevabın bütün içeriğini tekrarlamaz.

## Ön koşullar ve izin

Etkin API anahtarı ve `muhasip:bank:write` izni gerekir.

İlişkili kayıtlar aynı firmaya ait olmalıdır. Erişim ayarları için [kimlik ve izinler](/baslangic/kimlik-ve-izinler) rehberini inceleyin.

**İşlem anahtarı:** `Idempotency-Key` zorunludur. Aynı işlem için aynı anahtarı kullanın; örnekler `MUHASIP_IDEMPOTENCY_KEY` ortam değişkenini kullanır.

[İstek ve cevap şemalarını indirin](/openapi.json).

## İstek örnekleri

Örnekler temsilîdir. Kimlikleri, belge tarihlerini ve iş verisini kendi yetkili kayıtlarınızla değiştirin. Node.js örnekleri **Node.js 20 veya üzeri** içindir; PHP örnekleri cURL uzantısını kullanır. Hiçbiri otomatik tekrar yapmaz.

<CodeGroup>
  ```bash cURL theme={null}
  curl --request GET 'https://api.muhasip.pro/apps/bank/ws/automations/64b000000000000000000001/run' \
    --user "$MUHASIP_API_USER_ID:$MUHASIP_API_SECRET" \
    --header 'Accept: */*' \
    --header "Idempotency-Key: $MUHASIP_IDEMPOTENCY_KEY"
  ```

  ```php PHP theme={null}
  <?php
  $apiUserId = getenv('MUHASIP_API_USER_ID');
  $secretKey = getenv('MUHASIP_API_SECRET');
  if (!$apiUserId || !$secretKey) {
      throw new RuntimeException('API kimlik bilgileri eksik.');
  }
  $operationKey = getenv('MUHASIP_IDEMPOTENCY_KEY');
  if (!$operationKey) {
      throw new RuntimeException('Kalıcı işleme ait tekrar anahtarı eksik.');
  }
  $headers = ['Accept: */*', 'Idempotency-Key: ' . $operationKey];
  $handle = curl_init('https://api.muhasip.pro/apps/bank/ws/automations/64b000000000000000000001/run');
  curl_setopt_array($handle, [
      CURLOPT_CUSTOMREQUEST => 'GET',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_FOLLOWLOCATION => false,
      CURLOPT_HTTPHEADER => $headers,
      CURLOPT_CONNECTTIMEOUT => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
      CURLOPT_USERPWD => $apiUserId . ':' . $secretKey,
  ]);
  $response = curl_exec($handle);
  $httpStatus = curl_getinfo($handle, CURLINFO_RESPONSE_CODE);
  curl_close($handle);
  if ($response === false) {
      throw new RuntimeException('Bağlantı tamamlanamadı; mali işlemi otomatik tekrarlamayın.');
  }
  if ($httpStatus < 200 || $httpStatus >= 300) {
      throw new RuntimeException('HTTP ' . $httpStatus . '; kaynak hata açıklamasını değerlendirin.');
  }
  // $response gövdesini bu işlemin cevap biçimine göre işleyin; ham cevabı loglamayın.
  echo 'HTTP ' . $httpStatus . PHP_EOL;
  ```

  ```javascript Node.js theme={null}
  async function main() {
    const apiUserId = process.env.MUHASIP_API_USER_ID
    const secretKey = process.env.MUHASIP_API_SECRET
    if (!apiUserId || !secretKey) throw new Error("API kimlik bilgileri eksik.")
    const operationKey = process.env.MUHASIP_IDEMPOTENCY_KEY
    if (!operationKey) throw new Error("Kalıcı işleme ait tekrar anahtarı eksik.")
    const response = await fetch("https://api.muhasip.pro/apps/bank/ws/automations/64b000000000000000000001/run", {
      method: "GET",
      redirect: "manual",
      headers: {
        Accept: "*/*",
        Authorization: "Basic " + Buffer.from(`${apiUserId}:${secretKey}`).toString("base64"),
        "Idempotency-Key": operationKey
      },
      signal: AbortSignal.timeout(30000)
    })
    const data = await response.arrayBuffer()
    if (!response.ok) throw new Error(`HTTP ${response.status}; kaynak hata açıklamasını değerlendirin.`)
    // data gövdesini bu işlemin cevap biçimine göre işleyin; ham cevabı loglamayın.
    console.log("HTTP", response.status)
  }

  main().catch(() => {
    console.error("İstek tamamlanamadı; mali işlemi otomatik tekrarlamayın.")
    process.exitCode = 1
  })
  ```
</CodeGroup>

## Cevabı değerlendirin

Önce HTTP durumunu, ardından bu kaynağın `status` ve sonuç alanlarını değerlendirin. Bütün uçlar aynı sonuç zarfını veya oluşturma için `201` kodunu kullanmaz.

Temsilî başarılı cevap; gerçek hizmet çağrısından alınmamıştır:

```json theme={null}
{
  "status": true,
  "result": {
    "status": true,
    "data": []
  },
  "operation": {
    "operationId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "type": "bank.automation",
    "state": "succeeded",
    "reviewRequired": false,
    "retryable": false,
    "result": {},
    "statusUrl": "/apps/operations/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "createdAt": "2026-10-18T09:00:00.000Z",
    "updatedAt": "2026-10-18T09:00:01.000Z"
  }
}
```

`replayed:true` varsa cevap güvenli makbuz ve sonuç kimlikleriyle sınırlı olabilir. İlk HTML/PDF veya mali gövdeyi tekrar beklemeyin. `reviewRequired:true` veya `retryable:false` yeni bir mali çağrı izni değildir.

## Hata durumunda

| HTTP | Bu işlemde anlamı | İzlenecek adım |
| - | - | - |
| 400 | İstek alanları veya kimlik geçersiz. | Alan adını, türünü ve zorunluluğunu kontrol edin; değişmeyen hatalı isteği tekrar göndermeyin. |
| 401 | API kimliği/parolası, erişim süresi veya firma doğrulanamadı. | Anahtar kimliğini, gizli değeri, erişim süresini ve firma erişimini kontrol edin. |
| 403 | API izni, IP kısıtı veya kayıt erişimi uygun değil. | Anahtarın izinlerini, IP kısıtını ve kayıt kimliğini kontrol edin. |
| 404 | Kayıt bulunamadı veya bu erişim bağlamında kullanılamıyor. | Hedef kimliğini ve aynı firmaya ait olduğunu doğrulayın; bu cevap başka firmanın kaydını açmaz. |
| 409 | İstek, devam eden işlemle veya kayıt durumuyla çakışıyor. | Mevcut işlem ve hedefi inceleyin. Kilit veya içerik çatışmasını yeni anahtarla aşmaya çalışmayın. |
| 422 | İstek iş kuralına uymuyor veya işlem reddedildi. | Ret nedenini kontrol edin. Alanlar hatalıysa düzeltin; desteklenmeyen işlemi yeniden göndermeyin. |
| 429 | Ortak istek sınırı aşıldı; sayısal status alanı kullanılır. | Varsa Retry-After bilgisini değerlendirin. Mali çağrıyı otomatik yeniden göndermeyin. |
| 500 | İşlem gerçekleştirilemedi. | İşlem sonucunu inceleyin; bağlantı/hata oluşması mali etkinin hiç başlamadığını kanıtlamaz. |
| 502 | Hizmet yanıtı alınamadı veya mali sonuç kesinleşmedi. | İşlem makbuzunu ve ilgili belge/ödemeyi inceleyin. Belirsiz mali sonucu yeniden göndermeyin. |
| 503 | İşlem kaydına veya gerekli hizmete erişilemiyor. | Varsa işlem kimliğiyle durumu okuyun; kayıt veya hizmet hatasından otomatik tekrar sonucu çıkarmayın. |

Ağ kesintisi, zaman aşımı veya JSON olmayan cevap mali etkinin oluşmadığını kanıtlamaz. Ham istek/cevapları genel loglara yazmayın. [Hata yönetimi](/rehberler/hata-yonetimi)

## Sonraki adım

İşlem makbuzunu saklayın; durum adresinden kontrol edin ve sonuç kimliklerini ilgili belge/tahsilat/siparişle eşleştirin. reviewRequired=true ise yeniden göndermeden manuel inceleyin.

[Kaynak akışı](/rehberler/kaynaklar/banka-otomasyonlari) · [İşlem takibi](/rehberler/islem-takibi) · [Kapsam ve sınırlamalar](/rehberler/kapsam-ve-sinirlamalar)


## OpenAPI

````yaml openapi.json GET /apps/bank/ws/automations/{id}/run
openapi: 3.0.3
info:
  title: Muhasip API
  version: 2026-10-18.1
  description: >-
    Fatura, banka, POS ve tahsilat, GİB e-Arşiv, pazaryeri, online işlemler,
    görevler, ajanda ve takvim entegrasyonları. İşlem alanları, izinler, istek
    ve cevap örnekleri ile hata yönetimi.
servers:
  - url: https://api.muhasip.pro
    description: Muhasip API
security:
  - BasicAuth: []
tags:
  - name: Uygulamalar
  - name: Görev yönetimi
  - name: Ajanda ve takvim
  - name: Fatura
    description: Fatura bağlantısı, belge işlemleri ve muhasebeye aktarım.
  - name: Banka
    description: >-
      Banka hesapları, hareketler, mahsup ve mevcut çalışma alanı alt
      kaynakları.
  - name: POS ve tahsilat
    description: POS hesapları, komisyonlar ve tahsilat bağlantıları.
  - name: GİB e-Arşiv
    description: GİB hesabı, sorgu, taslak ve SMS imzalama.
  - name: Pazaryeri
    description: Trendyol bağlantısı ve sipariş aktarımı.
  - name: Online işlemler
    description: Online işlem ekranı yapılandırması.
  - name: İşlem takibi
    description: Mali işlem durumu ve tekrar çağrı makbuzları.
paths:
  /apps/bank/ws/automations/{id}/run:
    get:
      tags:
        - Banka
      summary: Banka fatura otomasyonunu çalıştır
      description: >-
        Etkin ve doğrulanmış TRY banka fatura otomasyonunu çalıştırır. GET
        isteği mali kayıt oluşturur; write izni ve Idempotency-Key zorunludur.
        Çalışmakta olan veya etkin olmayan otomasyon 409 döndürür. En fazla 1000
        hareket ve son 10 gün değerlendirilir. Bütün satırlar başarılıysa ya da
        işlenecek hareket yoksa işlem başarılıdır. Başarısız veya sonucu
        belirsiz bir satır varsa HTTP 502, review_required ve retryable=false
        döner. İşlem durumunu, otomasyon geçmişini ve ilgili faturaları
        incelemeden yeniden çalıştırmayın. İşlem makbuzunu saklayın;
        replayed=true ilk cevabın bütün içeriğini tekrarlamaz.
      operationId: muhasipGetAppsBankWsAutomationsIdRun
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            pattern: ^[a-fA-F0-9]{24}$
            description: 24 karakterli Muhasip kayıt kimliği.
          description: ''
        - name: Idempotency-Key
          in: header
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 128
            pattern: ^[!-~]+$
          description: Bu yeni mali işlem için zorunludur.
      responses:
        '200':
          description: İşlem cevabı; örnek temsilîdir.
          content:
            application/json:
              schema:
                anyOf:
                  - allOf:
                      - type: object
                        properties:
                          status:
                            type: boolean
                          result:
                            type: object
                            properties:
                              status:
                                type: boolean
                              data:
                                type: array
                                items:
                                  $ref: >-
                                    #/components/schemas/FinanceBankAutomationLogItem
                            required:
                              - status
                              - data
                        required:
                          - status
                          - result
                      - type: object
                        properties:
                          operation:
                            $ref: '#/components/schemas/ApiOperation'
                          operations:
                            type: array
                            items:
                              $ref: '#/components/schemas/ApiOperation'
                          replayed:
                            type: boolean
                  - $ref: '#/components/schemas/ApiOperationReplay'
                description: >-
                  İlk çağrı kaynağa özgü yanıtı ve işlem makbuzunu; tamamlanmış
                  tekrar yalnız güvenli makbuzu ve uygun sonuç kimliklerini
                  döndürür.
              example:
                status: true
                result:
                  status: true
                  data: []
                operation:
                  operationId: >-
                    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                  type: bank.automation
                  state: succeeded
                  reviewRequired: false
                  retryable: false
                  result: {}
                  statusUrl: >-
                    /apps/operations/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                  createdAt: '2026-10-18T09:00:00.000Z'
                  updatedAt: '2026-10-18T09:00:01.000Z'
        '400':
          description: İstek alanları veya kimlik geçersiz.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: false
                message: İstek alanları veya kimlik geçersiz.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: >-
            İşlem koruması veya mali sonuç; kaynak varyantının koşullarını
            değerlendirin.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiOperationError'
              example:
                status: false
                code: OPERATION_IN_PROGRESS
                message: İşlem sonucunu durum adresinden kontrol ediniz.
                retryable: false
        '422':
          description: >-
            İşlem koruması veya mali sonuç; kaynak varyantının koşullarını
            değerlendirin.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiOperationError'
              example:
                status: false
                code: OPERATION_REJECTED
                message: İşlem sonucunu durum adresinden kontrol ediniz.
                retryable: false
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          description: İşlem gerçekleştirilemedi.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: false
                message: İşlem gerçekleştirilemedi.
        '502':
          description: >-
            İşlem koruması veya mali sonuç; kaynak varyantının koşullarını
            değerlendirin.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiOperationError'
              example:
                status: false
                code: UPSTREAM_RESULT_UNCERTAIN
                message: İşlem sonucunu durum adresinden kontrol ediniz.
                retryable: false
        '503':
          description: >-
            İşlem koruması veya mali sonuç; kaynak varyantının koşullarını
            değerlendirin.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiOperationError'
              example:
                status: false
                code: OPERATION_RECORD_UNAVAILABLE
                message: İşlem sonucunu durum adresinden kontrol ediniz.
                retryable: false
components:
  schemas:
    FinanceBankAutomationLogItem:
      type: object
      properties:
        status:
          type: boolean
        recordId:
          type: string
          pattern: ^[a-fA-F0-9]{24}$
          description: 24 karakterli Muhasip kayıt kimliği.
          nullable: true
        message:
          type: string
        data:
          type: object
          properties:
            uuid:
              type: string
              format: uuid
            type:
              type: string
              enum:
                - einvoice
                - earchive
          required:
            - uuid
            - type
          nullable: true
      required:
        - status
        - recordId
        - message
        - data
    ApiOperation:
      type: object
      properties:
        operationId:
          type: string
          pattern: ^[a-f0-9]{64}$
        type:
          type: string
        state:
          type: string
          enum:
            - claimed
            - dispatching
            - provider_accepted
            - succeeded
            - rejected
            - failed_before_dispatch
            - review_required
        reviewRequired:
          type: boolean
        retryable:
          type: boolean
        result:
          $ref: '#/components/schemas/ApiOperationReceipt'
        statusUrl:
          type: string
        createdAt:
          type: string
          format: date-time
          description: ISO 8601 tarih-saat.
        updatedAt:
          type: string
          format: date-time
          description: ISO 8601 tarih-saat.
      required:
        - operationId
        - type
        - state
        - reviewRequired
        - retryable
        - result
        - statusUrl
        - createdAt
        - updatedAt
    ApiOperationReplay:
      type: object
      properties:
        status:
          type: boolean
        replayed:
          type: boolean
          enum:
            - true
        operation:
          $ref: '#/components/schemas/ApiOperation'
        operations:
          type: array
          items:
            $ref: '#/components/schemas/ApiOperation'
        resultId:
          type: string
        transactionId:
          type: string
        uuid:
          type: string
        id:
          type: string
        providerId:
          type: string
        documentId:
          type: string
        paymentId:
          type: string
        orderId:
          type: string
        uuids:
          type: array
          items:
            type: string
      required:
        - status
        - replayed
        - operation
        - operations
      additionalProperties: false
    Error:
      type: object
      properties:
        status:
          type: boolean
        code:
          type: string
        message:
          type: string
        description:
          type: string
        retryable:
          type: boolean
        reviewRequired:
          type: boolean
        operationId:
          type: string
      required:
        - status
      additionalProperties: true
    ApiOperationError:
      type: object
      properties:
        status:
          type: boolean
        code:
          type: string
        message:
          type: string
        retryable:
          type: boolean
        reviewRequired:
          type: boolean
        operation:
          $ref: '#/components/schemas/ApiOperation'
        operationId:
          type: string
      required:
        - status
      additionalProperties: true
    ApiOperationReceipt:
      type: object
      properties:
        resultId:
          type: string
          minLength: 1
          maxLength: 200
          pattern: ^[A-Za-z0-9_.:-]+$
        transactionId:
          type: string
          minLength: 1
          maxLength: 200
          pattern: ^[A-Za-z0-9_.:-]+$
        uuid:
          type: string
          minLength: 1
          maxLength: 200
          pattern: ^[A-Za-z0-9_.:-]+$
        id:
          type: string
          minLength: 1
          maxLength: 200
          pattern: ^[A-Za-z0-9_.:-]+$
        providerId:
          type: string
          minLength: 1
          maxLength: 200
          pattern: ^[A-Za-z0-9_.:-]+$
        documentId:
          type: string
          minLength: 1
          maxLength: 200
          pattern: ^[A-Za-z0-9_.:-]+$
        paymentId:
          type: string
          minLength: 1
          maxLength: 200
          pattern: ^[A-Za-z0-9_.:-]+$
        orderId:
          type: string
          minLength: 1
          maxLength: 200
          pattern: ^[A-Za-z0-9_.:-]+$
        uuids:
          type: array
          items:
            type: string
            maxLength: 200
            pattern: ^[A-Za-z0-9_.:-]+$
          maxItems: 100
      additionalProperties: false
    RateLimitError:
      type: object
      properties:
        status:
          type: integer
          enum:
            - 429
        error:
          type: string
        message:
          type: string
      required:
        - status
        - error
        - message
  responses:
    Unauthorized:
      description: API kimliği/parolası, erişim süresi veya firma doğrulanamadı.
      headers:
        WWW-Authenticate:
          schema:
            type: string
          description: Basic realm="Muhasip API", charset="UTF-8"
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            status: false
            code: UNAUTHORIZED
            message: API kimlik bilgileri doğrulanamadı.
    Forbidden:
      description: Ürün, IP, modül izni veya kaynak kapsamı uygun değil.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            status: false
            message: Ürün, IP, modül izni veya kaynak kapsamı uygun değil.
    NotFound:
      description: Kayıt bulunamadı veya bu erişim bağlamında kullanılamıyor.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            status: false
    RateLimited:
      description: Ortak istek sınırı aşıldı; sayısal status alanı kullanılır.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitError'
          example:
            status: 429
            error: Too Many Requests
            message: Rate limit exceeded. Please try again later.
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: >-
        Kullanıcı adı apiUserId, parola secretKey. Aktif ve süresi geçmemiş API
        kullanıcısı ve uygun firma gerekir.

````

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