Laporan Penjualan: Struktur, Metrik Wajib, dan Cara Membacanya
TL;DR
Laporan penjualan adalah rekap transaksi yang disusun supaya omzet, jumlah transaksi, dan margin bisa dibaca per periode, produk, atau kanal. Struktur minimalnya satu baris per item transaksi dengan kolom tanggal, kode produk, jumlah, harga jual, dan harga pokok. Enam metrik yang wajib ada: omzet, jumlah transaksi, nilai transaksi rata-rata, unit terjual, margin kotor, dan pertumbuhan dibanding periode sebelumnya.
Laporan penjualan adalah rekap transaksi yang disusun supaya omzet, jumlah transaksi, dan margin bisa dibaca per periode, per produk, atau per kanal.
Masalahnya, kebanyakan laporan penjualan di UMKM cuma berisi tanggal dan total uang masuk. Bentuk kayak gitu bisa jawab satu pertanyaan: berapa yang masuk hari ini. Nggak bisa jawab kenapa turun, produk mana yang narik, atau bagian mana yang untungnya tipis.
Di bawah ini struktur kolom yang bikin laporanmu bisa dianalisis, enam metrik yang wajib dihitung, rumus spreadsheetnya, plus contoh membaca angka sebulan dari toko sembako.
Apa itu laporan penjualan?
Laporan penjualan adalah ringkasan terstruktur dari seluruh transaksi penjualan dalam satu periode. Isinya bukan cuma total uang masuk, tapi juga rincian per produk, jumlah transaksi, dan margin. Fungsinya buat menjawab tiga hal: berapa yang terjual, dari mana asalnya, dan apakah angkanya membaik dibanding periode sebelumnya.
Ada dua lapis yang sering ketuker. Lapis pertama adalah tabel transaksi mentah, yaitu catatan tiap barang yang keluar. Lapis kedua adalah laporannya, yaitu hasil rekap dari tabel itu.
Yang harus kamu jaga rapi adalah lapis pertama. Laporan apa pun bisa dibikin ulang dari data mentah yang bersih, tapi data mentah yang berantakan nggak bisa diselamatkan oleh laporan secantik apa pun.
Kolom apa aja yang wajib ada di tabel penjualan?
Kolom minimum yang bikin datamu bisa dianalisis ada tujuh: tanggal, nomor struk, kode produk, nama produk, jumlah, harga jual satuan, dan harga pokok satuan. Dengan tujuh kolom itu kamu udah bisa hitung omzet, unit terjual, jumlah transaksi, dan margin tanpa perlu nyatet apa pun lagi.
| Kolom | Contoh isi | Kenapa perlu |
|---|---|---|
| tanggal | 2025-06-14 | Basis semua rekap periode |
| no_struk | TRX-0614-018 | Menghitung jumlah transaksi |
| kode_produk | BRS-05 | Kunci gabung ke daftar barang |
| nama_produk | Beras Pandan Wangi 5 kg | Biar laporan kebaca manusia |
| kategori | Beras | Rekap per kelompok barang |
| jumlah | 2 | Menghitung unit terjual |
| harga_jual | 68000 | Menghitung omzet |
| harga_pokok | 61200 | Menghitung laba kotor |
Aturan pentingnya: satu baris untuk satu item, bukan satu baris untuk satu struk. Kalau pembeli ambil beras dan minyak dalam satu struk, itu dua baris dengan nomor struk yang sama.
Kolom tambahan yang berguna kalau relevan: kanal (toko, WhatsApp, Shopee), kasir, dan metode bayar. Jangan bikin kolom yang isinya bisa dihitung, misalnya kolom subtotal. Itu tugas rumus.
Metrik apa yang wajib ada di laporan penjualan?
Ada enam metrik inti. Omzet, jumlah transaksi, nilai transaksi rata-rata, unit terjual, laba kotor, dan pertumbuhan dibanding periode sebelumnya. Enam angka ini cukup buat tau apakah bisnismu tumbuh dan dari mana pertumbuhannya datang.
| Metrik | Cara hitung | Yang dijawab |
|---|---|---|
| Omzet | Σ (jumlah × harga jual) | Berapa uang yang masuk |
| Jumlah transaksi | Hitung no_struk unik | Berapa kali orang belanja |
| Nilai transaksi rata-rata | Omzet ÷ jumlah transaksi | Sekali belanja habis berapa |
| Unit terjual | Σ jumlah | Berapa barang keluar |
| Laba kotor | Omzet - Σ (jumlah × harga pokok) | Sisa sebelum biaya operasional |
| Pertumbuhan | (periode ini ÷ periode lalu) - 1 | Membaik atau memburuk |
Nilai transaksi rata-rata sering disingkat AOV, singkatan dari average order value. Angka ini yang paling sering dilupakan pemilik toko, padahal dia yang misahin dua penyebab omzet naik: pembelinya nambah, atau pembeli yang sama belanja lebih banyak.
Kalau kamu mau mengatur metrik ini jadi indikator yang dipantau rutin, konsepnya dibahas di glossary KPI.
Gimana rumus spreadsheet untuk tiap metrik?
Anggap tabel transaksimu ada di kolom A sampai H, baris 2 ke bawah, dengan susunan kolom kayak tabel di atas. Tambahkan kolom I sebagai subtotal dan kolom J sebagai HPP baris.
' Subtotal dan HPP per baris
I2 =F2*G2
J2 =F2*H2
' Omzet bulan Juni 2025
=SUMIFS(I:I, A:A, ">=2025-06-01", A:A, "<=2025-06-30")
' Unit terjual bulan Juni
=SUMIFS(F:F, A:A, ">=2025-06-01", A:A, "<=2025-06-30")
' Jumlah transaksi (nomor struk unik)
=COUNTA(UNIQUE(FILTER(B:B, (A:A>=DATE(2025,6,1))*(A:A<=DATE(2025,6,30)))))
' Nilai transaksi rata-rata
=Omzet/JumlahTransaksi
' Laba kotor
=SUMIFS(I:I, ...) - SUMIFS(J:J, ...)
' Omzet satu kategori
=SUMIFS(I:I, E:E, "Beras", A:A, ">=2025-06-01", A:A, "<=2025-06-30")
' Pertumbuhan bulanan
=OmzetJuni/OmzetMei-1
Fungsi yang paling sering kepakai di sini SUMIFS buat menjumlah dengan syarat, dan COUNTIFS buat menghitung baris dengan syarat. Detail argumennya ada di dokumentasi resmi Microsoft untuk SUMIFS.
Kalau kamu nggak mau nulis rumus sebanyak itu, pivot table ngerjain rekap yang sama dalam beberapa klik. Cara menampilkan kontribusi persen tiap produk ada di panduan persentase di pivot table.
Contoh kasus: membaca laporan penjualan toko_berkah
Ini dataset contoh ngulikdata bernama toko_berkah, sebuah toko sembako di Bekasi. Rekap Juni 2025:
| Metrik | Mei 2025 | Juni 2025 | Perubahan |
|---|---|---|---|
| Omzet | Rp 45.000.000 | Rp 48.750.000 | +8,3% |
| Jumlah transaksi | 1.200 | 1.250 | +4,2% |
| Nilai transaksi rata-rata | Rp 37.500 | Rp 39.000 | +4,0% |
| Laba kotor | Rp 8.100.000 | Rp 8.775.000 | +8,3% |
Omzet naik 8,3 persen, dan kenaikannya datang dari dua arah sekaligus: pembeli nambah 50 transaksi, dan tiap transaksi naik Rp 1.500. Ini pola yang sehat.
Sekarang pecah per kategori:
| Kategori | Omzet Juni | Porsi omzet | Laba kotor | Porsi laba |
|---|---|---|---|---|
| Beras | Rp 14.625.000 | 30% | Rp 1.462.500 | 17% |
| Minyak goreng | Rp 9.750.000 | 20% | Rp 1.365.000 | 16% |
| Gula dan tepung | Rp 7.312.500 | 15% | Rp 1.462.500 | 17% |
| Mi instan | Rp 6.825.000 | 14% | Rp 1.638.000 | 19% |
| Lainnya | Rp 10.237.500 | 21% | Rp 2.847.000 | 32% |
| Total | Rp 48.750.000 | 100% | Rp 8.775.000 | 100% |
Di sini angkanya mulai ngomong. Beras nyumbang 30 persen omzet tapi cuma 17 persen laba kotor, karena marginnya 10 persen. Sementara kategori lainnya, isinya sabun, snack, dan bumbu, cuma 21 persen omzet tapi ngasih 32 persen laba.
Artinya beras kerjanya narik orang masuk toko, bukan ngasih untung. Keputusan yang masuk akal dari data ini: stok beras jangan dikurangi, tapi tata letaknya diatur supaya pembeli beras lewat rak snack dan bumbu.
Kalau kamu cuma lihat baris omzet total, insight kayak gini nggak akan muncul.
Gimana urutan membaca laporan penjualan?
Baca dari atas ke bawah dalam empat langkah. Mulai dari arah tren, lalu penyebabnya, lalu rincian per produk, baru tindakan. Urutan ini yang mencegah kamu ngambil keputusan dari satu angka yang kebetulan naik.
- Cek arah. Omzet dan laba kotor naik atau turun dibanding periode sebelumnya? Bandingkan juga dengan bulan yang sama tahun lalu kalau usahamu musiman.
- Cari penyebabnya. Pecah perubahan omzet jadi jumlah transaksi dan nilai transaksi rata-rata. Naik karena orangnya nambah, atau karena tiap orang belanja lebih banyak?
- Turun ke produk. Kategori mana yang bergerak paling besar. Cek porsi omzet dan porsi laba berdampingan, jangan cuma salah satu.
- Tetapkan satu tindakan. Satu bulan, satu perubahan. Kalau kamu ubah tiga hal sekaligus, bulan depan kamu nggak tau mana yang berhasil.
Buat menemukan produk yang paling menentukan, urutkan omzet dari besar ke kecil lalu lihat kontribusi kumulatifnya. Teknik ini dibahas terpisah di cara membuat Pareto chart di Excel.
Kesalahan umum saat menyusun laporan penjualan
1. Satu sheet per bulan. Kelihatan rapi, tapi bikin perbandingan antar bulan jadi kerja manual. Simpan semua transaksi di satu sheet, pisahkan lewat kolom tanggal.
2. Tanggal disimpan sebagai teks. Kalau kolom tanggal ditulis "14 Juni 2025", spreadsheet nggak bisa urutkan atau filter periode. Pakai format tanggal asli.
3. Nama produk ditulis bebas. "Beras 5kg", "beras 5 kg", dan "Beras 5 Kg" bakal terhitung tiga produk berbeda. Pakai kode produk sebagai kunci, nama cuma pelengkap.
4. Nggak nyatet harga pokok. Tanpa HPP, kamu cuma bisa lihat omzet dan buta soal margin. Ini sumber kesalahan paling mahal, karena produk laris bermargin tipis keliatan kayak juara.
5. Menghapus baris transaksi yang batal. Jangan dihapus. Tandai statusnya jadi batal atau retur, biar riwayatnya tetap ada dan angka bulan lalu nggak berubah sendiri.
6. Menggabungkan sel buat judul. Sel gabungan bikin filter, sortir, dan pivot table jadi kacau. Simpan judul cantik di sheet laporan, bukan di sheet data.
FAQ
Apa isi minimal sebuah laporan penjualan?
Minimal ada periode yang jelas, omzet total, jumlah transaksi, dan rincian per produk atau kategori. Kalau kamu punya harga pokok, tambahkan laba kotor supaya keliatan produk mana yang cuma ramai tapi tipis untungnya. Tanpa rincian per produk, laporanmu cuma bisa jawab berapa yang masuk, bukan dari mana uangnya datang dan bagian mana yang perlu diperbaiki bulan depan.
Bedanya omzet dan laba di laporan penjualan apa?
Omzet adalah total nilai barang yang terjual sebelum dikurangi biaya apa pun. Laba kotor adalah omzet dikurangi harga pokok barang yang terjual. Laba bersih baru muncul setelah biaya sewa, gaji, listrik, dan biaya lain ikut dikurangkan. Toko bisa punya omzet naik tapi laba turun kalau yang laris justru barang bermargin tipis, jadi dua angka ini harus dibaca bareng.
Sebaiknya laporan penjualan dibuat harian atau bulanan?
Dua-duanya, dengan fungsi beda. Laporan harian dipakai buat kontrol operasional: cocokin uang kas, cek barang habis, dan lihat jam ramai. Laporan bulanan dipakai buat keputusan: pertumbuhan, margin per kategori, dan produk mana yang mau dikurangi stoknya. Kalau sumber datanya satu tabel transaksi yang rapi, dua laporan itu bisa dibikin dari data yang sama tanpa nyatet dua kali.
Kenapa laporan penjualan sebaiknya satu baris per item, bukan per struk?
Karena satu struk sering berisi beberapa barang berbeda. Kalau kamu nyatet satu baris per struk, kamu kehilangan informasi produk mana yang terjual, dan analisis per kategori jadi mustahil. Satu baris per item bikin kamu tetap bisa hitung jumlah transaksi lewat kode struk yang unik, sekaligus bisa hitung unit terjual dan margin per produk dari tabel yang sama.
Perlu software khusus buat bikin laporan penjualan?
Nggak, selama transaksimu masih di bawah beberapa ribu baris per bulan. Excel atau Google Sheets udah cukup buat semua metrik di artikel ini, apalagi dengan pivot table. Software kasir baru kepakai kalau kamu punya banyak cabang, butuh stok real time, atau ada beberapa orang yang input data bersamaan di waktu yang sama.
Penutup
Dua hal yang paling nentuin kualitas laporan penjualanmu. Pertama, struktur data mentahnya: satu baris per item, tanggal beneran tanggal, dan harga pokok ikut dicatat. Kedua, kebiasaan membaca omzet berdampingan dengan laba, karena produk paling laris sering bukan produk paling menguntungkan.
Di toko_berkah, beras nyumbang 30 persen omzet tapi cuma 17 persen laba. Angka kayak gitu cuma kelihatan kalau laporanmu punya kolom HPP.
Coba buka file penjualanmu sekarang, tambahkan kolom harga pokok, lalu hitung laba kotor per kategori bulan lalu. Lanjut baca 10 contoh format laporan penjualan kalau kamu mau template yang tinggal disesuaikan sama jenis usahamu.
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.