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

# Banka Havale Fişleri

> Gelen/Giden EFT-Havale fişlerinin alanları, kur hesabı, cari hareket farkı ve kapatılmış hareket kuralları.

Banka havale fişi, bir banka hesabından gelen ya da giden parayı bir ya da daha fazla cariye yansıtır. Gelen (`TransferType` 1) ve giden (`TransferType` 2) havale aynı endpoint'leri kullanır.

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

## Zorunlu alanlar

* `TransferType`: `1` gelen, `2` giden. Fiş oluşturulduktan sonra değiştirilemez.
* `VoucherNumber`: şirkette **bütün banka fişi tipleri arasında** (yalnızca havale değil) benzersiz, en fazla 20 karakter. `"Next"` gönderilirse `"BANKAFİŞNO"` serisinden otomatik üretilir. Güncellemede `"Next"` gönderilemez.
* `Date`: fiş tarihi. Saat de gönderilirse fiş saati olarak yazılır, gönderilmezse o anki saat kullanılır.
* `BankAccountCode`: [banka hesaplarından](/tr/v1/finance/bank-accounts/list) biri. Fişteki **bütün satırlar bu hesaba** yazılır.
* `Lines`: en az bir satır.

`Description` ve `SharingCode` isteğe bağlıdır; `SharingCode` boşsa fiş herkese açık, doluysa kullanıcının [paylaşım kodlarından](/tr/v1/guides/sharing-codes) biri olmalıdır.

<Warning>
  Diğer modüllerden farklı olarak **kur değeri entegratörden gelen bir alan üzerinden API tarafından hesaplanır**: her satırın kendi `ExchangeRate`'i verilir, fişin kur değeri satırların tutar ağırlıklı ortalamasıdır (aşağıda). Tutarların kendisi (satır `Amount`) yine entegratörden gelir ve API bunu değiştirmez.
</Warning>

## Satırlar

Her satır bir cariye yapılan/cariden gelen tutarı taşır:

* `CustomerCode`: zorunlu, [görülebilen bir cari](/tr/v1/customers/overview).
* `Amount`: zorunlu, banka hesabının kendi dövizinde, 0'dan büyük olmalı.
* `ExchangeRate`: banka hesabının dövizi şirketin varsayılan dövizinden **farklıysa zorunlu** (ve 0'dan büyük olmalı); aynıysa gönderilmese de `1` kabul edilir.
* `Description`: isteğe bağlı, satıra özel açıklama.

### Fişin kur değeri

Yanıttaki `ExchangeRate` (fiş seviyesinde), satırların tutar ağırlıklı ortalamasıdır:

```
ExchangeRate = Σ(Satır.Amount × Satır.ExchangeRate) / Σ(Satır.Amount)
```

6 ondalık hassasiyetle hesaplanır ve kaydedilir.

### Cari hareket farkı

Varsayılan olarak carinin kendi hesabına, satırdakiyle **aynı** tutar/döviz/kur ile ters yönde (borç/alacak) bir kayıt düşülür. İsterseniz bunu `CustomerAmount`, `CustomerCurrencyCode` ve `CustomerExchangeRate` ile **farklı bir dövizde/kurda** yansıtabilirsiniz — üçü birlikte gönderilir (biri gönderilip diğerleri boş bırakılamaz). Tek şart: iki tarafın da varsayılan dövizdeki karşılığı eşit olmalıdır:

```
CustomerAmount × CustomerExchangeRate = Amount × ExchangeRate
```

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

İrsaliye satırlarıyla aynı mantık geçerlidir: bir satırın cari hareketi, kapatılmış hareket ve ödeme planı kontrolleri tarafından referans verilir. **İstekteki satır sırası, güncellemede satırın kimliğini belirler**: `i`. sıradaki satır, mevcut `i`. sıradaki satırla aynı kabul edilir ve yerinde güncellenir; daha kısa bir liste sondaki satırları kaldırır, daha uzun bir liste sona yeni satırlar ekler.

## Kapatılmış hareket ve ödeme planı kilidi

Bir satırın carisi, tutarı, dövizi ya da kuru **değişmiyorsa** kilit yoktur. Değişiyorsa ve o satırın mevcut cari hareketi:

* bir tahsilat/ödeme ile **kapatılmışsa**, işlem reddedilir (`8207`);
* için bir **ödeme planı** oluşturulmuşsa, önce planın silinmesi istenir (`8208`).

Silme (`DELETE`) aynı iki kontrolü **her satır için** koşulsuz uygular (satır kaldırılmış sayılır); herhangi bir satır takılırsa fişin tamamı silinmez.

## Muhasebeleşmiş fiş

`IsPosted` `true` ise (muhasebe fişine bağlanmışsa) fiş **güncellenemez ve silinemez** (`8109`).
