HPP (Harga Pokok Penjualan) adalah angka paling menentukan di laporan keuangan apotek: salah hitung HPP, maka laba kotor, margin, dan harga jual ikut salah semua. Masalahnya, harga beli obat berubah-ubah tiap faktur — kadang naik, kadang ada diskon, kadang ada bonus barang. Ini cara menghitungnya dengan benar, empat rumus dari yang paling sederhana sampai yang paling presisi.
Rumus 1 — HPP periodik (metode fisik)
Metode "hitung mundur" tradisional: nilai stok awal ditambah semua pembelian, dikurangi nilai stok akhir hasil opname. Contoh: stok awal Rp 60 juta + pembelian Rp 70 juta − stok akhir Rp 65 juta = HPP Rp 65 juta.
Kelemahannya fatal: barang hilang, rusak, atau kedaluwarsa ikut "tersembunyi" di dalam HPP — Anda tidak pernah tahu berapa kerugian sebenarnya. Misal dari HPP Rp 65 juta itu ternyata Rp 2 juta adalah barang hilang dan ED yang tak pernah terjual: laporan Anda menyebutnya "harga pokok penjualan", padahal sebagian adalah kerugian yang seharusnya diusut. Metode ini juga sepenuhnya bergantung pada ketelitian opname — opname meleset, HPP ikut meleset. Hanya layak untuk apotek yang belum punya sistem.
Rumus 2 — HPP per unit (dasar semua perhitungan)
Contoh: 1 box Amoxicillin isi 100 tablet, harga faktur Rp 45.000, diskon 5%. HPP per box = 45.000 × 0,95 = Rp 42.750 → HPP per tablet = Rp 427,5.
Jebakan #1: diskon faktur. Kalau diskon 5% itu tidak dipotong dan HPP dicatat Rp 450/tablet, margin Anda terlihat lebih tipis dari kenyataan — dan saat menaikkan harga jual "mengejar margin", harga Anda kalah bersaing.
Jebakan #2: PPN. Apotek PKP yang bisa mengkreditkan PPN masukan → HPP tanpa PPN. Apotek non-PKP → PPN faktur ikut jadi HPP karena memang beban Anda. Konsistenkan satu aturan.
Jebakan #3: bonus barang. Beli 10 box bonus 1 box gratis? HPP per unit dihitung dari total bayar dibagi total barang yang diterima. Dengan harga faktur Rp 45.000/box: bayar 10 × 45.000 = Rp 450.000 untuk 11 box → HPP per box = Rp 40.909, bukan Rp 45.000. Kalau bonus dicatat sebagai "barang gratis HPP nol" atau tidak dicatat sama sekali, stok dan margin dua-duanya kacau.
Jebakan #4: kemasan bertingkat. Obat yang dijual per box, per strip, dan per tablet harus punya konversi isi yang benar di sistem (1 box = 10 strip = 100 tablet). Salah isi kemasan — misalnya tercatat 1 box = 10 tablet — membuat HPP per tablet melenceng sepuluh kali lipat, dan itu kesalahan input yang paling sering ditemukan saat audit data apotek.
Rumus 3 — Rata-rata tertimbang (saat harga beli berubah)
Contoh kasus: stok Paracetamol 200 tablet @Rp 300 (batch lama). Datang faktur baru 300 tablet @Rp 360.
| Batch | Qty | HPP/unit | Nilai |
|---|---|---|---|
| Stok lama | 200 | Rp 300 | Rp 60.000 |
| Faktur baru | 300 | Rp 360 | Rp 108.000 |
| Rata-rata tertimbang | 500 | Rp 336 | Rp 168.000 |
HPP baru = 168.000 ÷ 500 = Rp 336/tablet — bukan Rp 330 (rata-rata biasa), karena qty tiap batch berbeda. Perhatikan: kalau Anda tetap jual Rp 400/tablet, margin turun dari 25% jadi 16% tanpa terasa. Inilah kenapa harga jual perlu ditinjau tiap kali HPP naik — cara menghitung harga jual baru dari target margin ada di artikel margin vs markup obat.
Catatan: rata-rata tertimbang adalah metode penilaian yang paling umum dipakai sistem apotek di Indonesia karena harga beli obat naik-turun dalam rentang kecil dan frekuensi tinggi. Alternatifnya, FIFO murni menilai barang keluar persis pada harga batch masuk pertama — hasil akhirnya mirip untuk barang yang perputarannya cepat, dan yang jauh lebih penting daripada memilih metodenya adalah konsisten memakai satu metode dari waktu ke waktu.
Rumus 4 — HPP penjualan (COGS) per transaksi
Sistem modern mencatat HPP per batch yang benar-benar keluar (FEFO — batch ED terdekat duluan, seperti dibahas di panduan FEFO). Jual 250 tablet dari kasus di atas saat batch lama masih ada: 200 tablet memakai HPP Rp 300 + 50 tablet memakai HPP Rp 360 = 60.000 + 18.000 = Rp 78.000 — presisi sampai ke rupiahnya, dan nilainya dikunci saat transaksi sehingga laporan laba tidak berubah-ubah walau harga beli bulan depan naik.
Kata kuncinya "dikunci". Tanpa penguncian, laporan laba bulan Januari bisa ikut berubah saat harga beli naik di bulan Maret — dan Anda tidak akan pernah bisa mempercayai laporan historis sendiri. Konsekuensinya: kalau ada HPP yang terlanjur salah (misal faktur diinput tanpa diskon), perbaikannya harus lewat mekanisme koreksi yang tercatat, bukan mengedit diam-diam.
Retur pembelian: jangan lupa menariknya kembali
Retur barang ke distributor mengurangi pembelian bersih pada harga beli barang itu — bukan pada harga rata-rata terbaru. Kalau retur dicatat asal-asalan (atau tidak dicatat), nilai persediaan menggelembung dan HPP periodik ikut kacau. Sistem per-batch menangani ini otomatis: retur mengeluarkan qty dari batch asalnya dengan HPP batch itu juga.
Mana yang sebaiknya dipakai apotek?
- Masih manual / Excel: rumus periodik + opname rutin — sadari batasannya.
- Pakai sistem POS: HPP per batch (rumus 4) dengan rata-rata tertimbang saat penerimaan — otomatis, dan selisih barang hilang/ED terlihat terpisah dari HPP.
- Apapun metodenya: disiplin potong diskon faktur & konsisten soal PPN.
Tanya jawab singkat
- Barang ED atau rusak masuk HPP? Idealnya tidak — catat sebagai kerugian persediaan tersendiri supaya kelihatan berapa uang yang hangus karena ED, terpisah dari harga pokok barang yang benar-benar terjual. Di metode periodik, sayangnya keduanya melebur.
- HPP di sistem beda dengan harga faktur terakhir — mana yang benar? Bisa dua-duanya: HPP rata-rata tertimbang memang tidak sama dengan harga faktur terakhir bila masih ada stok lama berharga beda. Yang perlu dicurigai adalah selisih yang besar — biasanya jejak faktur lama yang diinput tanpa diskon atau salah isi kemasan.
- Berapa dampak HPP salah ke laba? Satu banding satu: HPP tercatat lebih tinggi Rp 5 juta = laba kotor terlapor lebih rendah Rp 5 juta. Alur lengkapnya dari HPP ke laba bersih ada di artikel rumus laporan laba rugi apotek.
HPP otomatis per batch di Farmalite
Terima faktur → HPP per unit terhitung (termasuk diskon & bonus), harga jual bisa auto-menyesuaikan target margin, dan tiap penjualan mengunci HPP batch yang keluar. Ada juga menu Koreksi HPP kalau ada salah input — perbaikan tercatat, bukan diedit diam-diam.