TL;DR
Pembukuan stok barang masuk dan keluar adalah pencatatan semua mutasi barang berdasarkan dokumen resmi, mulai dari surat jalan supplier sampai nota penjualan. Tabelnya minimal punya kolom tanggal, nomor dokumen, kode barang, masuk, keluar, dan saldo. Rekap bulanannya disusun dengan rumus stok akhir = stok awal + masuk - keluar + penyesuaian, dan selisih hasil stok opname dicatat sebagai baris penyesuaian, bukan dengan nimpa angka lama.
Pembukuan stok barang masuk dan keluar adalah pencatatan semua pergerakan barang berdasarkan dokumen resmi, dari surat jalan supplier sampai nota penjualan.
Yang bikin pembukuan stok berantakan biasanya bukan tabelnya. Tapi alurnya: siapa nyatet kapan, dokumen mana yang jadi dasar, dan gimana selisih diselesaikan.
Di bawah ada alur lengkapnya buat barang masuk dan keluar, tabel contoh isian seminggu, cara nyusun rekap bulanan, plus aturan nyatet hasil stok opname.
Pembukuan stok barang masuk dan keluar adalah catatan berurutan yang ngerekam tiap penambahan dan pengurangan barang, dengan saldo yang diperbarui tiap ada mutasi, dan tiap baris punya rujukan ke dokumen sumbernya. Tujuannya dua: tau posisi stok tanpa hitung fisik, dan bisa nelusuri sumber selisih waktu angkanya nggak cocok.
Bedanya sama sekadar nyatet: tiap baris punya nomor dokumen. Tanpa nomor dokumen, catatan kamu nggak bisa dicocokin sama apapun.
Kalau kamu baru mulai dan belum punya sistem sama sekali, mulai dari buku stok barang harian dulu. Artikel ini lanjutannya, buat toko yang udah punya supplier tetap dan transaksinya perlu bisa diaudit.
Aturan mainnya satu: tiap baris di pembukuan harus bisa ditunjuk dokumennya. Kalau nggak ada dokumen, bikin dokumennya.
| Jenis mutasi | Dokumen dasar | Yang bikin |
|---|---|---|
| Barang masuk dari supplier | Surat jalan dan faktur | Supplier |
| Retur dari pelanggan | Bukti retur bernomor | Toko |
| Penjualan | Nota penjualan atau struk kasir | Toko |
| Retur ke supplier | Surat jalan retur | Toko |
| Barang rusak atau hilang | Berita acara, ditandatangani dua orang | Toko |
| Pemakaian sendiri | Bon pemakaian internal | Toko |
| Hasil hitung fisik | Lembar stok opname | Toko |
Baris berita acara itu yang paling sering diremehin. Barang rusak yang dicatat tanpa tanda tangan siapapun bikin kolom itu jadi tempat pembuangan buat semua selisih yang nggak bisa dijelasin.
Langkah 3 dan 4 sering ketuker urutannya. Kalau kamu tanda tangan dulu baru ngitung, posisi tawar kamu waktu ada kekurangan tinggal nol.
Poin nomor 2 yang paling ngaruh ke keputusan bisnis. Kalau barang rusak nyampur sama penjualan, kamu bakal ngira barang itu laku padahal lagi bikin rugi.
Ini contoh isian seminggu di toko sembako. Kolom saldo dihitung per barang, bukan per baris berurutan.
| Tanggal | No. dokumen | Kode | Nama barang | Masuk | Keluar | Saldo | Keterangan |
|---|---|---|---|---|---|---|---|
| 21/07/2025 | SO-0701 | BRS-5 | Beras Pandan Wangi 5 kg | 30 | Saldo awal opname | ||
| 21/07/2025 | SO-0701 | MYK-1 | Minyak goreng 1 L | 48 | Saldo awal opname | ||
| 22/07/2025 | SJ-4471 | BRS-5 | Beras Pandan Wangi 5 kg | 40 | 70 | CV Sumber Tani | |
| 22/07/2025 | NJ-1180 | BRS-5 | Beras Pandan Wangi 5 kg | 9 | 61 | Penjualan, nota 1171-1180 | |
| 23/07/2025 | SJ-4488 | MYK-1 | Minyak goreng 1 L | 72 | 120 | PT Mitra Boga | |
| 23/07/2025 | BA-011 | MYK-1 | Minyak goreng 1 L | 2 | 118 | Kemasan bocor saat bongkar | |
| 23/07/2025 | NJ-1195 | MYK-1 | Minyak goreng 1 L | 17 | 101 | Penjualan, nota 1181-1195 | |
| 24/07/2025 | NJ-1211 | BRS-5 | Beras Pandan Wangi 5 kg | 14 | 47 | Penjualan, nota 1196-1211 | |
| 25/07/2025 | RT-006 | BRS-5 | Beras Pandan Wangi 5 kg | 2 | 49 | Retur pelanggan, karung utuh | |
| 26/07/2025 | BI-003 | MYK-1 | Minyak goreng 1 L | 1 | 100 | Pemakaian dapur toko | |
| 27/07/2025 | SO-0728 | BRS-5 | Beras Pandan Wangi 5 kg | 1 | 48 | Penyesuaian opname, selisih kurang |
Perhatiin baris terakhir. Hitung fisik ngasih 48 sementara catatan bilang 49, dan selisihnya ditulis sebagai baris keluar dengan keterangan jelas. Angka 49 di baris sebelumnya nggak diapa-apain.
Kebiasaan ini yang bikin kamu bisa jawab pertanyaan "berapa kebocoran bulan ini?" tanpa nebak.
Akhir bulan, semua baris mutasi diringkas jadi satu baris per barang. Rumusnya:
Stok akhir = Stok awal + Masuk - Keluar + Penyesuaian
Contoh rekap Juli 2025:
| Kode | Nama barang | Stok awal | Masuk | Keluar | Penyesuaian | Stok akhir |
|---|---|---|---|---|---|---|
| BRS-5 | Beras Pandan Wangi 5 kg | 30 | 60 | 47 | -1 | 42 |
| MYK-1 | Minyak goreng 1 L | 48 | 96 | 103 | -2 | 39 |
| GLA-1 | Gula pasir 1 kg | 25 | 40 | 38 | 0 | 27 |
| TLR-1 | Telur ayam 1 kg | 18 | 72 | 66 | -3 | 21 |
| KCP-1 | Kecap manis 600 ml | 60 | 24 | 31 | 0 | 53 |
Kalau pembukuan kamu udah di spreadsheet, kolom masuk dan keluar di tabel ini nggak diketik manual. Tarik dari sheet mutasi:
Masuk = SUMIFS(tblMutasi[Masuk], tblMutasi[Kode], [@Kode],
tblMutasi[Tanggal], ">=" & $B$1,
tblMutasi[Tanggal], "<=" & $B$2)
Keluar = SUMIFS(tblMutasi[Keluar], tblMutasi[Kode], [@Kode],
tblMutasi[Tanggal], ">=" & $B$1,
tblMutasi[Tanggal], "<=" & $B$2)
Sel B1 diisi tanggal awal periode, B2 tanggal akhir. Ganti dua sel itu, seluruh rekap ngikut. Sintaks lengkap SUMIFS ada di halaman fungsinya, dan versi resminya di dokumentasi Microsoft.
Struktur sheet yang dipakai rumus ini aku jabarin langkah demi langkah di panduan bikin Excel stok barang dari nol.
Dua jenis opname, dua jadwal berbeda:
Cara nyatet hasilnya cuma satu aturan. Selisih ditulis sebagai baris penyesuaian bertanggal, dengan keterangan penyebab kalau ketahuan. Saldo lama nggak pernah ditimpa.
Alasannya bukan soal kerapian. Saldo yang ditimpa bikin kamu kehilangan satu-satunya angka yang bisa ngukur kesehatan pencatatan kamu sendiri. Prinsip yang sama dipakai di pengelolaan kualitas data di mana pun.
Dataset toko_berkah punya 1.204 baris mutasi selama 92 hari buat 58 jenis barang. Setelah dipisah per jenis mutasi, sebarannya kayak gini:
| Jenis mutasi | Jumlah baris | Porsi |
|---|---|---|
| Penjualan | 862 | 71,6% |
| Barang masuk dari supplier | 241 | 20,0% |
| Barang rusak dan kedaluwarsa | 54 | 4,5% |
| Penyesuaian opname | 29 | 2,4% |
| Retur pelanggan | 18 | 1,5% |
Baris barang rusak jumlahnya 54, dan totalnya 213 unit. Dengan harga beli rata-rata Rp 21.400 per unit, itu Rp 4,56 juta dalam tiga bulan. Sekitar Rp 1,5 juta per bulan yang hilang tanpa pernah masuk omzet.
Angka itu nggak akan pernah kelihatan kalau barang rusak dicatat nyampur sama penjualan. Dan yang lebih penting: 31 dari 54 baris itu barang yang sama, telur dan sayur, yang emang perlu diatur ulang jumlah pesanannya.
Pembukuan yang rapi bukan cuma bikin laporan cocok. Dia nunjukin barang mana yang harus dipesan lebih sedikit.
Catatan yang dibikin dari ingatan tiga hari lalu nggak bisa dipercaya. Kalau kasir kelewat sibuk, minimal simpan struk urut dan rekap malamnya.
Baris tanpa nomor dokumen nggak bisa dicocokin sama apapun. Kalau memang belum ada nomornya, tulis "menyusul" biar kelihatan sebagai utang catatan.
Saldo minus artinya ada barang masuk yang belum kecatat. Ini bukan kesalahan sepele, ini tanda ada aliran barang yang lolos dari pembukuan.
Penjualan, rusak, dan pemakaian sendiri punya arti bisnis yang beda jauh. Bedain di kolom keterangan sejak baris pertama.
Ini yang paling merusak. Angkanya jadi kelihatan rapi, tapi kamu kehilangan kemampuan buat ngukur kebocoran.
Satu barang yang ditulis tiga versi bakal jadi tiga baris di rekap. Pakai kode dan validasi data di kolom kode kalau pembukuannya di spreadsheet.
Dicatat, tapi kasih tanda. Tulis nomor dokumen sebagai "menyusul" plus nama pengirimnya, terus taruh baris itu di daftar tunggu. Barang yang masuk gudang tanpa jejak catatan itu sumber selisih yang paling susah ditelusuri. Begitu suratnya datang, ganti keterangannya dengan nomor asli, jangan bikin baris baru.
Di baris penyesuaian tersendiri, dengan tanggal opname dan keterangan penyebabnya. Jangan pernah ngetik ulang angka saldo supaya cocok sama hitungan fisik. Baris penyesuaian bikin kamu bisa ngitung berapa besar kebocoran per bulan, dan itu angka yang jauh lebih berguna daripada saldo yang selalu kelihatan rapi.
Opname penuh cukup sekali sebulan atau sekali tiga bulan, tergantung jumlah jenis barang. Yang lebih kepakai itu opname sebagian tiap minggu: pilih 10 sampai 15 barang paling laris atau paling mahal, hitung fisiknya, cocokin sama catatan. Cara ini nangkep masalah waktu jejaknya masih hangat.
Iya, tetap masuk kolom keluar, tapi keterangannya harus beda dari penjualan. Kalau semua digabung jadi satu jenis "keluar", kamu nggak bisa misahin mana yang jadi omzet dan mana yang jadi kerugian. Banyak toko rugi diam-diam karena barang rusak nyampur di angka penjualan.
Kalau kamu cuma mau tau posisi barang, jumlah unit udah cukup. Harga beli baru perlu kalau kamu mau ngitung nilai persediaan buat laporan keuangan atau mau tau berapa modal yang nyangkut di gudang. Taruh harga beli di sheet master per barang, jangan diketik ulang di tiap baris mutasi.
Mulai dari dua hal yang paling murah dikerjain minggu ini.
Pertama, tambahin kolom nomor dokumen di pembukuan yang udah ada. Isi mundur buat seminggu terakhir aja, biar kebiasaannya kebentuk.
Kedua, pisahin keterangan barang rusak dari penjualan. Sebulan lagi kamu bakal punya angka kerugian yang selama ini nggak pernah kelihatan.
Buat format kartu per barang yang cocok sama jenis usaha kamu, cek lima contoh kartu stok barang. Kalau mau langsung pakai file jadi, ambil template stok barang Excel.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Punya ratusan angka dan mau tau sebarannya masuk ke rentang mana aja? FREQUENCY ngitung distribusi frekuensi sekali jalan, tanpa nulis COUNTIFS berkali-kali.
SUMIFS ribet kalau kriterianya banyak dan sering ganti. Rumus database Excel kayak DSUM baca kriteria dari sel terpisah, jadi kamu tinggal ubah tabel kecil tanpa nyentuh rumus.
DATEDIF ngasih umur bulat, tapi kadang kamu butuh angka desimal kayak 27,6 tahun buat hitung masa kerja atau bunga. YEARFRAC ngasih pecahan tahun dengan presisi.