Menghitung & Membayar Payroll (Draf → Final → Dibayar)
Panduan Keuangan / Admin / Owner menghitung dan membayar gaji bulanan per outlet di MBS Food Cost. Sistem menghitung sendiri dari absensi + lembur yang sudah disetujui, Anda tinjau sebagai DRAF, tambahkan bonus/potongan bila perlu, lalu FINALKAN untuk membekukan angkanya. Setelah final, Anda unduh berkas Excel untuk transfer massal ke bank, lalu tandai DIBAYAR — biaya gaji otomatis tercatat sekali ke Opex (grup Gaji).
Menu Payroll (grup Karyawan & Payroll) adalah tempat Anda menghitung gaji bulanan per outlet, lalu membayarkannya. Anda tidak mengetik gaji satu per satu — sistem menghitungnya sendiri dari absensi dan lembur yang sudah disetujui, lalu Anda tinjau, beri bonus/potongan bila perlu, finalkan, unduh berkas transfer, dan terakhir tandai dibayar.
Hanya Keuangan, Admin, dan Owner yang melihat menu ini. Manager tidak — manager yang mengisi bahan bakunya (absensi & lembur), tapi tidak boleh melihat angka gaji. Kalau manager membuka halaman ini, yang muncul "Akses ditolak".
Navigasi cepat
- Baru pertama kali? baca dari atas — mulai dari Pahami dulu.
- Mau langsung mengerjakan satu bulan penuh? loncat ke Alur lengkap.
- Sudah paham, tinggal cari caranya:
- Absensi terkunci, tidak bisa dikoreksi? lihat Kenapa absensi terkunci.
- Sudah terlanjur dibayar tapi salah? lihat Kalau sudah dibayar tapi ada yang salah.
Sekilas: tiap status artinya apa
| Status | Artinya | Masih bisa diubah? |
|---|---|---|
| Draf | Angka sudah dihitung, masih boleh diutak-atik | Ya |
| Final | Angka dibekukan — absensi periode ini terkunci | Tidak (harus void) |
| Dibayar | Gaji sudah dibayarkan, biayanya sudah masuk Opex (Gaji) | Tidak — ini terakhir |
| Dibatalkan | Payroll dibatalkan, absensi terbuka lagi | — |
Dibayar itu status terakhir. Sesudahnya payroll tidak bisa diubah, dihitung ulang, atau dibatalkan — uangnya sudah keluar. Kalau ada yang salah, koreksinya lewat pembukuan, bukan dengan menghapus catatan (caranya di bawah).
🎓 Pahami dulu: dari mana angka gaji datang
Analogi sederhana
Bayangkan Anda menghitung gaji dengan buku absen dan kalkulator.
- Anda buka buku absen bulan itu, lalu hitung berapa hari tiap orang masuk dan berapa jam lembur yang sudah Anda setujui.
- Anda kalikan dengan tarif orang itu (tarif harian & tarif lembur per jam).
- Kalau ada THR atau potongan kasbon, Anda tambah/kurangi.
- Kalau sudah yakin, Anda tanda tangani kertasnya — sejak saat itu buku absen bulan itu tidak boleh dicoret-coret lagi, karena angkanya sudah dipakai membayar orang.
Halaman Payroll melakukan persis empat hal itu. Bedanya, hitungannya otomatis dan "tanda tangan" itu namanya Finalkan.
Cara kerjanya
Kapan efeknya terjadi — ada DUA saat penting, jangan tertukar:
- Saat Anda tekan Finalkan → absensi periode itu terkunci. Payroll membaca absensi & lembur, ia tidak mengubahnya; selama masih Draf, manajer masih boleh mengoreksi absensi.
- Saat Anda tekan Tandai Dibayar → biaya gaji baru tercatat sebagai pengeluaran (Opex, grup Gaji), dan langsung muncul di Laba Rugi.
Jadi payroll yang masih Final tapi belum ditandai dibayar belum menambah biaya apa pun di laporan. Angkanya sudah beku, tapi uangnya belum dianggap keluar.
Uang keluar dua kali? Tidak — sistem menjaga itu
Ini bagian yang paling sering ditakutkan: "kalau saya klik dua kali, gajinya dicatat dua kali, dong?" Tidak.
- Satu payroll = satu catatan biaya, selamanya. Berapa kali pun tombol Tandai Dibayar ditekan (dobel klik, dibuka lagi dari HP lain, koneksi putus lalu diulang), biaya gaji tetap tercatat satu kali saja.
- Berkas Excel boleh diunduh berkali-kali — mengunduh berkas tidak memindahkan uang dan tidak mencatat apa pun. Yang mencatat biaya hanyalah tombol Tandai Dibayar.
- Transfer uangnya tetap Anda lakukan sendiri di bank. MBS Food Cost tidak mengirim uang — ia hanya menyiapkan berkasnya dan mencatat biayanya.
Rumus yang dipakai sistem
| Bagian | Rumusnya |
|---|---|
| Upah Pokok | Hari Hadir × Tarif Harian |
| Upah Lembur | Jam Lembur disetujui × Tarif Lembur per Jam |
| Bruto | Upah Pokok + Upah Lembur + semua Bonus |
| Neto | Bruto − semua Potongan |
Yang perlu Anda tahu:
- Hanya hari HADIR yang dibayar. Izin, sakit, cuti, dan alpa tidak menambah upah pokok.
- Hanya lembur yang sudah DISETUJUI yang dihitung. Lembur yang masih menunggu persetujuan tidak ikut — nilainya nol. Kalau ada lembur yang belum Anda putuskan, minta manajer menyelesaikannya sebelum payroll dibuat.
- Tarif dibekukan saat payroll dibuat. Kalau nanti tarif karyawan diubah di menu Level Upah, payroll yang sudah terlanjur dibuat tidak ikut berubah. Angkanya sudah "dipotret".
- Karyawan yang lembur saja tetap dapat baris. Kalau seseorang tidak masuk sama sekali tapi punya lembur yang disetujui, ia tetap muncul dengan Hari Hadir 0 dan hanya dibayar lemburnya.
Kenapa penting
Kalau absensi masih bisa diubah setelah gaji dihitung, angka yang sudah Anda bayarkan bisa tidak cocok lagi dengan catatannya — dan Anda tidak akan tahu mana yang benar. Kunci setelah Final itulah yang menjaga catatan gaji dan catatan absensi selalu bercerita hal yang sama.
Sumber belajar
Alur lengkap: dari absensi sampai gaji dibayar
Contoh nyata: outlet BENOWO, periode 2026-07. Karyawan Budi masuk 3 hari, tarif hariannya Rp100.000. Ada THR Rp50.000 dan potongan kasbon Rp20.000.
Bereskan dulu absensi & lembur bulan itu
Minta manajer menuntaskan Kelola Absensi (tab Anomali dan tab Lembur) untuk periode itu: jam pulang yang terlewat diisi, yang tidak masuk ditandai, dan semua pengajuan lembur sudah Disetujui atau Ditolak.
Kalau masih ada sisa, payroll tetap bisa dibuat, tapi Anda akan melihat kotak kuning peringatan. Yang belum disetujui tidak akan dibayar.
👉 detail di Membereskan Absensi
Buat payroll draf
Buka Payroll → Buat Payroll → pilih outlet BENOWO dan periode 2026-07 → Hitung payroll.
Hasilnya: muncul satu baris Draf. Budi tampil dengan Hari Hadir 3, Upah Pokok Rp300.000 (3 × Rp100.000), dan Neto Rp300.000.
👉 detail di Langkah 1
Tambahkan bonus & potongan
Buka payroll-nya, klik tanda + di baris Budi, lalu Tambah bonus/potongan. Isi Bonus / THR / 50000, simpan. Ulangi untuk Potongan / Kasbon / 20000.
Hasilnya: Bruto Rp350.000 (300.000 + 50.000) dan Neto Rp330.000 (350.000 − 20.000).
👉 detail di Langkah 2
Finalkan
Kalau semua angka sudah benar, tekan Finalkan → Ya, finalkan.
Hasilnya: status berubah jadi Final, tombol Hitung ulang dan Tambah bonus/potongan hilang, dan absensi Budi untuk 2026-07 terkunci.
👉 detail di Langkah 3
Unduh berkas Excel, lalu transfer di bank
Tekan Unduh Excel Disbursement. Berkasnya berisi satu baris per karyawan yang dibayar lewat transfer — nama bank, nomor rekening, nama pemilik rekening, jumlah, dan berita transfer.
Buka berkas itu, unggah ke layanan transfer massal bank Anda, lalu lakukan transfernya. MBS Food Cost tidak mengirim uang — Anda yang mengirim.
Hasilnya: berkas disbursement-2026-07-BENOWO.xlsx berisi satu baris Budi —
BCA · 8720114455 · Budi Santoso · Rp330.000, berita GAJI 2026-07 Budi
Santoso — dan satu baris TOTAL.
👉 detail di Langkah 4
Tandai Dibayar
Setelah uangnya benar-benar sudah ditransfer, kembali ke halaman payroll dan tekan Tandai Dibayar → periksa angkanya di kotak konfirmasi → Ya, tandai dibayar.
Hasilnya: status jadi Dibayar, dan biaya gaji Rp330.000 otomatis tercatat di Biaya Operasional (grup Gaji, kategori Gaji Karyawan) untuk periode 2026-07. Buka Laba Rugi BENOWO 2026-07 — baris Upah / Gaji sekarang Rp330.000.
👉 detail di Langkah 5
Karyawan mengunduh slip gajinya sendiri
Anda tidak perlu mengirim apa pun. Budi membuka menu Slip Gaji Saya di akunnya sendiri, dan 2026-07 · BENOWO · Rp330.000 sudah ada di sana — tinggal tekan Unduh Slip.
Kalau Budi tidak punya akun login, Anda yang mengunduhkan: di baris Budi ada tombol Unduh Slip (kolom Slip Gaji) — unduh PDF-nya, lalu berikan langsung ke Budi.
👉 detail di Langkah 7
✅ Satu outlet selesai: (1) absensi beres → (2) draf dibuat → (3) bonus & potongan masuk → (4) angka dibekukan → (5) berkas diunduh & ditransfer → (6) ditandai dibayar, biaya masuk Opex → (7) slip gaji siap diunduh karyawan. Ulangi untuk outlet berikutnya.
Langkah 1 — Buat payroll draf
Tekan tombol ini di halaman Payroll
Pilih outlet dan periode
Isi Outlet (satu outlet, satu payroll) dan Periode (bulan), lalu tekan Hitung payroll. Muncul pesan "Payroll draft dibuat."
Satu outlet hanya boleh punya satu payroll aktif per bulan. Kalau Anda mencoba membuat yang kedua, sistem menolak: "Payroll untuk periode dan outlet ini sudah dibuat." Buka yang sudah ada, atau batalkan (void) dulu.
Baca kotak kuning kalau muncul
⚠️ Ada 4 catatan absensi yang belum beres di periode ini. Payroll tetap bisa dihitung, tapi sebaiknya dibereskan dulu di Kelola Absensi.
Ini peringatan, bukan larangan — payroll tetap jadi. Tapi artinya masih ada absensi yang belum beres, jadi angkanya mungkin belum betul. Sebaiknya bereskan dulu, lalu tekan Hitung ulang.
Langkah 2 — Tinjau & sesuaikan (bonus/potongan)
Klik baris payroll untuk membuka rinciannya. Bagian Rincian per Karyawan menampilkan Hari Hadir, Jam Lembur, Tarif Harian, Upah Pokok, Upah Lembur, Bruto, dan Neto tiap orang.
Hitung ulang kalau absensi baru saja dibereskan
Tekan Hitung ulang. Semua angka dihitung ulang dari data terbaru — termasuk tarif. Bonus/potongan yang sudah Anda isi tetap aman, menempel ke orangnya.
Tambahkan bonus atau potongan
Klik tanda + di sebelah kiri nama karyawan, lalu Tambah bonus/potongan. Isi:
- Jenis — Bonus (menambah) atau Potongan (mengurangi)
- Keterangan — wajib diisi, contoh:
THR,Potongan kasbon - Jumlah (Rp) — selalu angka positif. Tanda minus datang dari Jenis,
bukan dari Anda. Untuk potongan Rp20.000, ketik
20000— bukan-20000.
Bruto dan Neto langsung menyesuaikan. Salah isi? Tekan ikon tempat sampah untuk menghapusnya.
Perhatikan kotak "Penyesuaian tanpa baris payroll"
Kalau setelah Hitung ulang ada karyawan yang hilang dari payroll (misalnya hari hadirnya berubah jadi nol), bonus/potongan miliknya tidak ikut hilang — ia pindah ke kotak ini dan tidak dihitung ke total. Hapus kalau memang tidak dipakai. Sistem sengaja tidak membuangnya diam-diam.
Langkah 3 — Finalkan (bekukan angka)
Pastikan angkanya sudah benar
Setelah Final, angka tidak bisa diubah lagi — satu-satunya jalan mundur adalah membatalkan (void) seluruh payroll dan mengulang.
Tekan Finalkan, lalu konfirmasi
Tekan Finalkan → Ya, finalkan. Muncul "Payroll difinalkan."
Yang terjadi:
- Status jadi Final, angka dibekukan.
- Data rekening & cara bayar tiap karyawan ikut dipotret saat ini — jadi kalau nanti karyawan mengganti nomor rekeningnya, pembayaran gaji bulan ini tidak ikut berubah.
- Tombol Hitung ulang dan Tambah bonus/potongan hilang.
- Absensi periode ini terkunci untuk karyawan yang ada di payroll ini.
- Belum ada biaya yang tercatat. Angkanya beku, tapi Laba Rugi belum berubah — itu baru terjadi saat Anda Tandai Dibayar.
Langkah 4 — Unduh berkas transfer (Excel)
Berkas ini adalah daftar transfer yang Anda unggah ke layanan transfer massal bank. Isinya diambil dari data rekening yang dipotret saat Finalkan — jadi kalau karyawan mengganti nomor rekeningnya besok, berkas bulan ini tidak ikut berubah.
Tekan tombol ini
Tombolnya muncul saat status Final (dan tetap ada setelah Dibayar, kalau Anda perlu salinannya lagi).
Isi berkasnya
Satu baris per karyawan, plus satu baris TOTAL di bawah:
| Nama Bank | No. Rekening | Nama Pemilik Rekening | Jumlah | Berita |
|---|---|---|---|---|
| BCA | 8720114455 | Budi Santoso | 330.000 | GAJI 2026-07 Budi Santoso |
| TOTAL | 330.000 | 1 baris |
Kolom Jumlah adalah angka betulan (bukan tulisan), jadi bisa Anda jumlahkan sendiri di Excel untuk mencocokkan totalnya sebelum transfer.
Unggah ke bank, lalu transfer
Buka layanan transfer massal bank Anda, unggah berkasnya, periksa totalnya, lalu kirim. Uangnya berpindah di bank, bukan di aplikasi ini.
Kalau ada karyawan yang datanya belum lengkap
Kalau ada karyawan transfer yang nama bank / nomor rekening / nama pemilik rekening-nya masih kosong, berkas tidak akan dibuat. Sistem menyebut namanya:
Data bank belum lengkap untuk: Budi Santoso. Perbaiki di menu Karyawan lalu batalkan (void) & hitung ulang payroll-nya, atau ubah metode pembayaran karyawan tersebut ke Tunai.
Ini disengaja — berkas dengan rekening kosong akan ditolak bank, atau lebih buruk, uangnya nyasar. Dua jalan keluarnya persis seperti yang tertulis di pesan itu.
Karyawan yang dibayar TUNAI tidak ikut di berkas
Karyawan yang metode bayarnya Tunai sengaja tidak dimasukkan ke berkas transfer — Anda membayarnya langsung, tidak lewat bank. Tapi gajinya tetap dihitung di total payroll dan tetap masuk biaya saat ditandai dibayar.
Kalau semua karyawan dibayar tunai, berkasnya tidak dibuat sama sekali: "Tidak ada baris transfer untuk diekspor — semua karyawan dibayar tunai." Itu bukan error — langsung saja lanjut ke Tandai Dibayar.
Langkah 5 — Tandai Dibayar
Ini langkah yang mencatat uangnya. Lakukan setelah transfer benar-benar selesai di bank — bukan sebelumnya.
Tekan tombol ini
Tombolnya hanya muncul saat status Final.
Periksa tiga angka di kotak konfirmasi
Sebelum menyetujui, kotaknya menampilkan Total Neto, Periode, dan Outlet. Baca ketiganya. Ini kesempatan terakhir Anda membatalkan — setelah disetujui, payroll ini tidak bisa diubah lagi.
Ada juga Tanggal bayar (opsional). Kosongkan saja kalau Anda menandainya di hari yang sama dengan transfernya. Isi kalau transfernya dilakukan di tanggal lain — biaya gajinya akan masuk ke periode tanggal itu.
Contoh: gaji bulan Juni yang baru Anda transfer tanggal 3 Juli → isi tanggal 3 Juli, maka biayanya masuk periode Juli (bulan uangnya keluar), walaupun payroll-nya periode Juni. Itu benar dan memang begitu seharusnya.
Tekan "Ya, tandai dibayar"
Muncul "Payroll ditandai dibayar. Biaya gaji tercatat di Opex."
Yang terjadi:
- Status jadi Dibayar.
- Satu baris biaya dibuat otomatis di Biaya Operasional — grup Gaji, kategori Gaji Karyawan, sebesar total neto payroll, sumber dana Transfer/Bank.
- Di halaman payroll muncul tautan "Lihat biaya gaji di Opex" untuk membukanya.
- Tombol Finalkan, Batalkan (void), dan Hitung ulang hilang semua — payroll ini sudah selesai.
Kalau tersambar dobel klik atau koneksi putus
Aman. Sistem hanya mencatat biayanya satu kali untuk satu payroll — sekeras apa pun tombolnya ditekan, atau dari HP mana pun Anda ulangi.
Kalau sudah dibayar tapi ada yang salah
Payroll yang sudah Dibayar tidak bisa dibatalkan atau dihitung ulang:
Payroll yang sudah dibayar tidak bisa dibatalkan. Koreksi lewat jurnal Opex manual.
Uangnya sudah keluar dari rekening — menghapus catatannya tidak akan menarik uang itu kembali, malah membuat pembukuan tidak cocok dengan rekening koran.
Cara mengoreksinya (sama seperti akuntan mengoreksi jurnal): buat entri pembalik di Biaya Operasional.
Kalau Anda membuat biaya grup Gaji untuk outlet & periode yang sudah punya payroll dibayar, sistem menampilkan pengingat:
Periode ini sudah punya payroll yang dibayar. Pastikan ini bukan gaji yang sama (hindari dobel catat).
Itu pengingat saja, bukan larangan — Anda tetap boleh menyimpan (memang ada gaji di luar payroll: bonus sekali jalan, tenaga harian lepas, THR yang dibayar terpisah). Yang penting Anda sadar dan tidak mencatat gaji yang sama dua kali.
Kenapa absensi terkunci setelah Final
Setelah payroll Final, manajer yang mencoba mengoreksi absensi bulan itu (mengisi jam pulang, menandai absen, membatalkan lembur) akan ditolak dengan pesan:
Periode payroll untuk karyawan ini sudah final. Batalkan (void) payroll-nya dulu untuk mengoreksi absensi.
Ini disengaja. Angka gaji sudah dipatok dari absensi itu; kalau absensinya diam-diam berubah, catatan gaji dan catatan absensi jadi tidak cocok.
Kalau memang ada yang harus dikoreksi, urutannya:
Langkah 6 — Batalkan (void) kalau ada yang salah
Tekan Batalkan (void)
Tombol ini hanya muncul saat status Final — yaitu sebelum ditandai
dibayar. Isi Alasan pembatalan (wajib, contoh: ada koreksi absensi), lalu
Ya, batalkan. Muncul "Payroll dibatalkan."
Apa yang terjadi
- Status jadi Dibatalkan. Datanya tetap disimpan untuk jejak audit — tidak ada yang dihapus.
- Absensi periode itu terbuka lagi — manajer bisa mengoreksi.
- Anda boleh membuat payroll baru untuk outlet & periode yang sama.
Yang tidak bisa dibatalkan
Payroll yang sudah Dibayar tidak bisa di-void — uangnya sudah keluar. Koreksinya lewat pembukuan: Kalau sudah dibayar tapi ada yang salah.
Payroll Draf juga tidak perlu di-void — cukup Hitung ulang, atau biarkan saja.
Langkah 7 — Bagikan slip gaji karyawan
Setiap baris karyawan di payroll yang sudah Final atau Dibayar punya tombol Unduh Slip di kolom Slip Gaji. Tombol ini membuat slip gaji PDF untuk karyawan itu — rapi, berbahasa Indonesia, siap dicetak atau dikirim.
Sistem tidak mengirim slip lewat WhatsApp atau email. Ini disengaja: kuota WhatsApp dipakai untuk PO dan pengingat, bukan slip gaji. Karyawan mengambil slipnya sendiri dari menu Slip Gaji Saya. Tombol di halaman ini adalah jalur cadangan untuk karyawan yang tidak punya akun login — Anda unduhkan, lalu berikan langsung ke orangnya.
Tekan Unduh Slip di baris karyawannya
Slip PDF terbuka di tab baru dengan nama berkas seperti
slip-gaji-2026-07-Budi_Santoso.pdf. Anda bisa mengunduhnya berkali-kali —
isinya selalu sama.
Periksa isinya sebelum diberikan
Slip berisi: nama & level karyawan, hari hadir × tarif harian, jam lembur × tarif lembur, semua bonus & potongan, Bruto, Total Potongan, dan GAJI BERSIH (NETO) sebagai angka utama — plus status dan tanggal dibayar (kalau sudah Dibayar).
Angkanya diambil dari angka yang sudah dibekukan saat Finalkan — bukan dari tarif yang berlaku hari ini. Jadi kalau Anda menaikkan tarif harian bulan depan, slip bulan lalu tidak ikut berubah. Itu memang yang benar.
Tombol tidak muncul?
Kolom Slip Gaji hanya muncul di payroll Final atau Dibayar. Kalau statusnya masih Draf, tombolnya tidak ada — angkanya belum dibekukan, jadi belum boleh dijadikan slip. Finalkan dulu (Langkah 3).
Manager tidak bisa mengunduh slip siapa pun — sama seperti mereka tidak bisa melihat halaman Payroll. Ini bagian dari menjaga kerahasiaan gaji. Karyawan hanya bisa mengunduh slipnya sendiri, tidak bisa melihat slip rekannya.
Membayar Tagihan Tempo (Pembayaran)
Panduan Admin/Keuangan/Owner membayar SEMUA tagihan yang belum dibayar — Pembelian tempo, Biaya Operasional (Opex) tempo, dan PO — dari satu halaman Pembayaran di MBS Food Cost. Cari tagihan, lihat mana yang terlambat (merah 'Terlambat N hari'), isi Nominal + Sumber Dana (mis. Kas Kecil) dan tekan Bayar — atau centang beberapa tagihan dari vendor & outlet yang sama dan tekan 'Bayar Terpilih' untuk melunasi semuanya dengan SATU transfer/pengeluaran kas. Mencatat pembayaran menandai tagihan jadi PAID dan — kalau dari Kas Kecil — mengurangi saldo kas; tetapi TIDAK menambah biaya bahan (COGS), karena biaya itu sudah masuk lebih awal. Satu tagihan tidak bisa dibayar dua kali.
Cara Membekukan Laba Rugi (Snapshot P&L)
Panduan Keuangan / Admin / Owner membekukan (snapshot) Laba Rugi satu outlet per periode di MBS Food Cost — menyimpan angka Laba Rugi DAN pembagian hasil (bagi hasil) apa adanya saat itu, sebagai arsip resmi yang tidak ikut berubah walau catatan sumber diedit belakangan. Snapshot adalah syarat sebelum periode bisa ditutup.