> ## 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.

# Siparişi Muhasip faturasına aktar

> Siparişi Muhasip faturasına aktarır.

<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?

Siparişi Muhasip faturasına aktarır. Mevcut transactionId varsa yeniden fatura oluşturmaz. Gerektiğinde depo, cari ve ürün kayıtları da oluşturulur. E-belge gönderimi veya tahsilat yapılmaz. Desteklenen para birimi TRY’dir. Kısmi veya belirsiz sonuçta yeni aktarım başlatmadan işlem durumunu ve ilgili kayıtları inceleyin. Aynı firmada çakışan banka onayı, fatura veya pazaryeri aktarımı 409 döndürebilir. İş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:marketplace: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.

[İ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 PATCH 'https://api.muhasip.pro/apps/marketplace/order/64b000000000000000000001' \
    --user "$MUHASIP_API_USER_ID:$MUHASIP_API_SECRET" \
    --header 'Accept: */*'
  ```

  ```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.');
  }
  $headers = ['Accept: */*'];
  $handle = curl_init('https://api.muhasip.pro/apps/marketplace/order/64b000000000000000000001');
  curl_setopt_array($handle, [
      CURLOPT_CUSTOMREQUEST => 'PATCH',
      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 response = await fetch("https://api.muhasip.pro/apps/marketplace/order/64b000000000000000000001", {
      method: "PATCH",
      redirect: "manual",
      headers: {
        Accept: "*/*",
        Authorization: "Basic " + Buffer.from(`${apiUserId}:${secretKey}`).toString("base64")
      },
      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,
  "transactionId": "507f1f77bcf86cd799439013",
  "operation": {
    "operationId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "type": "marketplace.transfer",
    "state": "succeeded",
    "reviewRequired": false,
    "retryable": false,
    "result": {
      "transactionId": "507f1f77bcf86cd799439013"
    },
    "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ı 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 | Firma kapsamında kayıt bulunamadı. | 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/pazaryeri) · [İşlem takibi](/rehberler/islem-takibi) · [Kapsam ve sınırlamalar](/rehberler/kapsam-ve-sinirlamalar)


## OpenAPI

````yaml openapi.json PATCH /apps/marketplace/order/{id}
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/marketplace/order/{id}:
    patch:
      tags:
        - Pazaryeri
      summary: Siparişi Muhasip faturasına aktar
      description: >-
        Siparişi Muhasip faturasına aktarır. Mevcut transactionId varsa yeniden
        fatura oluşturmaz. Gerektiğinde depo, cari ve ürün kayıtları da
        oluşturulur. E-belge gönderimi veya tahsilat yapılmaz. Desteklenen para
        birimi TRY’dir. Kısmi veya belirsiz sonuçta yeni aktarım başlatmadan
        işlem durumunu ve ilgili kayıtları inceleyin. Aynı firmada çakışan banka
        onayı, fatura veya pazaryeri aktarımı 409 döndürebilir. İşlem makbuzunu
        saklayın; replayed=true ilk cevabın bütün içeriğini tekrarlamaz.
      operationId: appsMarketplaceOrderTransfer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            description: Muhasip kayıt kimliği; 24 onaltılık karakter.
            pattern: ^[a-fA-F0-9]{24}$
          description: İşlemin hedef kayıt kimliği.
      responses:
        '200':
          description: İşlem tamamlandı.
          content:
            application/json:
              schema:
                anyOf:
                  - allOf:
                      - type: object
                        properties:
                          status:
                            type: boolean
                            description: HTTP işleminin başarı durumu.
                          transactionId:
                            type: string
                            description: Oluşturulan Muhasip fatura kimliği.
                            pattern: ^[a-fA-F0-9]{24}$
                        required:
                          - status
                          - transactionId
                      - 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
                transactionId: 507f1f77bcf86cd799439013
                operation:
                  operationId: >-
                    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                  type: marketplace.transfer
                  state: succeeded
                  reviewRequired: false
                  retryable: false
                  result:
                    transactionId: 507f1f77bcf86cd799439013
                  statusUrl: >-
                    /apps/operations/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                  createdAt: '2026-10-18T09:00:00.000Z'
                  updatedAt: '2026-10-18T09:00:01.000Z'
        '400':
          description: İstek alanları geçersiz.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: false
                message: İstek alanları geçersiz.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Firma kapsamında kayıt bulunamadı.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: false
                message: Firma kapsamında kayıt bulunamadı.
        '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:
    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.
    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.