---
title: "Mikro ERP Kasa Raporu ve Nakit Akış Takibi: Anlık Bakiye SQL Sorgusu"
description: "Mikro ERP'de kasa bakiyesi nasıl sorgulanır? Kasa hareketleri, günlük nakit akışı, kasa bazlı bakiye ve gün sonu raporu SQL sorguları."
date: 2026-04-15
category: mikro-erp
tags: ["mikro-erp", "sql-server", "kasa", "nakit-akis", "bakiye", "finans"]
url: https://mikroerp.dev/blog/mikro-erp-kasa-nakit-akis-raporu-sql/
---

## Sorun: "Kasada Ne Kadar Nakit Var?"

Kasa sorumlusu her gün sonu soruyor: "Kasada ne kadar var? Bugün tahsil edilen ne, ödenen ne?" Mikro'da kasa hareketleri de cari hesap sistemiyle yönetilir.

## Kasa Hareketlerini Filtreleme

Kasa hareketleri `cha_cari_cins = 4` ile filtrelenir:

| `cha_cari_cins` | Açıklama |
|:---:|---|
| 4 | **Kasamız** |
| 0 | Carimiz |
| 2 | Bankamız |

Kasa evrak tipleri:

| Evrak Tipi | Kod | Hareket |
|------------|:---:|:---:|
| Kasa Tahsilat Fişi | 2 | Giriş |
| Kasa Tediye Fişi | 65 | Çıkış |
| Kasa Masraf Fişi | 37 | Çıkış |

