Laporan Penjualan Kasir: Rekap Shift dan Selisih Kas di Spreadsheet
TL;DR
Laporan penjualan kasir punya dua bagian: rekap transaksi per shift dan rekonsiliasi kas fisik terhadap catatan sistem. Selisih kas dihitung dari modal awal ditambah penjualan tunai dikurangi pengeluaran dan setoran, lalu dibandingin sama uang yang beneran ada di laci. Pembayaran non tunai seperti QRIS dan kartu dicocokin terpisah lewat mutasi rekening, jangan dicampur ke hitungan kas fisik.
Laporan penjualan kasir punya dua bagian: rekap transaksi per shift, dan rekonsiliasi uang fisik di laci terhadap catatan sistem.
Bagian kedua yang paling sering dilewatin. Padahal di situ letak masalah yang paling mahal.
Selisih Rp 12.000 di satu shift kelihatan sepele. Tapi kalau muncul 21 kali dalam sebulan dan hampir semuanya di jam yang sama, itu bukan kesialan.
Apa isi laporan penjualan kasir?
Laporan kasir minimal berisi lima hal: total penjualan per shift, pecahan per metode bayar, modal awal laci, pengeluaran kas selama shift, dan hasil hitung uang fisik saat serah terima. Dari lima angka itu, selisih kas bisa dihitung otomatis tanpa perlu ditulis manual sama kasirnya.
Yang sering ketinggalan adalah pemisahan metode bayar. Tanpa itu, kamu nggak bisa bedain uang yang hilang dari uang yang memang nggak pernah masuk laci.
Gimana struktur sheetnya?
Tiga sheet, dan pemisahannya bukan soal rapi-rapian. Ini yang bikin rekap bulan depan tinggal paste.
| Sheet | Isinya | Diisi siapa |
|---|---|---|
| transaksi | Satu baris satu transaksi | Sistem kasir atau input harian |
| shift | Satu baris satu shift, berisi modal dan hasil hitung uang | Kasir saat serah terima |
| rekap | Ringkasan harian dan bulanan | Rumus, nggak diketik manual |
Sheet transaksi kolomnya:
tanggal | jam | id_shift | kasir | id_transaksi
| metode | total | diskon | keterangan
Sheet shift kolomnya:
id_shift | tanggal | nama_shift | kasir | jam_mulai | jam_selesai
| modal_awal | pengeluaran_kas | setoran_tengah | kas_fisik
Kolom id_shift yang nyambungin dua sheet. Formatnya bebas asal konsisten, misalnya 2025-06-14-M buat shift malam tanggal 14 Juni.
Gimana cara ngitung selisih kas?
Selisih kas adalah hasil hitung uang fisik dikurangi kas yang seharusnya ada. Kas seharusnya dihitung dari modal awal ditambah penjualan tunai, lalu dikurangi pengeluaran kas dan setoran tengah shift. Hasil negatif berarti kurang, hasil positif berarti lebih.
kas_seharusnya = modal_awal
+ penjualan_tunai
- pengeluaran_kas
- setoran_tengah
selisih = kas_fisik - kas_seharusnya
Di sheet shift, tambahin tiga kolom hitung:
penjualan_tunai:
=SUMIFS(tbl_transaksi[total], tbl_transaksi[id_shift], [@id_shift],
tbl_transaksi[metode], "tunai")
kas_seharusnya:
=[@modal_awal] + [@penjualan_tunai] - [@pengeluaran_kas] - [@setoran_tengah]
selisih:
=[@kas_fisik] - [@kas_seharusnya]
Penjelasan tiap argumen SUMIFS ada di halaman fungsi SUMIFS, dan versi resminya di dokumentasi Microsoft.
Aturan penting: QRIS, kartu debit, dan e-wallet jangan dimasukin ke kas fisik. Uangnya nggak ada di laci. Cocokin terpisah lewat mutasi rekening, biasanya sehari setelah transaksi. Konsepnya ada di glosarium rekonsiliasi data.
Rumus rekap per shift dan per kasir
Di sheet rekap, empat rumus ini cukup buat laporan harian.
Total penjualan per shift:
=SUMIFS(tbl_transaksi[total], tbl_transaksi[id_shift], A2)
Jumlah transaksi per shift:
=COUNTIFS(tbl_transaksi[id_shift], A2)
Rata-rata nilai transaksi:
=B2/C2
Total selisih per kasir sebulan:
=SUMIFS(tbl_shift[selisih], tbl_shift[kasir], A2)
Rumus COUNTIFS-nya dijelasin di halaman fungsi COUNTIFS.
Buat lihat pola per jam dan per kasir sekaligus, pivot table lebih cepat dari rumus. Susun barisnya nama shift, kolomnya nama kasir, nilainya jumlah selisih. Caranya ada di panduan pivot table Excel.
Berapa selisih kas yang masih wajar?
Nggak ada standar baku, tapi dua pendekatan ini yang umum dipakai.
| Pendekatan | Contoh batas | Cocok buat |
|---|---|---|
| Nilai tetap per shift | Rp 5.000 sampai Rp 10.000 | Warung dan toko kecil |
| Persentase penjualan tunai | 0,1% dari penjualan tunai shift | Toko dengan omzet tunai besar |
Yang lebih penting dari angkanya: catat semua selisih, sekecil apa pun. Selisih Rp 2.000 yang muncul tiap hari di jam yang sama jauh lebih informatif dari selisih Rp 50.000 yang cuma sekali.
Tambahin kolom status biar gampang disaring:
=IF(ABS([@selisih])<=5000, "Wajar", IF([@selisih]<0, "Kurang", "Lebih"))
Contoh kasus: toko_berkah cabang Bekasi Timur, Juni 2025
Aku pakai dataset toko_berkah. Satu cabang, 30 hari, 3 shift per hari, total 90 shift.
| Metode bayar | Nilai | Porsi |
|---|---|---|
| Tunai | Rp 193.640.000 | 47% |
| QRIS | Rp 156.560.000 | 38% |
| Kartu debit | Rp 61.800.000 | 15% |
| Total penjualan | Rp 412.000.000 | 100% |
Sekarang bagian selisih kasnya:
| Status | Jumlah shift | Total nilai |
|---|---|---|
| Pas atau dalam toleransi | 62 | - |
| Kurang | 21 | Rp 578.000 |
| Lebih | 7 | Rp 92.000 |
| Selisih bersih | 28 | minus Rp 486.000 |
Rp 486.000 sebulan itu 0,25 persen dari penjualan tunai. Kecil, dan gampang diabaikan.
Tapi begitu dipecah per shift, polanya muncul:
Shift pagi (07.00-12.00) : 1 shift kurang, Rp 38.000
Shift siang (12.00-17.00) : 2 shift kurang, Rp 128.000
Shift malam (17.00-22.00) : 18 shift kurang, Rp 412.000
Shift malam nyumbang 71 persen dari total nilai kurang, dan 18 dari 21 kejadian.
Setelah ditelusuri, penyebabnya bukan uang hilang. Pecahan Rp 500 dan Rp 1.000 habis menjelang malam, jadi kasir sering bulatin kembalian ke bawah dan nombokin sendiri dari laci.
Perbaikannya murah: nambah pecahan kecil di modal awal shift malam dari Rp 200.000 jadi Rp 350.000. Nggak ada yang perlu ditegur, nggak ada yang perlu dipotong gajinya.
Ini yang bikin rekap per shift jauh lebih berguna dari rekap harian. Kalau ketiga shift digabung jadi satu angka per hari, selisih pagi dan malam saling menghapus, dan polanya nggak pernah ketahuan.
Kesalahan umum bikin laporan penjualan kasir
1. Nyampur non tunai ke kas fisik. QRIS dan kartu nggak masuk laci. Nyampurnya bikin selisihmu kelihatan puluhan juta padahal nggak ada yang hilang.
2. Rekap harian doang. Selisih kurang di malam dan lebih di pagi saling menghapus. Totalnya nol, masalahnya tetap jalan.
3. Selisih diketik manual sama kasir. Biarin rumus yang ngitung. Angka yang diketik tangan cenderung jadi nol semua.
4. Nggak nyatet modal awal. Tanpa angka ini, kas seharusnya nggak bisa dihitung. Modal awal wajib ditulis sebelum shift mulai, bukan sesudah.
5. Langsung potong gaji kasir. Sebelum penyebabnya diperiksa, ini bikin kasir nutupin selisih pakai uang sendiri. Datamu jadi rapi palsu dan masalah aslinya ngumpet.
6. Nggak nyatet pengeluaran kas kecil. Beli galon dan bayar parkir sering diambil dari laci tanpa nota. Sediain kolomnya, kalau nggak, itu bakal muncul sebagai selisih misterius.
FAQ
Berapa selisih kas yang masih dianggap wajar?
Banyak toko kecil pakai batas tetap sekitar Rp 5.000 sampai Rp 10.000 per shift, dan itu masuk akal buat usaha yang penjualan tunai per shiftnya di bawah dua juta. Toko yang lebih besar biasanya pakai persentase, misalnya 0,1 persen dari penjualan tunai. Yang lebih penting dari angkanya, catat semua selisih walaupun kecil. Pola berulang lebih informatif daripada nilai sekali kejadian.
Kenapa selisih kas nggak boleh langsung dipotong dari gaji kasir?
Karena kamu belum tau penyebabnya. Selisih bisa datang dari uang kembalian yang dibulatkan, transaksi yang salah input, retur yang nggak dicatat, atau modal awal yang beda dari yang tertulis. Motong gaji sebelum diperiksa bikin kasir cenderung nutupin selisih pakai uang sendiri, dan datamu jadi rapi palsu. Periksa dulu polanya, baru tentukan aturannya.
Pembayaran QRIS dan kartu dicatat di mana?
Catat sebagai penjualan di sheet transaksi, tapi jangan masukin ke hitungan kas fisik. Uangnya nggak ada di laci, jadi kalau kamu campur, selisihmu bakal keliatan besar padahal nggak ada yang hilang. Cocokin angka non tunai secara terpisah lewat mutasi rekening atau laporan penyelesaian dari penyedia pembayaran, biasanya sehari setelah transaksi.
Laporan kasir sebaiknya dibuat per shift atau per hari?
Per shift. Rekap harian nutupin masalahnya, karena selisih kurang di satu shift bisa saling menghapus dengan selisih lebih di shift lain, dan totalnya kelihatan nol. Begitu kamu pecah per shift, pola per orang dan per jam langsung kelihatan. Rekap harian tetap dibikin, tapi sebagai penjumlahan dari shift, bukan sebagai satu-satunya catatan.
Perlu aplikasi kasir atau cukup spreadsheet?
Spreadsheet cukup selama transaksimu di bawah sekitar dua ratus per hari dan kasirnya nggak lebih dari dua orang per shift. Di atas itu, input manual mulai jadi sumber kesalahan sendiri. Tanda paling jelas kamu harus pindah ke aplikasi kasir adalah waktu rekap manual tiap malam udah makan lebih dari dua puluh menit, atau selisih mulai muncul gara-gara salah ketik, bukan gara-gara uang.
Penutup
Tiga hal yang bikin laporan kasir kamu kepakai:
- Pisahin kas fisik dari non tunai. Ini aturan nomor satu.
- Rekap per shift, bukan per hari. Di toko_berkah, itu yang bikin pola shift malam ketahuan.
- Biarin rumus yang ngitung selisih. Kasir cuma ngisi hasil hitung uang.
Coba ambil data seminggu terakhir, pecah selisihnya per shift, lalu urutin dari yang paling sering kurang. Kalau satu shift muncul terus di atas, kamu udah nemu tempat yang perlu diperiksa duluan.
Kerangka laporan penjualan yang lebih lengkap, termasuk sheet ringkasan buat atasan, ada di template laporan penjualan Excel.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
XLOOKUP Google Sheets: Cara Pakai dan Contohnya (2026)
XLOOKUP nyari nilai dan bisa ke kiri atau kanan, plus punya nilai default kalau nggak ketemu. Ini pengganti VLOOKUP yang lebih ringkas.
INDEX MATCH Google Sheets: Lookup Lebih Fleksibel dari VLOOKUP (2026)
INDEX MATCH gabung dua fungsi buat lookup yang bisa nyari ke kiri dan nggak gampang rusak. Ini alasan banyak analis pindah dari VLOOKUP.
SUMPRODUCT Google Sheets: Hitung Berbobot Tanpa Ribet (2026)
SUMPRODUCT ngaliin dua kolom atau lebih baris per baris, terus jumlahin hasilnya. Cocok buat total qty kali harga sampai hitungan bersyarat.