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

# Muhasebe veri kuralları

> Cari, kasa, e-belgesiz alış-satış ve ödemede tutar, kur, vergi, sürüm ve tekrar kuralları.

Muhasebe işlemleri `/accounting/contacts`, `/accounting/cash-accounts`, `/accounting/invoices` ve `/accounting/payments` kaynaklarında yürütülür. İstekleri [işlem referanslarından](https://docs.muhasip.pro/api-reference/muhasebe-secenekleri/accounting-accounting-options-detail.md) seçin.

## İzinleri hazırlayın

| Kaynak | Okuma | Yazma |
| - | - | - |
| Cari | `muhasip:contacts:read` | `muhasip:contacts:write` |
| Kasa, açılış ve transfer | `muhasip:cash:read` | `muhasip:cash:write` |
| E-belgesiz alış-satış | `muhasip:transactions:read` | `muhasip:transactions:write` |
| Tahsilat, ödeme ve mahsup | `muhasip:payments:read` | `muhasip:payments:write` |

Bu dört kaynak için açık izin gerekir. Genel erişim veya yönetici yetkisi bu izinlerin yerine geçmez. Okuma ve yazma ayrıdır; belge hesaplama çağrısı `transactions:read` kullanır. İşlem makbuzunu okumak için ilgili modülün `read` veya `write` izni yeterlidir.

`GET /accounting/options` bu modüllerden herhangi birinde açık `read`/`write` izniyle kullanılabilir. Para birimi ve birim kataloğu ile KDV hesaplama sınırlarını döndürür. `cash` veya `payments` izni varsa aktif nakit/banka hesaplarının güvenli, sayfalı listesi de gelir. Hesap yetkisi olmayan anahtarda bu liste boştur.

## İstek alanları

* Kimlikler 24 karakterli kayıt kimliğidir. İlişkili cari, hesap, ürün, depo ve belge aynı firmaya ait olmalıdır. Bulunmayan veya bu kaynakta kullanılamayan kimlik `404` döndürür.
* Belirtilmeyen alanları varsayılanlarıyla değerlendirin. Bilinmeyen alanlar kabul edilmez; `companyId`, `companiesId`, kullanıcı kimliği, hesaplanan toplam veya sistem durumu gönderilmez.
* `PATCH` yalnız gönderilen alanları değiştirir. Belge `PUT` çağrısı **tam gövdedir**; atlanan isteğe bağlı alanlar varsayılanlarına döner.
* Tarihler `YYYY-MM-DD` biçimindedir. `from` ve `to` günleri dahildir. Belge vadesi belge tarihinden önce olamaz. Saat ve saat dilimi göndermeyin.
* Arşivleme hareket silmez ve bakiye sıfırlamaz. Yeni mali işlemde kullanılan kartlar aktif olmalıdır. Varsayılan kartlar değişiklik, arşiv ve silmeye karşı korunur.

## Tutar ve kur

| Değer | Hassasiyet ve sınır |
| - | - |
| Para tutarı | En fazla 2 ondalık; 0–999999999.99 |
| Ödeme, transfer ve açılış | Sıfırdan büyük; TRY karşılığı en az 0,01 |
| Miktar | Sıfırdan büyük; en fazla 6 ondalık; üst sınır 999999.999999 |
| KDV hariç birim fiyat | 0–999999999.999999; en fazla 6 ondalık |
| Kur | Sıfırdan büyük; en fazla 6 ondalık; üst sınır 999999.999999 |
| İndirim, KDV ve KDV tevkifatı oranı | 0–100; en fazla 4 ondalık |

Ondalıkları sayı veya noktalı metin olarak gönderin: `"1234.50"` geçerlidir. Virgül, binlik ayırıcı, negatif girdi, üstel gösterim ve fazla basamak reddedilir. Hesaplanan belge ve TRY tutarları da tutar sınırı içinde kalmalıdır. Cevaplar sayıdır; son sıfırlar korunmayabilir.

`exchangeRate`, **1 birim işlem para biriminin TRY karşılığıdır**. TRY için `1` kullanılır; diğer para birimlerinde açık pozitif kur gerekir. Güncel kur otomatik alınmaz. Para birimlerini `GET /accounting/options` ile okuyun.

Para tutarları kuruş hassasiyetinde, yarım ve üzeri yukarı yuvarlanır. Hesaplama sırası:

1. Miktar × KDV hariç birim fiyat, 2 basamağa yuvarlanır.
2. Satır indirimi düşülür. Aynı satırda `discountAmount` ve `discountPercent` birlikte gönderilmez.
3. Belge indirimi satırların kalan matrahına orantılı dağıtılır. Artan kuruşlar en büyük kesir payına, eşitlikte satır sırasına verilir.
4. Her satırın KDV’si kalan matrah üzerinden hesaplanıp 2 basamağa yuvarlanır.
5. `withholdingPercent` varsa KDV tutarına uygulanır; kesilen KDV ödenecek tutardan düşer.
6. Ödenecek tutar, satır sonuçlarının toplamıdır. TRY karşılığı bu tutar × kayıtlı kur ile 2 basamağa yuvarlanır.

Örnek: `2 × 100`, `%10` satır indirimi ve `%20` KDV sonucunda matrah `180`, KDV `36`, ödenecek tutar `216` olur. Bu KDV’nin `%50` tevkifatı varsa kesilen tutar `18`, ödenecek tutar `198` olur. Bu oranlar hesaplama örneğidir; kullanılacak vergi oranını işleminize göre belirleyin.

KDV ve KDV tutarından tevkifat desteklenir. Diğer vergi türlerini, özel matrahı, fiyatın KDV dahil olduğunu belirten alanları veya dışarıdan hesaplanmış toplamları göndermeyin. Birim fiyat **KDV hariçtir**.

## Bakiyeleri okuyun

`balances` her para birimini ayrı gösterir. `baseCurrencyCode=TRY`, `baseBalance` ise kayıtlı kurlarla hesaplanan karşılıktır. USD ve EUR bakiyelerini doğrudan toplamayın.

| Hareket | Cari etkisi | Kasa etkisi |
| - | - | - |
| Satış | Alacağı artırır | Ödeme oluşturulmadıkça etkilemez |
| Alış | Borcu artırır | Ödeme oluşturulmadıkça etkilemez |
| `collection` tahsilat | Alacağı azaltır | Girişi artırır |
| `disbursement` verilen ödeme | Borcu azaltır | Çıkışı artırır |
| Kasa transferi | Etkilemez | Kaynağı azaltır, hedefi artırır |

Caride pozitif bakiye alacak, negatif bakiye borçtur. Kasada girişler pozitif, çıkışlar negatiftir. Bakiye eksiye düşebilir; bu uçlar kullanılabilir banka bakiyesi veya fiziksel nakit yeterliliği garantisi vermez.

Ekstrede `opening`, `from` öncesini; `closing`, `to` gününün sonuna kadar olan bütün hareketleri içerir. Bu alanlar yalnız dönen sayfanın toplamı değildir. `signedAmount` yerel para, `baseAmount` işaretli TRY etkisidir. Teklifler cari bakiyesine katılmaz; yalnız arşivlemek gerçekleşmiş mali hareketin etkisini kaldırmaz.

## Sürüm ve güvenli tekrar

Bu kaynaklardaki her yazmada `Idempotency-Key` zorunludur. Aynı firma ve işlem türünde aynı anahtar farklı kimlik, gövde, sorgu veya `If-Match` ile kullanılırsa `409 IDEMPOTENCY_PAYLOAD_CONFLICT` döner. Anahtarlarınızı sisteminize özel iş referanslarıyla üretin ve kalıcı saklayın; kişisel veri koymayın.

Düzenleme, silme, arşiv, geri çıkarma ve iptalde kayıt sürümü de gerekir:

```http theme={null}
Idempotency-Key: ORNEK-CARI-DUZELTME-001
If-Match: "0"
```

`If-Match` kayıttan okuduğunuz `version` değeridir. Eksik/bozuk başlık `428 RECORD_VERSION_REQUIRED`, eski sürüm `409 RECORD_CHANGED` üretir. Başarılı düzenlemede yeni sürümü saklayın. Kasa açılışı oluştururken kasa kartının; açılış iptalinde açılış hareketinin; transfer iptalinde `source` hareketinin sürümü kullanılır.

Başarılı tekrar **200**, `replayed:true` ve sonuç kimlikleri döndürür. İlk çağrının `result` ayrıntısı tekrarlanmaz; kimlikle kaydı veya ekstreyi okuyun. Geçerli bir sonraki düzenleme için yeni iş anahtarı ve güncel sürüm kullanılır.

İstek yazma başlamadan reddedilmişse makbuz `failed_before_dispatch` olabilir. **Aynı içerik** yalnız hata giderildikten ve sonuç kontrol edildikten sonra aynı anahtarla tekrar değerlendirilebilir. Gövdeyi veya sürümü düzeltiyorsanız, önceki isteğin kayıt değiştirmediğini doğrulayıp yeni iş niyeti için farklı anahtar kullanın.

`409 OPERATION_TARGET_LOCKED`, `502`, `503` veya bağlantı kesilmesinde [işlem takibini](https://docs.muhasip.pro/rehberler/islem-takibi.md) izleyin. Birden fazla kayıt içeren yazmada kısmi sonuç olabilir; otomatik tekrar, süreye göre kilit açma veya tüm kayıtlar için tek atomik işlem garantisi yoktur. Belirsiz işlem çözülene kadar aynı firmadaki diğer mali yazmalar da `409` alabilir.

## Sayfalama

Yeni liste ve ekstrelerde `page=1`, `limit=25` varsayılandır; `limit` üst sınırı 100, `page` üst sınırı 100000’dir. Liste sırası tarih/kimlik azalan, ekstre sırası tarih/kimlik artandır. Eşzamanlı ekleme/düzeltmeler sayfaları etkileyebilir; sabit bir anlık görüntü garantisi yoktur.

[Cari akışı](https://docs.muhasip.pro/rehberler/cari-entegrasyonu.md) · [Kasa akışı](https://docs.muhasip.pro/rehberler/kasa-entegrasyonu.md) · [Alış-satış](https://docs.muhasip.pro/rehberler/alis-satis-entegrasyonu.md) · [Ödeme ve mahsup](https://docs.muhasip.pro/rehberler/odeme-ve-mahsuplasma.md)

## Mahsuplaşmada yuvarlama sınırı

Mahsuplaşma hem belge para birimindeki açık tutarı hem TRY karşılığını aşamaz. Yuvarlama nedeniyle yalnız birinin kapanacağı dağıtım `409 ALLOCATION_ROUNDING_MISMATCH` ile reddedilir. Örneğin 1,00 döviz tutarlı, kuru 1,005 olan belgenin TRY toplamı 1,01’dir; çok sayıda 0,01 tutarlı ödeme kendi yuvarlamalarıyla farklı TRY toplamı oluşturabilir. Farkı fazla tahsilatla kapatmayın; mevcut ödeme dağılımlarını kontrol edip gerektiğinde kontrollü iptal ve toplu yeni ödeme kullanın.


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