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

# İrsaliyeler

> Giriş ve çıkış irsaliyelerinin alanları, numaralandırma, Lot/seri no ve sipariş bağlantısı kuralları.

İrsaliye, bir başlık ve bir ya da daha fazla satırdan oluşur. Giriş irsaliyeleri (`WaybillType` 2, mal kabul) ve çıkış irsaliyeleri (`WaybillType` -2, sevk) aynı endpoint'leri kullanır. İrsaliyeler stok hareketi yarattığı için, ürünün stok izleme yöntemine göre bir satır Lot ya da seri no girdileri de taşıyabilir.

| İşlem            | Endpoint                                                 |
| ---------------- | -------------------------------------------------------- |
| Listeleme        | [`GET /waybills`](/tr/v1/waybills/list)                  |
| Detay            | [`GET /waybills/{waybillId}`](/tr/v1/waybills/get)       |
| Oluşturma        | [`POST /waybills`](/tr/v1/waybills/create)               |
| Güncelleme       | [`PUT /waybills/{waybillId}`](/tr/v1/waybills/update)    |
| Kısmi güncelleme | [`PATCH /waybills/{waybillId}`](/tr/v1/waybills/patch)   |
| Silme            | [`DELETE /waybills/{waybillId}`](/tr/v1/waybills/delete) |

<Warning>
  **API tutarları hesaplamaz ve tutarlı olup olmadıklarını denetlemez.** Satır tutarları, indirim tutarları, KDV, ek vergiler, tevkifat, irsaliye toplamları ve ağırlıklı kur ortalaması gönderdiğiniz gibi kaydedilir ([sipariş satırlarıyla](/tr/v1/orders/overview) aynı alanlar). API'nin hesapladığı tek istisna satırın [ana birim miktarıdır](#ana-birim-miktarı); ayrıca bir satırın Lot/seri no girdilerinin toplamının satırın `Quantity`'sine eşit olmasını ister.
</Warning>

## Zorunlu alanlar

* `WaybillType`: `2` giriş (mal kabul), `-2` çıkış (sevk). İrsaliye oluşturulduktan sonra değiştirilemez.
* `WaybillNumber`: şirkette aynı `WaybillType` içinde benzersiz, en fazla 20 karakter. Oluştururken `"Next"` gönderilirse numara otomatik üretilir: giriş irsaliyeleri için **ALİRSNO** serisi; çıkış irsaliyelerinde **SATİRSNO** serisi, ya da şirket e-irsaliye kullanıyorsa şirketin e-irsaliye numaralandırması (sabit bir önek, yıl ve 9 haneli sıra numarası, örn. `EDD2026000000014`). Güncellemede `"Next"` gönderilemez.
* `Date`: irsaliye tarihi. Saat de gönderirseniz irsaliye saati olarak yazılır, göndermezseniz o anki saat kullanılır.
* `CustomerCode`: kullanıcının görebildiği bir cari.
* `CurrencyCode`: irsaliye dövizi.
* `Lines`: en az bir satır.

`DueDays` (vade günü) irsaliyeyle birlikte saklanır. `ShipmentDefinitionCode` (isteğe bağlı) [sevkiyat tanımlarından](/tr/v1/definitions/shipment-definitions/list) gelir.

## Cariden alınan bilgiler

İrsaliyenin adresi, unvanı, vergi numarası ve vergi dairesi **istekte alan olarak yer almaz**. Bunlar, irsaliyenin kaydedildiği anda cariden kopyalanır (carinin fatura adresi varsa o, yoksa ilk adresi) ve cari sonradan değişse bile irsaliyede sabit kalır — bu yüzden yalnızca yanıtlarda görünürler (`Address`, `CustomerTitle`, `TaxNumber`, `TaxOffice`). Güncellemede bu değerler yalnızca `CustomerCode` değiştiyse yeniden hesaplanır; değişmediyse mevcut değerler korunur.

## Satırlar

* `ProductCode` ve `UnitCode` zorunludur. Birim, ürünün kendi birimlerinden biri olmalıdır (ana birimi ya da 2./3. birimi).
* `Quantity` sıfırdan büyük olmalı; `UnitPrice` negatif olamaz.
* Satırın `CurrencyCode` alanı verilmezse irsaliye dövizi kullanılır; `ExchangeRate` satır dövizinin kurudur.
* `Discounts`, satırın indirim oranlarının listesidir, sırasıyla art arda uygulanır.
* `LineGroupName` isteğe bağlıdır, [satır grupları](/tr/v1/definitions/line-groups/list) tanımından gelir.
* `WarehouseName` **zorunludur** ve şirketin [depolarından](/tr/v1/stock/warehouses/list) biri olmalıdır.

### Ana birim miktarı

