# Siparişi düzelt

`PATCH /v1/orders/{id}` · Grup: Siparişler

Siparişin adresini, notlarını, teslim gününü veya kalemlerini değiştirin.

> **Bilmeniz gerekenler:** Panelin düzeltme servisi kullanılır. Verilmeyen alan korunur; delivery_day=null günü kaldırır. Durum bu uçtan değişmez. Adres/müşteri notu personal_data:write, iç not internal_notes:write ister. Kalem değiştirme, çıkarma, ekleme ve geri eklemede panelin stok/kargo/fatura kilitleri geçerlidir. Para dönen düzeltme money_out:write ve refund_confirm yanıtındaki refund_amount ile yeni tekrar anahtarı gerektirir.

- **Gereken izin:** Bearer anahtarı ve `orders:write`
- **Koşula bağlı izin:** `internal_notes:write`: İstekte `note` gönderirseniz gerekir. Eksikse 403 döner. `money_out:write`: İstekte `refund_amount` gönderirseniz gerekir. Eksikse 403 döner. `personal_data:write`: İstekte `shipping_address`, `customer_note` gönderirseniz gerekir. Eksikse 403 döner.
- **Yanıtı genişleten izin:** `personal_data:read`, `internal_notes:read`: yanıttaki ilgili alanları açar; izin yoksa bu alanlar atlanır, istek reddedilmez.
- **Maliyet:** 1 puan (bağlantı başına 60 saniyede 600 puan)
- **Tekrar anahtarı:** Gerekir: `Idempotency-Key` başlığı.

## İstek

Temel adres: `https://api.siparis.app/v1`. Yol: `/v1/orders/{id}`.

### Yol parametreleri

| Alan | Tür | Zorunlu | Açıklama | Örnek |
| --- | --- | --- | --- | --- |
| `id` | metin | Evet | Okunacak kaynağın ord_ önekli dış kimliği. | `"ord_1234567890abcdef1234567890abcdef"` |

### Başlıklar

| Alan | Tür | Zorunlu | Açıklama | Örnek |
| --- | --- | --- | --- | --- |
| `Idempotency-Key` | metin · null olabilir | Evet | Zorunlu tekrar anahtarı; en çok 200 karakter. Yeni işte yeni değer; ağ tekrarında aynı gövde ve aynı değer. | `"ilk-esitleme-20261016-001"` |
| `If-Match` | metin · null olabilir | Hayır | İsteğe bağlı önkoşul: son ETag değerini çift tırnaklarıyla gönderin. Komutun kilidi altında farklıysa 412 revision_mismatch. | `"\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\""` |

### Gövde (application/json)