> **Kaynak:** [CARI_HESAP_HAREKETLERI](https://apidocs.mikro.com.tr/tablo-alan-adlari/cari_hesap_hareketleri)

## Tüm Kasaların Anlık Bakiyesi

```sql
SELECT 
    H.cha_kod                                      AS [Kasa Kodu],
    K.kas_isim                                     AS [Kasa Adi],
    SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag ELSE 0 END) AS [Toplam Giris],
    SUM(CASE WHEN H.cha_tip = 1 THEN H.cha_meblag ELSE 0 END) AS [Toplam Cikis],
    SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag 
             ELSE -H.cha_meblag END)               AS [Bakiye]
FROM CARI_HESAP_HAREKETLERI H WITH (NOLOCK)
LEFT JOIN KASALAR K WITH (NOLOCK) ON H.cha_kod = K.kas_kod
WHERE H.cha_cari_cins = 4                          -- Kasamiz
  AND H.cha_iptal = 0
GROUP BY H.cha_kod, K.kas_isim
HAVING SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag ELSE -H.cha_meblag END) <> 0
ORDER BY [Bakiye] DESC;
```

## Günlük Kasa Hareketi (Gün Sonu Raporu)

```sql
SELECT 
    CONVERT(VARCHAR(10), H.cha_tarihi, 104)        AS [Tarih],
    SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag ELSE 0 END) AS [Tahsilat],
    SUM(CASE WHEN H.cha_tip = 1 THEN H.cha_meblag ELSE 0 END) AS [Tediye],
    SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag 
             ELSE -H.cha_meblag END)               AS [Net],
    SUM(SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag 
                 ELSE -H.cha_meblag END))
        OVER (ORDER BY H.cha_tarihi 
              ROWS UNBOUNDED PRECEDING)             AS [Bakiye]
FROM CARI_HESAP_HAREKETLERI H WITH (NOLOCK)
WHERE H.cha_kod = 'K.01'                             -- Kasa kodu (isletmenize gore degistirin)
  AND H.cha_cari_cins = 4
  AND H.cha_iptal = 0
  AND H.cha_tarihi >= '2026-01-01'
GROUP BY H.cha_tarihi
ORDER BY H.cha_tarihi;
```

## Bugünün Kasa Detayı

```sql
SELECT 
    CONVERT(VARCHAR(8), H.cha_create_date, 108)    AS [Saat],
    CASE H.cha_evrak_tip
        WHEN 2  THEN 'Kasa Tahsilat'
        WHEN 65 THEN 'Kasa Tediye'
        WHEN 37 THEN 'Kasa Masraf'
        WHEN 5  THEN 'Çek Tahsilat'
        ELSE 'Tip: ' + CAST(H.cha_evrak_tip AS VARCHAR)
    END                                             AS [İşlem],
    H.cha_aciklama                                  AS [Açıklama],
    H.cha_kod                                       AS [Karşı Taraf],
    CASE WHEN H.cha_tip = 0 THEN H.cha_meblag ELSE 0 END AS [Giriş],
    CASE WHEN H.cha_tip = 1 THEN H.cha_meblag ELSE 0 END AS [Çıkış]
FROM CARI_HESAP_HAREKETLERI H WITH (NOLOCK)
WHERE H.cha_kasa_hizmet = 4                        -- Kasa tarafı
  AND H.cha_kasa_hizkod = 'K.01'                    -- Kasa kodu (isletmenize gore degistirin)
  AND H.cha_iptal = 0
  AND H.cha_tarihi = CAST(GETDATE() AS DATE)       -- Bugün
ORDER BY H.cha_create_date;
```

## Toplam Nakit Pozisyonu (Kasa + Banka)

Tüm kasa ve banka bakiyelerini birleştiren özet:

```sql
SELECT 
    CASE H.cha_cari_cins
        WHEN 2 THEN 'Banka'
        WHEN 4 THEN 'Kasa'
    END                                             AS [Tur],
    H.cha_kod                                       AS [Hesap Kodu],
    ISNULL(B.ban_ismi, K.kas_isim)                  AS [Hesap Adi],
    SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag 
             ELSE -H.cha_meblag END)                AS [Bakiye]
FROM CARI_HESAP_HAREKETLERI H WITH (NOLOCK)
LEFT JOIN BANKALAR B WITH (NOLOCK) ON H.cha_kod = B.ban_kod AND H.cha_cari_cins = 2
LEFT JOIN KASALAR K WITH (NOLOCK) ON H.cha_kod = K.kas_kod AND H.cha_cari_cins = 4
WHERE H.cha_cari_cins IN (2, 4)                    -- Banka + Kasa
  AND H.cha_iptal = 0
GROUP BY H.cha_cari_cins, H.cha_kod, B.ban_ismi, K.kas_isim
HAVING SUM(CASE WHEN H.cha_tip = 0 THEN H.cha_meblag ELSE -H.cha_meblag END) <> 0
ORDER BY H.cha_cari_cins, [Bakiye] DESC;
```

## Dikkat Edilecekler

1. **Kasa kodu**: Mikro'da kasalar genellikle `400.xxx` aralığında tanımlanır.
2. **Vardiya bazlı**: Perakende satış yapılıyorsa `cha_vardiya_no` ile vardiya bazlı rapor çıkarılabilir.
3. **Kasa sayımı**: SQL bakiyesi ile fiziksel kasa sayımı tutmuyor mu? Sayım farkı kaydı olup olmadığını kontrol edin.

## İlgili Yazılar

- [Banka Hesap Bakiye](/blog/mikro-erp-banka-hesap-bakiye-sql/) — Banka hareketleri
- [Çek/Senet Vade Takibi](/blog/mikro-erp-cek-senet-vade-takip-sql/) — Nakit akış planı
- [Cari Ekstre Raporu](/blog/mikro-erp-cari-ekstre-raporu-sql/) — Müşteri hesap özeti
- [Cari Risk Raporu](/blog/mikro-erp-cari-risk-raporu-sql/) — Tahsilat riski

---

*Bu rehber [CARI_HESAP_HAREKETLERI](https://apidocs.mikro.com.tr/tablo-alan-adlari/cari_hesap_hareketleri) | [KASALAR](https://apidocs.mikro.com.tr/tablo-alan-adlari/kasalar) | [BANKALAR](https://apidocs.mikro.com.tr/tablo-alan-adlari/bankalar) tablo yapılarına dayanarak hazırlanmıştır.*