Satır miktarı (`Quantity`) satırın birimindedir. Yanıttaki `MainUnitQuantity`, aynı miktarın ürünün ana birimi cinsinden karşılığıdır ve tıpkı [sipariş satırlarındaki](/tr/v1/orders/overview#ana-birim-miktarı) gibi API tarafından hesaplanır: `UnitCode` ana birimse miktarın kendisi, değilse birimin çarpanına bölünmüş hali. Çıkış irsaliyesinde kaydedilen değer eksi işaretlidir, girişte artı; yanıttaki `MainUnitQuantity` her zaman pozitiftir.

## Güncellemede satırın kimliği

Siparişten farklı olarak, bir irsaliye satırının Lot hareketleri, seri no girdileri ve sipariş bağlantısı kaydı satırın kendi ID'sine referans verir; bu yüzden "bütün satırları sil, yenilerini yaz" mantığı bu referansları koparır. Bunun yerine **satırların istekte gönderildiği sıra, güncellemede kimliklerini belirler**: istekteki `i`. sıradaki satır, o anda `i`. sırada olan mevcut satırla aynı kabul edilir. Bu satırın Lot/seri no girdileri ve sipariş bağlantısı kaydı onunla birlikte taşınır (silinip yeniden oluşturulmaz, eşleştirilir/güncellenir). Öncekinden daha az satır göndermek sondaki satırları kaldırır, daha fazla göndermek sona yeni satırlar ekler. Yalnızca birkaç alanı değiştirecekseniz satırları her zaman [İrsaliye detayı](/tr/v1/waybills/get)'nın döndürdüğü sırayla gönderin.

## Lot ve seri no takibi

Bir satırda `Lots` mi `SerialNumbers` mi kullanılacağı, ürünün stok tipine göre belirlenir ([Ürün detayı](/tr/v1/products/get) ile okunan `StockType`):

| StockType                             | Takip   | Kullanılan alan      |
| ------------------------------------- | ------- | -------------------- |
| 1, 2                                  | Yok     | İkisi de kullanılmaz |
| 3 (Lot), 4 (FIFO), 6 (LIFO), 7 (FEFO) | Lot     | `Lots`               |
| 5                                     | Seri no | `SerialNumbers`      |

**Lot'lar** (`LotNo`, `Quantity`, `UnitCode`, ve yalnızca giriş irsaliyesinde `SupplierLotNo`/`ExpiryDate`/`Description`):

* **Giriş**, Lot izlenen 4 stok tipinde de aynı şekilde: her girdi yeni bir Lot oluşturur (`LotNo` her zaman sizin tarafınızdan verilir, şirkette benzersizdir) ve ona karşılık gelen bir giriş hareketi yazılır.
* **Çıkış, stok tipi 3 (Lot)**: hangi Lot'tan ne kadar düşüleceğini `LotNo` ve `Quantity` ile siz belirtirsiniz.
* **Çıkış, stok tipi 4/6/7 (FIFO/LIFO/FEFO)**: `Lots` boş bırakılır — API Lot'ları otomatik seçer (FIFO'da en eski önce, FEFO'da son kullanma tarihi en yakın önce, LIFO'da en yeni önce), miktar karşılanana kadar bir lottan diğerine geçerek düşer.
* Bir çıkış işleminde zaten kullanılmış bir Lot kaldırılamaz ya da tüketilen miktarın altına düşürülemez; işlem iptal edilir.

**Seri no'lar** (`SerialNumbers`, düz metin listesi, her birim için bir tane): giriş irsaliyesinde her girdi yeni bir seri no kaydeder (aynı seri no zaten kayıtlı ve çıkışı yapılmamışsa reddedilir); çıkış irsaliyesinde her girdi, çıkışı henüz yapılmamış mevcut bir seri no olmalıdır ve çıkışı yapılmış olarak işaretlenir. Bu irsaliyenin çıkışını yaptığı bir seri no satırdan kaldırılamaz.

## Sipariş bağlantısı

Noyax uygulamasında bir sipariş satırından oluşturulan bir irsaliye satırı, o sipariş satırına bir bağlantı taşır. API bu bağlantıyı kendisi hiç kurmaz, ama gönderdiğiniz bir satır (sırasına göre) mevcut bağlantılı bir satırla eşleştiğinde, satırın miktarının — aynı sipariş satırından diğer irsaliyelerin çekmiş olduğu miktarla birlikte — sipariş satırının miktarını aşmadığını kontrol eder.

## Paylaşım

`SharingCode` irsaliyeyi kimlerin görebileceğini sınırlar: boşsa herkes görür, doluysa kullanıcının [paylaşım kodlarından](/tr/v1/guides/sharing-codes) biri olmalıdır. Kullanıcının göremediği irsaliyeler 404 döner.