| Alan | Tür | Zorunlu | Açıklama | Örnek |
| --- | --- | --- | --- | --- |
| `add_items` | liste: nesne (en çok 50 öğe) · null olabilir | Hayır | Marka fiyatıyla eklenecek kalemler; burada unit_price desteklenmez. |  |
| `add_items[].quantity` | sayı (en çok 100000) veya metin | Evet | Miktar; en çok üç ondalık hane. Adetle satılan üründe tam sayı gerekir. | `"2"` |
| `add_items[].sku` | metin (en çok 200 karakter) · null olabilir | Hayır | Stok kodu; baş/son boşluk ve harf farkı kaldırılarak tam eşleşir. | `"KUPA-MAVI"` |
| `add_items[].unit_price` | sayı (en az 0; en çok 10000000) veya metin · null olabilir | Hayır | İsteğe bağlı TRY birim fiyatı; orders.price eylem izni gerekir. Yoksa markanın kampanya dahil fiyatı kullanılır. | `"120.00"` |
| `add_items[].variant` | metin · null olabilir | Hayır | var_ dış kimliği; variant veya sku alanından tam biri gerekir. | `"var_1234567890abcdef1234567890abcdef"` |
| `allow_waiting` | true/false | Hayır | Eklenen kalemin eksik adedi mal gelince gönderilsin. | `false` |
| `customer_note` | metin (en çok 2000 karakter) · null olabilir | Hayır | Müşteri notu; boş metin kaldırır, personal_data:write gerekir. | `"Teslimden önce arayın."` |
| `delivery_day` | tarih · null olabilir | Hayır | Yeni teslim günü; null günü kaldırır. Gönderilmeyen alan değişmez. | `"2026-10-17"` |
| `items` | liste: nesne (en çok 100 öğe) · null olabilir | Hayır | Yalnız değişen satırlar; panelin kargo/fatura/ödeme ve stok kilitleri geçerlidir. |  |
| `items[].id` | metin | Evet | Değişen sipariş satırının lin_ kimliği. | `"lin_1234567890abcdef1234567890abcdef"` |
| `items[].quantity` | sayı (en az 0; en çok 100000) veya metin | Evet | Yeni miktar; 0 satırı çıkarır, reason gerekir. Son ürün çıkarılamaz. | `"1"` |
| `items[].reason` | metin (en çok 200 karakter) | Hayır | Ürün çıkarılırken zorunlu gerekçe. | `"Müşteri bir adet istedi."` |
| `items[].unit_price` | sayı (en az 0; en çok 10000000) veya metin · null olabilir | Hayır | Yeni TRY birim fiyatı; yalnız panelde fiyat düzeltilebilen siparişte ve orders.price izniyle. | `"120.00"` |
| `items[].variant` | metin · null olabilir | Hayır | Yeni var_ seçeneği; atlanırsa satırın seçeneği korunur. | `"var_1234567890abcdef1234567890abcdef"` |
| `note` | metin (en çok 2000 karakter) · null olabilir | Hayır | İç not; boş metin kaldırır, internal_notes:write gerekir. | `"Paket kontrol edildi."` |
| `refund_amount` | sayı (en az 0; en çok 10000000) veya metin · null olabilir | Hayır | Para dönen düzeltmede gördüğünüz iade tutarı; money_out:write gerekir. Kart iadesi panelin mevcut yoluyla yürür. | `"120.00"` |
| `restore_items` | liste: metin (en çok 100 öğe) · null olabilir | Hayır | Çıkarılmış lin_ satırlarını kayıtlı adet/fiyatla geri ekler. |  |
| `shipping_address` | nesne · null olabilir | Hayır | Yeni teslimat adresi; personal_data:write gerekir. Müşteri kartının adresi değiştirilmez. |  |
| `shipping_address.address_line` | metin (en çok 500 karakter) | Evet | Açık teslimat adresi. | `"Örnek Sokak No: 1"` |
| `shipping_address.city` | metin (en çok 100 karakter) | Evet | Adresin ili. | `"İstanbul"` |
| `shipping_address.district` | metin (en çok 100 karakter) | Evet | Adresin ilçesi. | `"Kadıköy"` |
| `shipping_address.full_name` | metin (en çok 200 karakter) | Hayır | Alıcının adı; boşsa sipariş verenin adı kullanılır. | `"Örnek Alıcı"` |
| `shipping_address.neighborhood` | metin (en çok 100 karakter) | Hayır | Kargoda resmî listedeki mahalle veya köy adı gerekir. | `"Caferağa"` |
| `shipping_address.neighborhood_area` | metin (en çok 100 karakter) | Hayır | Varsa bağlı köy, semt veya belde. | `""` |
| `shipping_address.phone` | metin (en çok 30 karakter) | Hayır | Alıcının telefonu; kargoda zorunludur. Başka alıcıya müşterinin telefonu taşınmaz. | `"05000000000"` |
| `shipping_address.postal_code` | metin (en çok 10 karakter) · null olabilir | Hayır | İsteğe bağlı posta kodu. | `"34710"` |
| `shipping_address.village` | true/false | Hayır | Adres köydeyse true. | `false` |

## Örnek istek

Kimlik içeren yollarda örnek kimliği kendi liste yanıtınızdan alın. `SIPARIS_API_KEY` sunucu ortamında tanımlı olmalı; yerelde `SIPARIS_API_URL` ile /v1 içeren adresi değiştirin. Üretimde [tekrar kurallarını](https://developer.siparis.app/hiz-siniri) uygulayın.

### curl


```bash
curl --fail-with-body --silent --show-error --request PATCH \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/orders/ord_1234567890abcdef1234567890abcdef" \
  -H "Authorization: Bearer $SIPARIS_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: ornek-patch-v1-orders-ord-1234567890abcdef1234567890abcdef-001' \
  --data-binary @- <<'JSON'
{
  "delivery_day": "2026-10-17"
}
JSON
```


### Python


```python
import json
import os
from urllib.request import Request, build_opener, HTTPRedirectHandler
from urllib.error import HTTPError

# İmzalı indirme hedefine Bearer taşımamak için yönlendirme kendiliğinden izlenmez.
class NoRedirect(HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

base = os.environ.get("SIPARIS_API_URL", "https://api.siparis.app/v1")
headers = {
    "Authorization": "Bearer " + os.environ["SIPARIS_API_KEY"],
    "Content-Type": "application/json",
    "Idempotency-Key": "ornek-patch-v1-orders-ord-1234567890abcdef1234567890abcdef-001",
}
request = Request(base + "/orders/ord_1234567890abcdef1234567890abcdef", headers=headers, method="PATCH",
    data="{\"delivery_day\":\"2026-10-17\"}".encode("utf-8"))
try:
    with build_opener(NoRedirect).open(request, timeout=30) as response:
        print(response.read().decode("utf-8"))
except HTTPError as error:
    print(error.code, error.read().decode("utf-8"))
    raise
```


### TypeScript


```typescript
// Node.js 22+; anahtar yalnız sunucunun ortam değişkenindedir.
const base = process.env.SIPARIS_API_URL ?? "https://api.siparis.app/v1";
if (!process.env.SIPARIS_API_KEY) throw new Error("SIPARIS_API_KEY gerekli");
const response = await fetch(base + "/orders/ord_1234567890abcdef1234567890abcdef", {
  method: "PATCH",
  headers: {
    "Authorization": `Bearer ${process.env.SIPARIS_API_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": "ornek-patch-v1-orders-ord-1234567890abcdef1234567890abcdef-001",
  },
  redirect: "manual", // 307 hedefini Bearer olmadan ayrı istekte okuyun.
  signal: AbortSignal.timeout(30_000),
  body: JSON.stringify({
  "delivery_day": "2026-10-17"
}),
});
const text = await response.text();
if (!response.ok) throw new Error(`${response.status}: ${text}`);
console.log(text);
```


## Yanıt

### 200 · İstek başarıyla tamamlandı.

İçerik türü: `application/json`.


```json
{
  "channel": "whatsapp",
  "created_at": "2026-10-16T09:00:00Z",
  "currency": "TRY",
  "customer": null,
  "delivery_day": "2026-10-17",
  "delivery_method": "shipping",
  "discount_total": "0.00",
  "gift_wrap_fee": "0.00",
  "id": "ord_1234567890abcdef1234567890abcdef",
  "number": "48273910",
  "payment_fee": "0.00",
  "payment_method": "bank_transfer",
  "payment_state": "paid",
  "preorder_from": null,
  "shipping_total": "0.00",
  "source": "api",
  "status": "confirmed",
  "store": "sto_1234567890abcdef1234567890abcdef",
  "subtotal": "120.00",
  "tax_status": "standard",
  "tax_total": "20.00",
  "total": "120.00",
  "updated_at": "2026-10-16T10:00:00Z"
}
```

Yanıt alanları:

| Alan | Tür | Zorunlu | Açıklama | Örnek |
| --- | --- | --- | --- | --- |
| `channel` | metin · null olabilir | Evet | Siparişin satış kanalı; api_external kaynağında bildirilen channel_name. | `"whatsapp"` |
| `created_at` | tarih-saat | Evet | Oluşturulma zamanı; RFC 3339 UTC. | `"2026-10-16T09:00:00Z"` |
| `customer` | metin · null olabilir | Evet | Müşteri kimliği (cus_ ve 32 küçük onaltılık karakter). | `"cus_1234567890abcdef1234567890abcdef"` |
| `delivery_day` | tarih · null olabilir | Evet | Teslim günü; YYYY-MM-DD. | `"2026-10-17"` |
| `delivery_method` | metin · null olabilir | Evet | Teslim yöntemi. Değerler: shipping, hand, pickup, digital. Türkçe karşılıkları: https://developer.siparis.app/referans#teslim-yontemleri. | `"shipping"` |
| `discount_total` | metin · null olabilir | Evet | Toplam indirim; TRY cinsinden ondalık metin. Kuruş kaybını önlemek için ondalık sayı kütüphanesiyle işleyin. | `"0.00"` |
| `gift_wrap_fee` | metin · null olabilir | Evet | Hediye paketi ücreti; TRY cinsinden ondalık metin. Kuruş kaybını önlemek için ondalık sayı kütüphanesiyle işleyin. | `"0.00"` |
| `id` | metin | Evet | Kaynağın dış kimliği; ord_ ve 32 küçük onaltılık karakter. İç sayısal kimlik kullanılmaz. | `"ord_1234567890abcdef1234567890abcdef"` |
| `number` | metin · null olabilir | Evet | Siparişin görünen sekiz haneli numarası; kaynak kimliği değildir. | `"48273910"` |
| `payment_fee` | metin · null olabilir | Evet | Ödeme yöntemi ücreti; TRY cinsinden ondalık metin. Kuruş kaybını önlemek için ondalık sayı kütüphanesiyle işleyin. | `"0.00"` |
| `payment_method` | metin · null olabilir | Evet | Ödeme yöntemi. Değerler: cod, bank_transfer, credit_card, split, cash, marketplace. Türkçe karşılıkları: https://developer.siparis.app/referans#odeme-yontemleri. | `"bank_transfer"` |
| `payment_state` | metin · null olabilir | Evet | Ödeme durumu; alınan ve iade edilen paradan hesaplanır, sipariş durumundan ayrıdır. Değerler: none, awaiting, partial, paid, refund_due, refunded, test. Türkçe karşılıkları: https://developer.siparis.app/referans#odeme-durumlari. | `"paid"` |
| `preorder_from` | tarih · null olabilir | Evet | Ön siparişin başlangıç günü; YYYY-MM-DD. | `null` |
| `shipping_total` | metin · null olabilir | Evet | Toplam kargo ücreti; TRY cinsinden ondalık metin. Kuruş kaybını önlemek için ondalık sayı kütüphanesiyle işleyin. | `"0.00"` |
| `source` | metin · null olabilir | Evet | Kaydın kaynağı; api: yeni satış, api_external: başka kanalda kesinleşmiş satış, import: eski siteden bilgi amaçlı aktarım. Panel/AI ve bağlı kanal kaynakları da korunur. | `"panel"` |
| `status` | metin | Evet | Siparişin iş akışındaki durumu; ödeme durumu ayrıca payment_state alanındadır. Değerler: pending, payment_pending, confirmed, processing, shipped, delivered, cancelled, refunded. Türkçe karşılıkları: https://developer.siparis.app/referans#siparis-durumlari. | `"confirmed"` |
| `store` | metin | Evet | Marka kimliği (sto_ ve 32 küçük onaltılık karakter). | `"sto_1234567890abcdef1234567890abcdef"` |
| `subtotal` | metin · null olabilir | Evet | Ürünlerin ara toplamı; TRY cinsinden ondalık metin. Kuruş kaybını önlemek için ondalık sayı kütüphanesiyle işleyin. | `"120.00"` |
| `tax_status` | metin (seçenekler: exempt, standard) | Evet | standard: KDV mükellefi; exempt: vergiden muaf. | `"standard"` |
| `tax_total` | metin · null olabilir | Evet | Toplam vergi; TRY cinsinden ondalık metin. Kuruş kaybını önlemek için ondalık sayı kütüphanesiyle işleyin. | `"20.00"` |
| `total` | metin | Evet | Toplam tutar; TRY cinsinden ondalık metin. Kuruş kaybını önlemek için ondalık sayı kütüphanesiyle işleyin. | `"120.00"` |
| `updated_at` | tarih-saat | Evet | Son değişiklik zamanı; RFC 3339 UTC. | `"2026-10-16T09:00:00Z"` |
| `billing_address` | nesne · null olabilir | Hayır | Fatura adresi; personal_data:read yoksa alan atlanır. |  |
| `billing_address.address_line` | metin · null olabilir | Hayır | Adres satırı; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `billing_address.city` | metin · null olabilir | Hayır | İl; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `billing_address.district` | metin · null olabilir | Hayır | İlçe; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `billing_address.full_name` | metin · null olabilir | Hayır | Ad soyad; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `billing_address.neighborhood` | metin · null olabilir | Hayır | Mahalle; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `billing_address.neighborhood_area` | metin · null olabilir | Hayır | Varsa bağlı köy, semt veya belde; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `billing_address.phone` | metin · null olabilir | Hayır | Telefon; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `billing_address.postal_code` | metin · null olabilir | Hayır | Posta kodu; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `billing_address.village` | true/false · null olabilir | Hayır | Köy adresi işareti; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `currency` | sabit "TRY" | Hayır | Para birimi; v1 tutarları Türk lirasıdır. | `"TRY"` |
| `customer_email` | metin · null olabilir | Hayır | Müşteri e-postası; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `customer_name` | metin · null olabilir | Hayır | Müşteri adı; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `customer_note` | metin · null olabilir | Hayır | Müşterinin sipariş notu; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `customer_phone` | metin · null olabilir | Hayır | Müşteri telefonu; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `invoice` | nesne · null olabilir | Hayır | Fatura alıcı bilgileri; personal_data:read yoksa alan atlanır. |  |
| `invoice.company_name` | metin · null olabilir | Hayır | Fatura unvanı; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `invoice.tax_number` | metin · null olabilir | Hayır | Vergi/kimlik numarası; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `invoice.tax_office` | metin · null olabilir | Hayır | Vergi dairesi; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `lines` | nesne · null olabilir | Hayır | include=lines ile ilk 50 sipariş satırı; devamı /orders/{id}/lines ile alınır. |  |
| `lines.data` | liste: nesne (Line) | Evet | Bu sayfanın görünür kayıtları; boş liste de geçerli bir sayfadır. |  |
| `lines.has_more` | true/false | Evet | Taranacak başka sayfa varsa true; olaylarda boş data ile de true olabilir. | `false` |
| `lines.next_cursor` | metin · null olabilir | Evet | Sonraki sayfa için aynen gönderilecek opak imleç; kaynak listesi bittiyse null. | `null` |
| `note` | metin · null olabilir | Hayır | İç not; internal_notes:read gerekir. Kişisel kaynakta personal_data:read da gerekir. | `"Örnek iç not"` |
| `payments` | nesne · null olabilir | Hayır | include=payments ile ilk 50 tahsilat/iade ve bütün siparişin para özeti; payments:read gerekir. |  |
| `payments.data` | liste: nesne (Payment) | Evet | Bu sayfanın görünür kayıtları; boş liste de geçerli bir sayfadır. |  |
| `payments.has_more` | true/false | Evet | Taranacak başka sayfa varsa true; olaylarda boş data ile de true olabilir. | `false` |
| `payments.next_cursor` | metin · null olabilir | Evet | Sonraki sayfa için aynen gönderilecek opak imleç; kaynak listesi bittiyse null. | `null` |
| `payments.summary` | nesne (MoneySummary) | Evet | Siparişin bütün tahsilat ve iadelerinden hesaplanan para özeti; yalnız bu sayfanın toplamı değildir. |  |
| `returns` | nesne · null olabilir | Hayır | include=returns ile ilk 50 iade; returns:read gerekir. |  |
| `returns.data` | liste: nesne (Return) | Evet | Bu sayfanın görünür kayıtları; boş liste de geçerli bir sayfadır. |  |
| `returns.has_more` | true/false | Evet | Taranacak başka sayfa varsa true; olaylarda boş data ile de true olabilir. | `false` |
| `returns.next_cursor` | metin · null olabilir | Evet | Sonraki sayfa için aynen gönderilecek opak imleç; kaynak listesi bittiyse null. | `null` |
| `shipments` | nesne · null olabilir | Hayır | include=shipments ile ilk 50 gönderi; shipments:read gerekir. |  |
| `shipments.data` | liste: nesne (Shipment) | Evet | Bu sayfanın görünür kayıtları; boş liste de geçerli bir sayfadır. |  |
| `shipments.has_more` | true/false | Evet | Taranacak başka sayfa varsa true; olaylarda boş data ile de true olabilir. | `false` |
| `shipments.next_cursor` | metin · null olabilir | Evet | Sonraki sayfa için aynen gönderilecek opak imleç; kaynak listesi bittiyse null. | `null` |
| `shipping_address` | nesne · null olabilir | Hayır | Teslimat adresi; personal_data:read yoksa alan atlanır. |  |
| `shipping_address.address_line` | metin · null olabilir | Hayır | Adres satırı; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `shipping_address.city` | metin · null olabilir | Hayır | İl; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `shipping_address.district` | metin · null olabilir | Hayır | İlçe; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `shipping_address.full_name` | metin · null olabilir | Hayır | Ad soyad; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `shipping_address.neighborhood` | metin · null olabilir | Hayır | Mahalle; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `shipping_address.neighborhood_area` | metin · null olabilir | Hayır | Varsa bağlı köy, semt veya belde; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `shipping_address.phone` | metin · null olabilir | Hayır | Telefon; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `shipping_address.postal_code` | metin · null olabilir | Hayır | Posta kodu; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |
| `shipping_address.village` | true/false · null olabilir | Hayır | Köy adresi işareti; yalnız personal_data:read kapsamında görünür. Örnek kişisel veri içermez. | `null` |

Bu uca özgü yanıt başlıkları: `ETag` (Kaynağın güçlü sürüm etiketi; If-Match için tırnaklarıyla saklayın.).

## Hatalar

| HTTP | code | Anlamı | Nasıl düzelir? |
| --- | --- | --- | --- |
| 403 | `forbidden` | Mevcut ticari kural bu işlemi yapmanıza izin vermiyor. | Gerekli kapsamları ve siparişin durumunu kontrol edin. |
| 409 | `conflict` | Sipariş veya ödeme bilgisi değişmiş ya da işlem mevcut duruma uygun değil. | Güncel siparişi okuyun, iş kuralını kontrol edip yeni tekrar anahtarıyla deneyin. |
| 400 | `insufficient_stock` | Sipariş için yeterli stok yok. | Miktarı azaltın veya paneldeki bekleyen stok kuralını açıkça allow_waiting=true ile seçin. |
| 400 | `invalid_if_match` | If-Match geçerli bir güçlü ETag değil. | GET kaynak yanıtındaki ETag değerini çift tırnaklarıyla aynen kullanın. |
| 412 | `revision_mismatch` | Kayıt siz okuduktan sonra değişmiş. | Güncel kaydı okuyun; düzeltmeyi yeniden değerlendirip yeni tekrar anahtarıyla gönderin. |
| 409 | `status_mismatch` | Sipariş durumu expected_status ile uyuşmuyor. | Güncel durumu okuyup yeni tekrar anahtarıyla deneyin. |
| 422 | `invalid_patch` | Düzeltilecek alan veya seçenek uygun değil. | Değişmeyecek alanı atlayın; seçeneğin sipariş satırındaki ürüne ait olduğunu ve alan kurallarını kontrol edin. |
| 422 | `duplicate_line` | Aynı sipariş satırı birden çok kez gönderilmiş. | Her lin_ kimliğini yalnız bir kez yazın. |
| 409 | `refund_confirm` | Düzeltme müşteriye para döndürüyor; tutar teyidi gerekiyor. | İade tutarını kontrol edip refund_amount alanıyla ve yeni tekrar anahtarıyla gönderin; money_out:write gerekir. |

Ortak hatalar (anahtar, izin, istek biçimi, hız sınırı, tekrar anahtarı) her uçta aynıdır: [Hata kodları › Ortak hatalar](https://developer.siparis.app/hatalar#ortak-hatalar).
