Point of Sale (POS) / Kasir / Point of Sale (POS)
Diperbarui: 2026-10-31~127 menit baca
Point of Sale (POS) / Kasir
Terakhir diperbarui / Last updated: 1 September 2026 · Versi / Version: 4.3
Ringkasan / Overview
Modul POS adalah sistem kasir lengkap yang dirancang untuk bisnis retail, F&B, lapak/gerai, dan toko fisik. Setiap transaksi POS otomatis membuat jurnal akuntansi double-entry — pendapatan, HPP, dan stok — sehingga laporan keuangan selalu terkini tanpa input ulang.
Apa yang bisa dilakukan POS FirstJournal:
- Proses transaksi cepat dengan katalog produk + search + barcode
- Terima pembayaran Tunai, QRIS, Transfer Bank, Kartu Debit/Kredit
- Split payment (bayar dengan beberapa metode sekaligus)
- Kelola beberapa outlet dengan kasir berbeda per shift
- Mode lapak dengan GPS tracking real-time
- Retur & void transaksi dengan jurnal reversal otomatis
- Laporan Z-Report per sesi dan laporan harian
| Role | Hak Akses |
|---|---|
| Owner / Admin | Semua fitur: setup outlet, lihat laporan, void, buka/tutup sesi |
| Kasir (preset) | Buka/tutup sesi, input transaksi, retur, lihat riwayat sesi sendiri |
| Staff | Hanya lihat transaksi, tidak bisa buka sesi baru |
Untuk mengatur izin kustom per role, buka Pengaturan → Pengguna & Akses.
Semua transaksi POS harus dilakukan dalam sesi kasir yang aktif.
Langkah membuka sesi:
- Buka halaman POS dari sidebar
- Pilih outlet yang ingin digunakan
- Klik Buka Kasir (atau "Mulai Sesi")
- Masukkan kas awal (uang tunai di laci kasir saat mulai shift)
- Klik Mulai Sesi — sistem membuka sesi dan langsung masuk ke layar kasir
💡 Tips: Kasir yang sudah memiliki sesi aktif akan muncul tombol "Lanjutkan Sesi" — klik untuk melanjutkan tanpa membuka sesi baru.
⚠️ Satu outlet, satu sesi aktif per kasir. Jika kasir lupa menutup sesi, Owner/Admin bisa menutup paksa dari halaman POS.
Menutup sesi (Z-Report):
- Di layar kasir, klik tombol Tutup Sesi
- Masukkan kas akhir (jumlah uang tunai di laci)
- Sistem menghitung selisih kas otomatis
- Z-Report tersedia untuk dicetak atau disimpan
Di halaman POS (Kasir), ada tab "Akun" di bilah navigasi bawah (sejajar Kasir/Antrian/Laporan). Ketuk tab ini untuk:
- Kunci Layar — mengunci sementara tanpa logout (dipakai saat tinggalkan meja kasir sebentar). Butuh PIN/password untuk membuka kembali.
- Keluar — logout penuh dari akun.
💡 Tips: Fitur ini penting untuk outlet dengan tablet/HP bersama (shared device) — pastikan setiap kasir logout atau kunci layar saat pergantian shift, agar transaksi tidak salah tercatat atas nama kasir yang salah.
Setiap outlet bisa punya daftar produk yang dijual berbeda-beda — misalnya outlet mall hanya jual minuman & dessert, sementara outlet pusat jual semua produk. Atur ini dari POS → pilih outlet → Katalog Produk.
Dua mode:
- Semua Produk (default) — semua produk aktif POS otomatis muncul di kasir outlet ini
- Pilih Produk Tertentu — hanya produk yang dicentang yang muncul di kasir outlet ini
Setelah memilih "Pilih Produk Tertentu":
- Produk dikelompokkan otomatis per kategori — klik checkbox di judul kategori untuk langsung pilih/batal semua produk di kategori itu (tidak perlu klik satu-satu)
- Panel Kategori di sisi kiri (atau tombol "Kategori" di HP) untuk lompat cepat + pilih banyak kategori sekaligus
- Gunakan Urutkan dan Filter untuk menyaring produk: cari nama/SKU, filter berdasarkan kategori, status stok (habis/menipis/aman), rentang harga, produk yang sudah/belum dipilih, atau produk yang belum ada fotonya (produk tanpa foto ditandai kotak kuning putus-putus agar mudah terlihat)
- Sebelum klik Simpan Perubahan, jumlah produk yang ditambah/dihapus ditampilkan jelas di bagian bawah — klik untuk lihat daftar nama produknya
- Kalau perubahan akan menghapus banyak produk sekaligus dari kasir outlet, sistem akan minta konfirmasi dulu
💡 Kalau ada perubahan yang belum disimpan, sistem akan mengingatkan sebelum Anda pindah halaman — supaya tidak ada perubahan yang hilang tanpa sengaja.
Saat produk punya beberapa grup varian (misalnya "Dine In/Take Away", "Kemanisan", "Ukuran & Suhu"), Anda bisa atur bagaimana kasir mengisinya lewat POS → pilih outlet → Katalog Produk → Mode Input Variasi.
Dua mode:
- Sekaligus (default) — semua grup varian tampil bersamaan, kasir bisa isi dalam urutan bebas
- Bertahap — grup varian tampil satu per satu sesuai urutan. Kasir tidak bisa memilih varian berikutnya sebelum varian sebelumnya diisi. Cocok untuk tim yang ingin memastikan kasir selalu menanyakan setiap pertanyaan ke pelanggan secara berurutan (misalnya bisnis dengan banyak cabang dan turnover staff tinggi).
💡 Urutan tampil grup varian diatur lewat "Atur Variasi" di halaman resep/produk — berlaku untuk kedua mode.
💡 Kalau punya banyak outlet, gunakan tombol "Terapkan ke Semua Outlet" di halaman ini supaya tidak perlu atur satu per satu.
Sejak 27 Agustus 2026, tombol "Pelanggan" (untuk pasang Member) dan "Cek Pelanggan" (untuk lihat riwayat & saran produk) digabung jadi satu kotak nomor HP yang selalu ada di bagian atas keranjang — tidak perlu klik tombol terpisah lagi. Riwayat & saran produk otomatis muncul begitu kasir mengetik nomor HP pelanggan; pasang Member tetap harus klik terpisah (tidak otomatis).
Cara pakai di kasir:
- Di bagian atas keranjang (desktop) atau lewat ikon orang di sebelah tombol "Buka Keranjang" (HP), ketik nomor HP pelanggan — minimal 4 digit baru mulai mencari
- Kalau nomor pas persis dengan pelanggan yang sudah terdaftar, otomatis terpilih tanpa perlu klik hasil pencarian
- Kalau pelanggan ditemukan dan punya riwayat transaksi, langsung muncul (tanpa klik apa pun lagi):
- Segmen pelanggan (misal "Pelanggan Setia", "Berisiko Hilang")
- Total kunjungan, total belanja, rata-rata belanja, terakhir datang berapa hari lalu
- Kartu saran — 1 kalimat siap pakai (misal "Biasanya pesan Kopi Susu. Tambahkan?") dengan tombol "Tambah ke Keranjang" — klik sekali langsung masuk keranjang, tidak perlu cari manual di menu
- Kalau pelanggan itu sudah jadi Member loyalty, otomatis terpasang sebagai Member begitu ditemukan, jadi diskon/poin langsung berlaku di transaksi ini. Tekan "Lepas" bila tidak ingin memakainya
- Kalau BELUM jadi Member, ada tombol "Daftarkan sebagai Member" yang langsung membuka form pendaftaran dengan nomor & nama sudah terisi
- Kalau nomor belum terdaftar sama sekali, ada 2 pilihan: "Daftarkan Pelanggan Baru" (langsung daftar) atau "Simpan untuk struk" (nomor tetap dibawa ke layar pembayaran tanpa mendaftarkan dulu)
- Di keyboard desktop, tekan F2 untuk langsung fokus ke kotak nomor HP ini
💡 Fitur riwayat & saran ini butuh toggle "Cek Pelanggan" aktif di POS → Pengaturan → Analisis Pelanggan di Kasir (default OFF) — tapi kotak nomor HP-nya sendiri SELALU muncul di keranjang, walaupun togglenya mati (karena ini sekarang satu-satunya cara pasang Member juga).
💡 Data riwayat & saran berlaku untuk SELURUH outlet di organisasi ini (pelanggan yang biasa belanja di cabang lain tetap terdeteksi) — tapi saran produk hanya menawarkan produk yang memang tersedia di outlet tempat kasir sedang bertugas.
💡 Di layar HP sempit, ada 2 cara buka kotak ini: (1) ketuk ikon orang di sebelah tombol "Buka Keranjang" di bagian bawah layar, atau (2) buka keranjang penuh — kotak ini ada di paling atas.
Mencari & Menambah Produk
- Ketuk produk di katalog untuk menambah ke keranjang
- Search bar: ketik nama atau SKU produk — tekan
/di keyboard untuk langsung fokus ke search - Barcode scanner: scan otomatis terdeteksi (kecepatan input < 80ms = mode barcode)
- Filter kategori: ketuk tab kategori di atas katalog untuk menyaring produk
💡 Produk dengan stok nol tidak ditampilkan secara default.
Kelola Keranjang
- Ketuk angka kuantitas di baris produk untuk edit langsung
- Swipe kiri (mobile) atau klik ikon hapus untuk menghapus dari keranjang
- Tambahkan catatan per item atau per transaksi
- Tahan pesanan aktif dengan tombol Park (simpan sebagai "Parkir")
Pesanan Tertahan & Void Pesanan
Pesanan yang di-Park masuk ke drawer "Pesanan Tertahan" (ikon di header kasir). Dari sini kasir bisa Lanjutkan (buka kembali untuk ditambah/dibayar), Split (pecah jadi beberapa struk per tamu), atau Void Pesanan (batalkan).
- Split Bill per tamu (2026-09-14): klik Split pada pesanan tertahan, lalu klik item satu-satu untuk membagi ke masing-masing tamu (Tamu A, Tamu B, dst — bisa tambah sampai 8 tamu). Setiap tamu bisa bayar dengan metode berbeda-beda. Sebelum diproses, kasir bisa klik ikon mata ("Lihat Preview") di baris pembayaran tamu manapun untuk melihat rincian struk tamu itu (item, pajak, service charge, total) — struk preview ini bertuliskan "SIMULASI TAGIHAN" dan belum dianggap sebagai bukti bayar sah, jadi kasir/pelanggan bisa cek dulu sebelum benar-benar diproses. Tombol "Cetak Preview" di dalamnya mencetak lewat printer yang sama dengan struk asli.
- Entry point Split Bill dari modal Proses Pembayaran (2026-09-16): selain dari drawer Pesanan Tertahan, sekarang ada tombol sekunder "Split Bill" di modal Bayar (di atas tombol "Konfirmasi Pembayaran"). Kalau pesanan sedang dibayar itu sudah berstatus tertahan (tamu resume meja/tab), tombol ini langsung membuka wizard split. Kalau pesanan itu cart baru yang belum pernah ditahan, sistem otomatis menahannya dulu di belakang layar sebelum membuka wizard — kecuali cart itu sudah pakai voucher, dalam kasus itu tombol dinonaktifkan (dengan keterangan) karena voucher belum bisa ikut ke Split Bill (lihat poin berikutnya).
- Diskon auto-proporsi (2026-09-16): kalau pesanan yang di-split punya diskon manual/order-level, diskon itu sekarang otomatis dibagi proporsional ke tiap tamu sesuai subtotal masing-masing — kasir tidak perlu hitung manual lagi. Baris "Diskon (dari transaksi awal)" tampil read-only di wizard, terpisah dari field "Diskon Tambahan" (diskon ekstra manual per tamu, kalau diisi WAJIB pilih alasan dari dropdown yang muncul). Sisa pembulatan Rupiah (kalau ada) selalu diserahkan ke satu tamu bersubtotal terbesar, ditandai label kecil "(termasuk pembulatan)".
- Voucher belum bisa dipakai bareng Split Bill — kalau cart sudah pakai voucher dan belum pernah ditahan, tombol Split di modal Bayar dinonaktifkan. Solusinya: batalkan voucher dulu kalau memang mau split, atau lanjutkan pembayaran normal tanpa split.
- Layar "Split Bill Berhasil" (2026-09-16) — begitu Split Bill diproses, layar berganti menampilkan setiap tamu dengan tombol Cetak masing-masing (atau Cetak Semua untuk cetak berurutan). Cetak struk tiap tamu di sini sebelum menutup layar — layar ini sengaja tidak bisa ditutup lewat klik di luar kotak atau tombol X, hanya lewat tombol Selesai, supaya kasir tidak lupa mencetak.
- Kalau Split Bill gagal di tengah proses (sangat jarang) — kasir akan melihat pesan bahwa sebagian tamu SUDAH tercatat sebagai transaksi nyata (nomor transaksinya disebutkan), dan pesanan tertahan asalnya dikunci. Pesanan yang terkunci ini tidak akan muncul lagi di drawer Pesanan Tertahan — jangan coba cari di sana atau split ulang (bisa membuat transaksi dobel untuk tamu yang sudah berhasil). Hubungi admin/pemilik untuk meninjau transaksi yang sudah terlanjur dibuat.
- Void Pesanan selalu minta alasan — pilih dari dropdown (mis. "Pelanggan batal pesan", "Salah input pesanan") atau ketik sendiri via "Lainnya". Pesanan yang di-void tetap tersimpan di Riwayat Transaksi (tidak hilang), supaya bisa ditelusuri kalau diperlukan.
- Perlu approval manager (password/PIN) kalau pesanan itu sudah dikirim ke dapur/stasiun, bill-nya sudah dicetak, atau checker-nya sudah dicetak saat masih tertahan — ini untuk mencegah pesanan yang sudah diproses/ditunjukkan ke pelanggan dibatalkan sepihak tanpa sepengetahuan atasan. Kalau pesanan itu masih baru (belum ada satupun dari 3 kondisi di atas), kasir bisa langsung void sendiri cukup dengan alasan.
- Layar kasir ikut menyegarkan setelah Void Pesanan (2026-10-10): kalau pesanan yang di-void itu sedang terbuka di panel kanan, panel otomatis dikosongkan dan denah meja diperbarui (meja kembali Tersedia). Dulu panel tetap menampilkan pesanan lama dengan tombol Bayar masih aktif — sekarang tidak lagi. Kalau ada item baru yang belum terkirim di panel, kasir diberi tahu bahwa item itu ikut dibuang.
- Pesanan yang mencampur harga platform dengan harga lain (2026-10-10): satu pesanan hanya boleh memakai satu tingkat harga platform (GoFood / GrabFood / ShopeeFood), karena platform membayar satu kali untuk satu pesanan. Kalau item dengan harga berbeda ditambahkan ke pesanan yang sudah berjalan, muncul peringatan "Tetap Gabung" (sekarang juga di layar ponsel dan di pesanan yang dilanjutkan dari drawer Pesanan Tertahan). Pilih Buat Pesanan Terpisah, atau isi alasan lalu Tetap Gabung kalau memang disengaja. Kalau pesanan sudah terlanjur campur dan item-nya sudah dikirim ke dapur, harganya tidak bisa diubah dari layar bayar: batalkan seluruh pesanan lewat Pesanan Tertahan → Void Pesanan (perlu approval manager), lalu input ulang dengan tingkat harga yang benar. Pesanan yang punya Nota Kompensasi aktif tetap bisa di-void dengan persetujuan manager; waste dari Nota Buat Ulang tetap tercatat.
- Tingkat Harga mengikuti pesanan yang dibuka (2026-10-10): membuka meja baru, meja yang sudah punya pesanan, atau melanjutkan pesanan dari Pesanan Tertahan sekarang menyetel Tingkat Harga sesuai pesanan itu sendiri. Meja kosong selalu mulai dari Normal — tidak lagi ikut terbawa dari pesanan ShopeeFood sebelumnya. Pesanan yang semua itemnya satu platform tetap menambah item dengan harga platform itu.
- Void Pesanan dengan Nota Kompensasi aktif (2026-10-11): pesanan yang sudah punya Nota Kompensasi tetap bisa di-void, tetapi selalu perlu persetujuan manager. Waste dari Nota Buat Ulang (bahan yang sudah terpakai) tetap tercatat sebagai beban — tidak pernah dibalik hanya agar pesanan bisa di-void. Nota yang hanya berisi potongan/gratis (belum dibayar) dibatalkan otomatis; Nota campuran (Buat Ulang + Gratiskan) tetap aktif dan bagian uangnya ditandai "Pesanan di-void — waste tetap tercatat" (dihitung Rp0 di laporan). Nota pada pesanan yang sudah di-void tidak bisa dibatalkan manual.
- Siapa yang bisa jadi "manajer" (2026-09-13): Owner/Admin selalu bisa, untuk outlet manapun. Role "Supervisor Shift" dan "Manager Outlet" (Custom Role) juga bisa, tapi terbatas ke outlet mereka sendiri. Kalau Admin dibatasi ke cabang tertentu, wewenang approve-nya otomatis ikut terbatas ke outlet di cabang itu saja.
Riwayat Transaksi & Jejak Audit
Klik transaksi mana pun di Riwayat Transaksi untuk buka detailnya. Selain rincian item dan pembayaran, sekarang juga tampil:
- Info Transaksi — nomor meja & jumlah pax (untuk transaksi Makan di Tempat), kasir yang memproses, outlet, dan (kalau transaksi ini pernah di-void) siapa yang meng-void-nya beserta waktunya
- Jejak Audit — riwayat kejadian penting pada transaksi ini (mis. void, koreksi metode pembayaran) yang bisa dibuka/tutup, lengkap dengan siapa dan kapan
- Riwayat Cetak — setiap kali struk/label/tiket dapur di-cetak ulang dari layar ini, tercatat siapa dan kapan — berguna kalau perlu menelusuri struk mana yang pernah dicetak ulang
- Jam kirim ke dapur — untuk pesanan yang dikirim ke dapur/station, bagian Item menampilkan ringkasan per ronde (mis. "Ronde 1 — 10:57 WIB (3 item)") dan jam di label "Terkirim" tiap item. Berguna sebagai bukti kapan pesanan benar-benar masuk, termasuk untuk promo berbatas jam seperti Happy Hour yang dinilai dari jam kirim ini. Kalau kasir sedang offline, jam yang tercatat adalah jam saat tombol ditekan di perangkat. Penjualan langsung yang tidak dikirim ke dapur tidak menampilkan bagian ini.
Fitur ini murni untuk transparansi & investigasi (mis. Owner mengecek transaksi yang dicurigai) — tidak mengubah cara transaksi diproses sehari-hari.
Diskon
- Diskon %: masukkan persentase, berlaku ke subtotal
- Diskon Rp: masukkan nominal langsung
- Kode Voucher: masukkan kode promo dari program voucher
Proses Pembayaran
- Klik Proses Pembayaran (atau Bayar)
- Pilih metode pembayaran:
- Tunai — masukkan nominal diterima, sistem hitung kembalian otomatis
- QRIS — tampilkan QR code ke pelanggan, konfirmasi setelah bayar
- Transfer Bank — input nominal, konfirmasi manual
- Debit / Kredit — input via EDC, konfirmasi manual
- GoFood / GrabFood / ShopeeFood — untuk order yang datang dari aplikasi aggregator, klik tombol quick-select platform-nya (di bawah tombol Tunai/QRIS/dst). Pembayaran otomatis terarah ke Akun Penerimaan aggregator yang sudah dikonfigurasi Owner di Pengaturan Outlet — kasir tidak perlu pilih akun manual, dan komisi platform TIDAK otomatis dihitung dari sini (kalau outlet punya akrual komisi aktif, itu diatur terpisah di POS → Outlet → Akun Penerimaan). Tipe pesanan otomatis menjadi Antar saat tombol platform dipilih (di outlet F&B), supaya Service Charge/PB1 mengikuti pengaturan tipe Antar dan total sama dengan yang dibayar platform; kasir tetap bisa mengganti tipe pesanan
- Klik Konfirmasi Bayar
- Struk otomatis tersedia untuk cetak atau kirim via WhatsApp / Email
Split Payment (Bayar Campuran)
Pelanggan bisa membayar dengan beberapa metode:
- Di layar pembayaran, klik Split Payment
- Masukkan nominal untuk setiap metode (misal: Rp 50.000 Tunai + sisa QRIS)
- Konfirmasi total terpenuhi → Proses
Kas Masuk / Keluar & No-Sale (Kas Drawer, 2026-09-05)
Dari layar kasir, tombol Kas Drawer (biasanya di header) membuka pilihan Kas Masuk, Kas Keluar, dan No-Sale (buka laci tanpa transaksi). Sama seperti diskon manual, setiap Kas Masuk/Keluar sekarang wajib:
- Pilih alasan dari daftar tertutup (mis. "Setor ke bank", "Beli keperluan operasional", "Tambahan modal kas") — tidak bisa dikosongkan.
- Kalau nominalnya melebihi batas yang diizinkan outlet, kasir wajib minta PIN/password Manajer sebelum transaksi kas itu tersimpan.
💡 AI Assistant (chat) bisa bantu catat Kas Masuk/Keluar kecil, tapi TIDAK bisa memasukkan PIN Manajer — kalau nominalnya di atas batas, arahkan pencatatan itu ke layar Kasir langsung.
[Baru, September 2026 — jurnal otomatis] Untuk kategori Setor ke Bank, Top Up Modal, Belanja
Operasional, dan Pengembalian Kasbon, pencatatan kas ini sekarang otomatis muncul di jurnal
akuntansi (kalau akun tujuannya sudah diatur pemilik/akuntan di Pengaturan → Akuntansi) — kasir
tidak perlu langkah tambahan apapun. Di Riwayat Kas Drawer, setiap transaksi menampilkan badge kecil:
"Tercatat di pembukuan" (hijau, sudah masuk jurnal) atau "Menunggu dicatat tim akunting"
(netral — bukan tanda kesalahan, hanya menunggu diproses manual oleh tim akunting kalau kategorinya
"Lainnya", akun belum diatur, atau nominalnya di atas Rp 2.000.000 untuk Belanja Operasional). Untuk
Pengembalian Kasbon, kasir wajib memilih nama karyawan yang mengembalikan.
Transaksi Tidak Pernah Gagal karena Satuan Bahan Resep (F&B)
Untuk produk berbasis resep, jika ada bahan yang satuannya belum bisa dikonversi ke satuan stok (misal resep pakai "gr" tapi stok bahan "ml", dan belum ada aturan konversi), transaksi tetap berhasil diproses — tidak lagi terhenti total di layar Proses Pembayaran seperti sebelumnya.
- Kasir akan melihat notifikasi (toast) kuning: "⚠ Transaksi berhasil — tapi '[Produk]' perlu dicek pemilik (satuan bahan belum diatur). Struk tetap bisa dicetak."
- Notifikasi ini harus ditutup manual (tidak hilang otomatis) supaya tidak terlewat
- Produk yang kena kasus ini tetap mencatat HPP dari biaya riil (
costBasis/buyPrice), bukan estimasi asal-asalan - Owner/Admin bisa melihat daftar transaksi yang perlu ditinjau lewat banner "X transaksi perlu review resep" di Riwayat Transaksi (drawer) — klik untuk expand detail per transaksi, lalu Lihat transaksi untuk buka detailnya
💡 Perbaiki konversi satuan bahan di Persediaan → Produk & Jasa (satuan bahan) agar transaksi berikutnya tidak lagi memicu peringatan ini.
Fitur khusus untuk bisnis lapak, dan outlet mobile yang berpindah lokasi.
Aktifkan Mode Lapak
- Buka POS → Settings outlet yang ingin dijadikan lapak
- Tab GPS & Lokasi
- Aktifkan toggle Mode Lapak
- Opsional: aktifkan Wajib Check-in GPS dan set Deadline Check-in (misal 07:30)
Check-in Lokasi Saat Buka Sesi
Jika Mode Lapak aktif, kasir akan diminta check-in GPS sebelum bisa mulai transaksi:
- Sistem meminta izin lokasi dari browser
- GPS terdeteksi → alamat otomatis muncul (via OpenStreetMap)
- Konfirmasi → sesi dibuka, lokasi tersimpan
- Jika GPS ditolak atau tidak akurat → masukkan alamat manual
💡 Akurasi ±100m: GPS area terbuka biasanya akurat. Di area tertutup atau dalam gedung, gunakan input manual.
Fleet Map (Peta Semua Lapak) — Owner/Admin
Owner dan Admin dapat memantau semua lapak aktif dari satu peta:
- Sidebar → POS → Peta Lapak
- Peta menampilkan posisi terakhir setiap lapak
- Klik pin → lihat detail: kasir, omzet hari ini, waktu check-in, akurasi lokasi
- Status Segar (update < 30 mnt) vs Lama (> 30 mnt) vs Belum Mulai
- Tombol Hubungi via WA untuk kasir yang belum check-in
Lokasi diperbarui otomatis setiap 10 menit selama sesi aktif + langsung saat sinyal pulih dari offline.
Link Lokasi Publik (Pelanggan Temukan Lapak)
Buat link yang bisa dibagikan ke pelanggan agar mereka tahu lokasi lapak hari ini:
- POS → Pengaturan Outlet → GPS & Lokasi
- Aktifkan Link Lokasi Publik
- Klik Buat Link Lokasi → link otomatis dibuat:
firstjournal.id/find/[nama-lapak] - Salin link atau langsung Bagikan via WhatsApp
Pelanggan membuka link → melihat peta + alamat + tombol Google Maps.
⚠️ Link publik bisa diakses siapapun tanpa login. Hanya tampilkan nama outlet, lokasi, dan waktu update terakhir — tidak ada data keuangan.
🔒 Fitur ini tersedia mulai paket Pro. Starter tidak termasuk POS Offline.
POS Offline memungkinkan kasir tetap mencatat transaksi saat sinyal internet hilang — ideal untuk bazaar, pasar, area sinyal lemah.
Cara Install PWA (Progressive Web App)
Android (Chrome):
- Buka
firstjournal.iddi Chrome - Tap ikon Install di address bar (atau dari menu ⋮ → "Tambahkan ke layar utama")
- Konfirmasi install → ikon FirstJournal muncul di home screen
iOS (Safari):
- Buka
firstjournal.iddi Safari - Tap tombol Share (kotak dengan panah ke atas)
- Pilih "Tambahkan ke Layar Utama"
Pre-Flight Checklist (Sebelum ke Lokasi Offline)
Lakukan ini saat masih ada internet:
- Buka POS dan pastikan katalog produk ter-download (cek indikator sync)
- Pastikan lisensi offline aktif (tampil di header POS)
- Install PWA ke HP (jangan pakai browser biasa)
- Cek IndexedDB storage: minimal 50MB tersedia
Saat Offline
- Indikator "Offline" muncul di header POS
- Transaksi tetap bisa diproses — tersimpan di antrean lokal
- Badge "X Antrean" menampilkan jumlah transaksi yang menunggu sync
- Struk thermal tetap tercetak otomatis saat offline — menggunakan nomor sementara
OFFLINE-...karena nomor invoice resmi baru dibuat server setelah sync. Kalau perlu struk dengan nomor resmi, cetak ulang setelah online dari Riwayat Transaksi. - Semua metode bayar tersedia (Tunai, QRIS, Transfer — semua manual)
Setelah Online Kembali
- Antrean sync otomatis dalam hitungan detik
- Tap "Kirim Sekarang" untuk paksa sync semua antrean
- Cek Riwayat untuk konfirmasi semua transaksi berhasil direkam
- Tanggal transaksi tetap tanggal jualan aslinya — kalau jualan jam 23:00 lalu baru sync jam 00:30 (lewat tengah malam), transaksi itu tetap tercatat di laporan keuangan (P&L, Buku Besar) pada tanggal jualan sebenarnya, bukan tanggal saat HP kembali online. Ini otomatis, tidak perlu tindakan apapun dari kasir.
⚠️ Batas penyimpanan: tergantung kapasitas IndexedDB device (~50–100MB). Untuk bazaar besar, pastikan HP punya ruang cukup.
Layar "Mode Offline" Saat Aplikasi Dibuka Ulang Tanpa Internet
Kalau HP kasir mati/aplikasi ter-tutup paksa (misalnya baterai habis, aplikasi di-force close, atau HP restart) saat tidak ada internet, membuka kembali aplikasi POS akan menampilkan layar "Mode Offline" dengan permintaan PIN kasir — ini normal, bukan error.
- Masukkan PIN kasir yang sama seperti biasa (dicek langsung di HP, tidak perlu internet)
- Setelah PIN benar, kasir langsung masuk ke sesi kasir terakhir dan bisa lanjut transaksi seperti biasa
- Kalau muncul pesan "PIN offline belum tersimpan di perangkat ini" — berarti HP ini belum pernah dipakai untuk buka kunci layar dengan PIN secara online. Sambungkan internet sebentar, buka kunci sekali dengan PIN, baru bisa dipakai offline
- PIN yang salah akan ditolak seperti biasa (getar + pesan "PIN salah")
Fitur meja diaktifkan untuk outlet F&B (bukan outlet Retail). Outlet Retail melewati semua layar meja.
Setup Layout Meja (Floor Plan)
Buat denah lantai restoran sebelum mulai:
- POS → Outlets → [Outlet] → Table Layout
- Klik Tambah Area (misal: "Lantai 1", "Outdoor", "VIP Room")
- Di dalam area, klik Tambah Meja:
- Nama meja (misal: "Meja 1", "A1", "VIP-1")
- Kapasitas (jumlah kursi)
- Posisi di floor plan: drag & drop meja ke posisi yang diinginkan
- Semua perubahan otomatis tersimpan sebagai draf sambil kamu mengedit (lihat status "Draf tersimpan · [jam]" di toolbar) — tidak perlu tombol Simpan lagi. Draf ini BELUM tampil di kasir. Setelah layout sudah pas, klik "Terapkan Denah" (kanan atas) untuk mempublikasikan ke denah yang dilihat kasir/waiter
💡 Floor plan visual: setiap meja ditampilkan sebagai blok di kanvas. Warna menunjukkan status: abu-abu = kosong, hijau = terisi, kuning = dipesan/hold.
Draf & Terapkan Denah (2026-09-01)
Editor Denah Meja sekarang punya "ruang kerja" (draf) yang terpisah dari denah yang benar-benar dilihat kasir:
- Draf otomatis tersimpan setiap kamu mengedit (tambah/pindah/hapus meja, ubah area, dsb) — tidak akan hilang walau tab ditutup atau browser di-refresh
- Belum ada yang tampil di kasir sampai kamu klik "Terapkan Denah" — jadi kamu bisa bereksperimen dengan tata letak sepuasnya tanpa mengganggu operasional yang sedang berjalan, bahkan saat resto sedang buka
- Klik "Pratinjau" kapan saja untuk melihat ringkasan apa yang akan berubah (berapa meja baru/diubah/dihapus) sebelum benar-benar menekan Terapkan Denah
- Saat klik "Terapkan Denah", muncul konfirmasi berisi ringkasan perubahan — termasuk peringatan kalau ada meja/area yang seharusnya dihapus tapi sedang ada pesanan aktif (meja itu akan sengaja DIPERTAHANKAN, tidak dihapus, supaya bill yang berjalan tidak hilang)
- Ukuran kanvas, orientasi, dan gambar denah latar (background) TIDAK ikut sistem draf ini — perubahannya langsung berlaku begitu diklik, karena itu pengaturan tampilan workspace, bukan "isi" denah
💡 Ctrl+S (⌘+S di Mac) sekarang cuma memastikan draf tersimpan segera — TIDAK langsung menerapkan ke kasir. Tetap perlu klik "Terapkan Denah" secara sadar untuk mempublikasikan.
⚠️ Kalau muncul banner merah "Draf ini belum melihat perubahan terbaru" di atas kanvas — artinya ada lantai/area di denah live yang belum pernah muncul di draf kamu (biasanya karena "Pulihkan" di Riwayat Denah baru saja mengubah denah langsung, lihat bagian "Riwayat Denah" di bawah). Klik "Muat Ulang Draf" untuk memuat ulang dari data live terbaru — tapi ini akan membuang perubahan draf yang belum di-"Terapkan Denah", jadi pastikan tidak ada editan penting yang belum tersimpan dulu.
Ganti Nama/Kapasitas Meja yang Sudah Ada
- POS → Outlet → [Outlet] → "Kelola Meja" → tombol "Atur Denah" (kanan atas)
- Klik meja yang mau diubah di kanvas — panel "Edit Meja" muncul di sisi kanan
- Field "Nama" ada paling atas panel — ketik nama baru, tekan Enter atau klik di luar untuk simpan otomatis
- Jumlah kursi, bentuk meja, rotasi, warna, dan area juga bisa diubah dari panel yang sama
💡 Panel "Edit Meja" otomatis kembali ke atas (scroll reset) setiap kali pindah pilih meja lain — field "Nama" selalu langsung kelihatan tanpa perlu scroll manual.
Navigasi Kanvas — Zoom & Geser Tampilan
Baik di Editor Denah Meja maupun Kelola Meja:
- Zoom in/out: scroll mouse atau trackpad langsung di atas kanvas, atau pakai tombol [-] [persentase] [+] di pojok kanan-bawah — klik angka persennya untuk reset ke 100%
- Geser tampilan (pan): tahan tombol Space lalu seret, atau klik tombol tengah mouse lalu seret — berguna kalau tampilan sudah ter-zoom ke posisi yang sulit dijangkau
Ukuran & Bentuk Area Kerja Kanvas
Area kerja Editor Denah Meja bisa diatur ukurannya lewat pilihan tetap (bukan drag manual) — cocokkan dengan jumlah meja outletmu:
- Buka menu Tampilan di toolbar
- Klik "Ukuran Kanvas" — muncul 4 pilihan: S (kios/counter kecil), M (default, cukup untuk puluhan meja), L, dan XL (skala outlet besar/chain dengan ratusan meja)
- Pilih ukuran yang sesuai — kanvas langsung menyesuaikan
Bentuk kanvas (lebar vs memanjang ke bawah) diatur terpisah lewat tombol "Orientasi Kanvas" di menu yang sama (Landscape/Portrait) — sesuai bentuk ruangan aslinya. Kalau isi denah terasa banyak walau sudah pilih ukuran yang pas, gunakan zoom out untuk lihat semuanya sekaligus, atau zoom in + geser (pan) untuk fokus ke satu bagian ruangan.
⚠️ Kanvas tidak bisa diperkecil (pindah ke ukuran lebih kecil) kalau ada meja/elemen yang posisinya akan jatuh di luar batas baru — sistem akan menolak dan memberi tahu elemen mana yang perlu dipindah dulu.
Pindahkan Area ke Lantai Lain
Kalau kamu salah menaruh sebuah Area di lantai yang keliru (misal Area "Ruang Utama" ternyata seharusnya masuk ke "Dine in Lantai 1"), tidak perlu hapus dan buat ulang:
- Di sidebar kiri, klik "..." di sebelah nama Area yang mau dipindah
- Pilih "Pindahkan ke Lantai Lain"
- Klik nama lantai tujuan dari daftar yang muncul
Meja yang sudah ditempatkan di Area itu ikut pindah otomatis — kalau posisinya kebetulan jatuh di luar batas kanvas lantai tujuan, sistem otomatis menggeser posisinya masuk ke dalam batas (bukan menolak, karena tujuannya memang memindahkan, bukan mempertahankan posisi persis).
Riwayat Denah — Kembalikan ke Versi Sebelumnya
Setiap kali kamu klik "Terapkan Denah" di Editor Denah Meja, sistem otomatis menyimpan snapshot ("checkpoint") seluruh denah outlet SEBELUM perubahan diterapkan — jadi kalau ada perubahan yang salah, tidak perlu input ulang dari nol.
- Di Editor Denah Meja, klik menu "Lainnya" di toolbar → pilih "Riwayat Denah"
- Panel Riwayat menampilkan daftar checkpoint dengan label + waktu simpan (format WIB)
- Klik nama checkpoint untuk ganti nama/label-nya (misal "Sebelum event akhir tahun")
- Klik "+ Buat Checkpoint Sekarang" untuk simpan checkpoint manual kapan saja, tanpa harus menunggu Terapkan Denah
- Klik "Pulihkan" pada checkpoint yang diinginkan — muncul konfirmasi yang menunjukkan PERSIS apa yang akan terjadi (berapa lantai/area/meja dikembalikan, berapa yang perlu dibuat ulang, meja mana yang akan dilepas dari kanvas) — baca dulu sebelum klik "Pulihkan" untuk konfirmasi
⚠️ Beda dengan edit manual di kanvas: "Pulihkan" langsung mengubah denah LIVE yang dilihat kasir saat itu juga — TIDAK melalui draf/Terapkan Denah seperti edit biasa (drag meja, tambah area, dst). Kalau kamu sedang punya perubahan draf yang belum diterapkan saat memulihkan checkpoint, draf itu tidak ikut berubah — cek dan Terapkan Denah terpisah kalau memang mau memakainya juga.
Pulihkan sekarang benar-benar mengembalikan tampilan denah PERSIS seperti saat checkpoint itu disimpan — termasuk lantai, area, atau meja yang sudah dihapus permanen sejak itu. Kalau sebuah lantai/area/meja di checkpoint sudah tidak ada lagi:
- Kalau ada lantai/area/meja SAAT INI dengan nama yang sama persis dan belum "dipakai" checkpoint lain → dipakai ulang (bukan bikin duplikat)
- Kalau tidak ada yang cocok namanya → dibuat baru dari nol, persis seperti posisi/bentuk/ukuran di checkpoint
⚠️ Pulihkan hanya mengembalikan tata letak (nama meja, kapasitas, posisi, bentuk, rotasi, warna, area) — status meja yang sedang berjalan (kosong/terisi/hold) TIDAK ikut berubah, supaya transaksi yang sedang aktif tidak terganggu. 💡 Setiap kali Pulihkan dijalankan, sistem otomatis membuat checkpoint "Sebelum pulihkan..." terlebih dahulu — jadi tindakan Pulihkan sendiri juga bisa dibatalkan. Checkpoint disimpan tanpa batas (tidak ada penghapusan otomatis), tapi bisa dihapus manual dari panel Riwayat kalau daftarnya ingin dirapikan. ℹ️ Meja yang dibuat SETELAH checkpoint dipilih (jadi tidak ada di riwayat itu) otomatis dipindahkan ke "Belum Ditempatkan" saat Pulihkan — bukan dihapus, cuma dilepas dari kanvas — supaya tidak bertumpuk dengan posisi meja lama yang dipulihkan. Tinggal drag lagi ke kanvas kalau masih dipakai. ⚠️ Kalau meja yang seharusnya dilepas itu sedang ADA PESANAN AKTIF (status terisi/hold), meja itu SENGAJA dibiarkan — tidak dilepas, tidak diubah sama sekali — supaya bill yang sedang berjalan tidak hilang dari layar di tengah pelayanan. Dialog konfirmasi akan memberi tahu meja mana saja yang seperti ini sebelum kamu klik Pulihkan.
Proses Order F&B
- Dari layar POS, pilih tipe order: Dine-in, Takeaway, atau Delivery
- Untuk Dine-in: pilih meja dari floor plan
- Input pesanan produk ke keranjang
- Klik Kirim ke KDS (Kitchen Display System) — pesanan muncul di layar dapur
- Saat pesanan siap, kasir konfirmasi → proses pembayaran
Status Meja
| Status | Warna | Artinya |
|---|---|---|
| Kosong | Abu-abu | Meja tersedia |
| Terisi | Hijau | Ada pesanan aktif |
| Hold | Kuning | Dipesan, belum order |
| Gabung | Biru | Meja digabung (merge) |
Gabung & Pisah Meja (Merge/Split)
- Gabung: Pilih beberapa meja → klik Gabung Meja — semua pesanan digabung ke satu tagihan
- Pisah: Dari meja gabungan → klik Pisah untuk memisahkan kembali
Tab Meja — Pesanan Bertahap / Dine-in Table Tab
Fitur Tab Meja memungkinkan pelanggan memesan beberapa kali dalam satu kunjungan — semua pesanan dikumpulkan dalam satu tagihan dan dibayar di akhir.
Alur Tab Meja:
- Kasir pilih meja → input pesanan pertama → klik Kirim ke Dapur (tanpa bayar)
- Meja masuk status HOLD — pesanan tersimpan, meja belum ditutup
- Pelanggan minta tambahan → kasir buka meja yang sama → klik + Tambah Pesanan
- Input item baru → Kirim ke Dapur lagi
- Semua pesanan terakumulasi dalam satu tab
- Saat pelanggan minta bill → klik Bayar → total semua pesanan tampil → proses pembayaran normal
Identitas pemesan (opsional):
- Di storefront/lapak online: pelanggan isi nama sebelum pesan — muncul di KDS sebagai "Pesanan dari [Nama]"
💡 Shortcut: Jika kasir sudah ada di meja HOLD, tombol langsung berubah menjadi + Tambah Pesanan — tidak perlu cari meja lagi.
Nomor HP otomatis terisi saat tutup tagihan:
Jika pelanggan sudah mengisi nomor HP saat pesan via QR meja, field "No. HP pelanggan (08xx…)" di layar Proses Pembayaran akan otomatis terisi — kasir tidak perlu tanya/ketik ulang. Kasir tetap bisa mengedit nomor atau klik Lewati. Nomor yang terisi otomatis langsung tertaut ke data pelanggan (poin loyalty & riwayat pembelian ikut tercatat).
Jumlah Tamu (Pax):
Saat meja dine-in dipilih, muncul stepper Pax (ikon orang) di panel keranjang — opsional, untuk mencatat jumlah tamu per rombongan. Tersimpan otomatis setiap kali klik Kirim ke Dapur, dan ikut tercetak di salinan Cetak Checker.
Cetak Checker — salinan checklist untuk staf (bukan struk):
Setelah Kirim ke Dapur, sistem otomatis mencetak 3 salinan checklist tanpa harga untuk ditempel: Salinan Meja (semua item, dipegang pelayan/ditempel di meja), Salinan Dapur (hanya item berstasiun dapur), Salinan Bar (hanya item berstasiun bar) — masing-masing ada kotak kosong [ ] di depan tiap item supaya staf bisa mencentang manual saat item siap. Salinan dapur/bar dilewati otomatis kalau tidak ada item untuk stasiun itu. Tombol manual "Cetak Checker" (ikon ✓☰, di sebelah "Cetak Bill") tersedia untuk cetak ulang kapan saja.
"Catatan tambahan" ikut tercetak: kalau diisi saat Park Transaksi (misal "Minta sambal extra"), teks ini sekarang otomatis muncul di KOT dan semua salinan Cetak Checker. "Label Order" (misal "Meja 5 · Pak Budi") tidak ikut tercetak — itu cuma tag pencarian internal di drawer Tertahan.
Cetak Bill (Cross-check Pelanggan) — sebelum bayar:
Kalau pelanggan minta cek tagihan dulu sebelum menentukan metode pembayaran, kasir bisa klik tombol "Cetak Bill (Cross-check Pelanggan)" di keranjang — mencetak rincian item + subtotal + service charge + pajak + total dari isi keranjang SAAT ITU, lengkap dengan tanda "Ini bukan bukti pembayaran" di bawahnya. Beda dari Cetak Bill di alur Tab Meja (yang butuh tab sudah dibuat), ini bisa dicetak kapan saja selama keranjang tidak kosong — bahkan sebelum order dikirim ke dapur.
KDS menampilkan pesanan masuk di layar dapur secara real-time, menggantikan kertas KOT (Kitchen Order Ticket).
Akses KDS
- Buka browser di perangkat dapur (tablet/monitor)
- Login ke akun yang sama
- Buka: POS → Outlets → [Outlet] → KDS
- Pilih station: KITCHEN (makanan), BAR (minuman), atau Semua
Alur KDS
- Kasir input pesanan → klik Kirim ke KDS atau Bayar+Kirim
- Pesanan muncul di layar KDS dapur
- Tim dapur proses setiap item → klik Selesai
- Saat semua item ready → notifikasi "Pesanan Siap" dikirim ke kasir
- Kasir konfirmasi → sajikan ke meja
Multi-Station Routing
Atur routing pesanan per produk:
- Persediaan → Edit Produk → KDS Station
- Pilih:
KITCHEN,BAR, atauBOTH - Produk tanpa assignment → tidak muncul di KDS
Contoh: "Nasi Goreng" → KITCHEN, "Jus Jeruk" → BAR, "Paket Combo" → BOTH
Kelola Station Produk Sekaligus (Bulk)
Untuk mengatur banyak produk sekaligus tanpa buka edit produk satu-satu:
- Buka POS → Products → Station Produk (KDS)
- Filter produk pakai pill di atas: Semua, Tanpa Station (ditandai jika ada produk belum di-set), Dapur, Bar, Dapur & Bar, atau Station Lain
- Gunakan search (nama, SKU, atau kategori) untuk mempersempit daftar
- Centang produk satu per satu, atau klik Pilih semua (N) untuk pilih semua yang sedang tampil di filter
- Di action bar bawah, klik salah satu: Dapur, Bar, Dapur & Bar, atau Hapus (menghapus assignment station)
💡 Halaman ini menampilkan hitungan live per kategori — kalau badge Tanpa Station menunjukkan angka > 0, artinya ada produk yang tidak akan ter-route ke KDS manapun saat outlet memakai printer Dapur & Bar terpisah.
Auto-Print KOT
Aktifkan Auto Print di header KDS untuk cetak tiket dapur otomatis setiap ada pesanan baru. Membutuhkan printer thermal terhubung di perangkat KDS.
Terima order dari pelanggan secara online dengan pembayaran Midtrans — pesanan langsung masuk ke KDS.
Cara Aktifkan
- POS → Outlets → [Outlet] → Pengaturan Storefront
- Masukkan Midtrans Server Key & Client Key (dari dashboard Midtrans)
- Aktifkan storefront → link publik tersedia:
[domain]/toko/[slug-outlet]
Alur Order Online
- Pelanggan buka link storefront → pilih menu → bayar via Midtrans (QRIS/VA/CC)
- Pembayaran sukses → pesanan masuk ke KDS dengan badge "ONLINE"
- Tim dapur proses → mark selesai di KDS
- Kasir konfirmasi "Selesai" → status order update ke customer
Notifikasi Order Baru (Real-Time)
Saat ada order online masuk, kasir yang sedang buka POS mendapat notifikasi instan — tidak perlu refresh halaman:
| Notifikasi | Deskripsi |
|---|---|
| 🔔 Chime | Bunyi 2 nada (880 Hz → 1175 Hz) |
| 📱 Toast | Pop-up di sudut layar: nama pelanggan + jumlah item |
| 🔴 Badge | Angka merah di ikon Antrian |
Atur suara:
- Klik ikon 🔔 di header kasir untuk mute/unmute notifikasi suara
- Preferensi tersimpan di perangkat (tidak reset saat login ulang)
ℹ️ Notifikasi real-time membutuhkan tab kasir tetap terbuka (polling 30 detik sebagai fallback jika koneksi WebSocket terputus).
Cetak KOT Order Online dari Perangkat Kasir
Untuk outlet yang tidak memakai printer jaringan (pakai printer Bluetooth, browser, atau native):
- Printer Bluetooth tersambung: tiket dapur (KOT) untuk order online otomatis tercetak saat order baru masuk — selama halaman kasir tetap terbuka
- Tanpa printer Bluetooth (atau ingin cetak ulang): klik tombol 🍳 Cetak KOT di kartu order pada layar Antrian (tersedia untuk order berstatus masuk/diproses)
ℹ️ Cetak dari perangkat kasir memerlukan tab tetap terbuka dan browser Chrome/Edge. Untuk auto-cetak yang lebih andal (termasuk saat layar tertutup), gunakan printer jaringan.
Dua jenis reward yang bisa digunakan di POS:
1. Membership Discount (B2B)
Pelanggan dengan membership aktif mendapat diskon otomatis:
- Saat checkout, klik Pilih Member
- Cari nama atau nomor HP pelanggan
- Member terdeteksi → diskon membership otomatis diterapkan ke subtotal
- Konfirmasi → transaksi tercatat dengan diskon
2. Poin Loyalty (B2C)
Pelanggan mengumpulkan dan menukar poin:
Penukaran poin:
- Pilih member di checkout
- Muncul banner "X Poin = Rp Y diskon"
- Ketuk Tukarkan Poin → diskon ditambahkan
- Konfirmasi pembayaran
Reward item gratis:
- Jika pelanggan memenuhi syarat reward item gratis, item otomatis ditambahkan ke keranjang dengan harga Rp 0
- Penjual tetap mencatat HPP → jurnal Dr HPP/Cr Persediaan tetap dibuat
💡 Earn poin: setiap transaksi mengumpulkan poin secara otomatis sesuai aturan yang dikonfigurasi di Pengaturan → Customer Rewards.
Diskon Manual
Di layar pembayaran:
- Diskon %: masukkan persentase (misal: 10%)
- Diskon Rp: masukkan nominal langsung (misal: Rp 20.000)
⚠️ Wajib pilih alasan (2026-09-05): setiap kali kasir memasukkan diskon manual atau mengedit harga item secara manual, sistem akan minta kasir memilih alasan dari daftar pilihan (mis. "Harga salah input", "Kompensasi pelanggan", "Promo lisan", atau "Lainnya" dengan keterangan bebas). Kalau diskon/perubahan harga itu melebihi batas yang diizinkan outlet (diatur Owner/Admin di Pengaturan), kasir akan diminta PIN atau password Manajer sebelum transaksi bisa diselesaikan — sama seperti approval Void. Diskon 100% (gratis total) selalu butuh approval Manajer, berapapun batas outletnya.
Kode Voucher
- Di keranjang atau layar pembayaran, klik Masukkan Kode Voucher
- Ketik kode → sistem validasi otomatis
- Jika valid → diskon sesuai voucher diterapkan
Kode voucher dibuat di POS → Voucher/Promo oleh Owner/Admin.
⚠️ Masa berlaku: voucher expired atau sudah mencapai batas penggunaan akan ditolak otomatis.
Tipe Voucher: Persen, Nominal, atau Beli-Gratis (2026-09-10)
Saat membuat voucher di POS → Voucher/Promo, Owner/Admin pilih salah satu dari 3 tipe:
- Persen (%) — potongan berdasarkan persentase belanja, bisa dibatasi maksimal Rp tertentu
- Nominal (Rp) — potongan langsung sejumlah Rupiah tetap
- Beli-Gratis (BOGO) — mis. "Beli 1 Gratis 1": pelanggan beli sejumlah unit produk tertentu, lalu sejumlah unit lain otomatis digratiskan (atau didiskon sebagian) di kasir. Bisa diatur harus produk yang sama atau boleh beda produk ("gratis produk lain" — mis. beli apa saja gratis 1 menu tertentu), dan dibatasi berapa kali maksimal berulang dalam satu transaksi. Saat kasir menerapkan kode voucher ini, sistem otomatis menghitung unit mana yang digratiskan dan menampilkan potongan Rupiah yang sesuai — sama seperti tipe Persen/Nominal, tidak perlu langkah tambahan dari kasir.
Mengelola Voucher yang Sudah Dibuat (2026-09-06)
Owner/Admin bisa klik voucher mana pun di daftar POS → Voucher/Promo untuk membuka panel detail dengan opsi:
- Nonaktifkan / Aktifkan — matikan voucher tanpa menghapusnya, bisa diaktifkan lagi kapan saja
- Edit — voucher yang belum pernah dipakai bisa diubah semua bagiannya; voucher yang sudah pernah dipakai tetap bisa diubah nama, periode, dan batas pemakaiannya, tapi Tipe/Nilai/Maks Diskon dikunci supaya laporan transaksi lama tidak berubah
- Arsipkan — sembunyikan voucher dari daftar tanpa menghapus riwayat pemakaiannya (satu-satunya opsi untuk voucher yang sudah pernah dipakai)
- Hapus permanen — hanya tersedia untuk voucher yang belum pernah dipakai sama sekali
- Duplikat sebagai Voucher Baru — salin semua pengaturan voucher ke voucher baru dengan kode berbeda
Voucher Terbawa dari Pesanan Online (F&B)
Jika pelanggan memilih voucher saat checkout via QR meja (storefront), kasir tidak perlu ketik ulang kode — voucher otomatis terbawa dan diterapkan saat menutup tagihan meja tersebut:
- Badge "Voucher [kode]" muncul otomatis di panel tagihan
- Hanya 1 voucher per tagihan yang berlaku (yang pertama menang)
- Saat voucher aktif, panel Tukar Poin disembunyikan di modal pembayaran — muncul pesan: "Voucher [kode] sedang dipakai — tukar Koin dinonaktifkan (tidak bisa digabung). Hapus voucher dulu untuk pakai Koin."
- Berpindah ke meja lain akan menghapus voucher yang terbawa
Membuka Riwayat
Di layar kasir → klik ikon Riwayat (jam) di header.
Yang Bisa Dilakukan
| Aksi | Cara | Keterangan |
|---|---|---|
| Cetak Ulang Struk | Klik transaksi → Cetak Ulang | Cetak thermal atau PDF |
| Kirim via WhatsApp | Klik transaksi → WA | Buka wa.me dengan link struk |
| Kirim via Email | Klik transaksi → Email | Input email penerima |
| Salin Link Struk | Klik transaksi → Salin Link | Link publik struk |
| Retur | Klik "Buat Retur" di halaman Retur POS → pilih transaksi → pilih kondisi barang | Stok kembali (kecuali write-off), jurnal reversal |
| Void (Batalkan) | Klik transaksi → Void | Hapus transaksi, jurnal reversal |
| Cetak KOT (F&B) | Klik transaksi → Tiket Dapur | Hanya untuk outlet F&B |
Filter Riwayat
- Cari: ketik nomor transaksi, nama produk, atau nominal
- Status: Selesai / Void / Return
- Metode Bayar: Tunai / QRIS / Transfer / dll
- Periode: filter berdasarkan tanggal
Buat Retur & Kondisi Barang
Di halaman Retur POS (menu POS → Retur): klik "Buat Retur", lalu pilih transaksi dari daftar (otomatis menampilkan transaksi terbaru — bisa juga cari berdasarkan nomor transaksi, nama, atau nomor HP pelanggan). Transaksi yang sudah pernah diretur diberi badge "Sebagian Diretur"/"Sudah Penuh Diretur" supaya tidak salah pilih.
Untuk setiap item yang diretur, ada pilihan kondisi barang (kalau modul Stok Defect aktif):
| Kondisi | Kapan dipakai | Efek stok & pembukuan |
|---|---|---|
| Bisa dijual lagi (default) | Barang masih bagus, kemasan utuh | Kembali ke stok jual normal, HPP di-reversal penuh |
| Stok Defect | Barang rusak tapi masih ada nilai jual (mis. kemasan penyok, kadaluarsa dekat) | Pindah ke Gudang Defect (lihat menu Persediaan → Stok Defect), bukan stok jual normal |
| Write-off | Barang benar-benar rusak/hilang nilai | Tidak kembali ke stok manapun, dicatat sebagai kerugian |
Kalau 1 produk diretur sebagian dengan kondisi berbeda (misal 5 unit: 3 masih bagus, 2 pecah), klik "+ Retur sebagian dengan kondisi berbeda" untuk menambah baris kedua dengan kondisi lain — jangan pecah qty di satu baris.
⚠️ Kondisi "Stok Defect"/"Write-off" butuh izin tambahan ("Buat/Tambah" Stok Defect di Perusahaan → Pengguna) — kalau tidak muncul opsinya, hubungi Owner. Produk bundle/paket tidak bisa diretur sebagai Stok Defect (hanya Bisa dijual lagi/Write-off).
Membatalkan Retur POS (sejak 2026-09-13): retur POS yang sudah tercatat bisa dibatalkan lewat tombol "Batalkan" di halaman detail retur (menu Penjualan → Retur, cari nomor retur POS-nya) — sama seperti membatalkan retur faktur biasa. Pembatalan mengembalikan jurnal, stok, dan poin loyalty (kalau ada) ke kondisi sebelum retur. Beberapa kasus belum bisa dibatalkan otomatis dan akan diarahkan untuk hubungi Akuntan: retur produk bundle/paket, retur yang memulihkan bahan baku resep, dan retur dengan metode pengembalian Kredit Toko/Tukar Barang kalau kreditnya kemungkinan sudah sebagian terpakai di transaksi lain.
Void vs Return
| Void | Return | |
|---|---|---|
| Kapan digunakan | Transaksi batal (error input, pelanggan batal) | Pelanggan kembalikan barang setelah transaksi selesai |
| Stok | Dikembalikan penuh | Dikembalikan per item, sesuai kondisi barang (lihat di atas) |
| Pembayaran kembali | Dicatat sebagai pembatalan | Dicatat sebagai pengembalian |
| Jurnal | Reversal otomatis | Retur otomatis |
⚠️ Void memerlukan konfirmasi dan alasan minimal 10 karakter. Owner/Admin bisa atur approval workflow di Pengaturan.
⚠️ Approval Manajer untuk void transaksi selesai (2026-09-05): selain aturan nominal di atas (void di atas batas outlet butuh Override Manager), void transaksi yang sudah lunas kini JUGA butuh approval Manajer (PIN/password) kalau pesanan itu sudah dikirim ke dapur, bill-nya sudah dicetak, atau checker-nya sudah dicetak — berapapun nominal transaksinya. Ini menutup celah yang sama dengan aturan void pesanan tertahan di atas, tapi untuk transaksi yang sudah dibayar.
⚠️ Pertanyaan "Uang Sudah/Belum Dikembalikan" saat void transaksi berbayar (2026-09-14): kalau transaksi yang di-void sudah ada pembayaran tercatat, kasir/manajer akan ditanya: apakah uangnya sudah dikembalikan ke pelanggan, atau belum. Kalau belum, sistem otomatis mencatat kewajiban "Hutang Refund Customer" di jurnal — supaya kas fisik yang masih di tangan bisnis tidak salah tercatat sebagai sudah hilang. Kewajiban ini muncul di POS → Hutang Refund Customer dan bisa diselesaikan dari situ begitu uang benar-benar dikembalikan atau dikonversi jadi kredit toko. Kalau approval dilakukan dari jarak jauh (via HP manajer), opsi "Sudah Dikembalikan" tidak bisa dipilih — hanya manajer yang di lokasi yang bisa mengonfirmasi uang sudah kembali ke tangan pelanggan. Kalau ada kewajiban yang masih tertunda, jumlahnya juga langsung muncul sebagai kartu "Refund Tertunda" di Dashboard — supaya tidak perlu diingat-ingat untuk dicek manual, klik kartunya langsung ke halaman penyelesaian.
⚠️ Refund tunai retur di atas batas (2026-09-05): kalau metode pengembalian dana retur adalah Tunai dan nominalnya melebihi batas yang diizinkan outlet, kasir wajib minta approval Manajer (PIN/password) sebelum retur diproses. Kalau manajer sedang tidak di tempat dan outletnya mengaktifkan opsi "provisional hold", kasir bisa mengajukan retur itu ke antrian POS → Retur → Pengajuan — retur tetap tercatat menunggu, dan baru final setelah Manajer approve dari halaman yang sama (atau dari notifikasi). Retur STORE_CREDIT/tukar barang tidak kena aturan ini (tidak ada uang tunai keluar).
🔒 Void tidak bisa dipakai lagi setelah sesi kasir ditutup (2026-09-07): kalau kasir mencoba Void transaksi yang sesinya SUDAH ditutup (laporan Z-Report sudah difinalisasi), sistem akan menolak dengan pesan "Transaksi ini berasal dari sesi kasir yang sudah ditutup — tidak dapat dibatalkan (void)". Ini supaya angka di laporan tutup buku yang sudah selesai tidak berubah diam-diam. Solusinya: gunakan Retur POS — bisa dipakai kapan saja untuk koreksi setelah sesi ditutup, baik retur sebagian maupun retur penuh, dan tetap tercatat benar di jurnal. Kalau pelanggan memakai Voucher pada transaksi tersebut, retur PENUH akan otomatis mengembalikan voucher itu jadi bisa dipakai lagi (retur sebagian tidak — voucher berlaku untuk satu transaksi secara keseluruhan, bukan per-item).
Untuk outlet F&B/dine-in, komplain pelanggan setelah makanan sudah dimasak/disajikan bukan kasus Retur — makanan yang sudah dimakan tidak bisa "dikembalikan ke stok". Klik tombol Komplain di detail transaksi (di sebelah tombol Retur/Void) untuk membuka wizard Nota Kompensasi: pilih item yang dikomplain, pilih alasan, lalu pilih hasil per item:
| Hasil | Kapan dipakai | Efek stok & pembukuan |
|---|---|---|
| Buat ulang | Salah pesanan, kualitas kurang tapi pelanggan mau versi baru | Bahan baku terpakai lagi (dicatat sebagai Beban Bahan Terbuang, bukan HPP), tagihan tidak berubah |
| Gratiskan | Item dihapus total dari tagihan | Pendapatan item itu dibalik (akun "Kompensasi Pelanggan"), tidak ada stok yang kembali |
| Potong sebagian | Diskon goodwill sebagian atas satu item | Sebagian pendapatan dibalik, sisanya tetap tertagih |
💡 Tanda "GRATIS" di Bill & Struk (2026-09-21): setelah Gratiskan/Potong Sebagian disetujui, item yang terpengaruh langsung tampil tanda "🎁 GRATIS (Kompensasi)" (item dihapus total) atau "🎁 Kompensasi -Rp X" (dipotong sebagian) tepat di bawah nama itemnya — baik di preview Bill sebelum bayar maupun di struk final setelah bayar, di semua metode cetak (layar, Bluetooth, jaringan). Jadi harga yang lebih rendah/nol tidak terlihat seperti salah input.
💡 Meja yang masih terbuka (2026-10-05): item yang sudah di-Gratiskan kini langsung tampil Rp 0, dan Total serta Cetak Bill ikut terpotong — juga saat meja dibuka lagi dari Denah Meja atau dari daftar Pesanan Tertahan (sebelumnya angka lama bisa masih tampil sampai dibayar; nilai akhir saat bayar tidak pernah salah). Selama sebuah meja punya Nota Kompensasi yang masih aktif, Bagi Tagihan dan Gabung Meja ditolak dengan pesan jelas — batalkan Nota Kompensasi-nya dulu, atau langsung bayar tanpa membagi/menggabung.
Untuk Buat ulang, kasir memilih qty yang dibuat ulang lewat stepper (+/−), bukan cuma 1× — maksimal sesuai qty yang terjual pada baris itu dikurangi qty yang sudah pernah diretur. Kalau outlet belum mengatur batas kumulatif Buat Ulang (qty/Rp bahan terbuang) di pengaturan — kondisi default untuk semua outlet — tetap ada aturan bawaan: Nota Kompensasi memerlukan persetujuan Manajer begitu qty Buat Ulang pada satu Nota lebih dari 1×, ATAU begitu transaksi yang sama sudah pernah punya Buat Ulang aktif sebelumnya. Buat Ulang pertama dengan qty 1× pada sebuah transaksi tetap bisa langsung dilakukan kasir tanpa perlu Manajer.
Kalau pembayaran sudah lunas dan ada uang yang harus dikembalikan secara tunai, kasir perlu persetujuan Manajer (PIN atau password akun manajer) — ini berlaku selalu, berapapun nominalnya, karena uang tunai keluar dari laci kas adalah titik rawan kecurangan yang sama seperti Void. Kalau tidak ada manajer di tempat, kasir bisa klik "Ajukan ke Manajer" dan transaksinya menunggu persetujuan di Kotak Masuk Persetujuan.
💡 Wajib Approval Manager untuk Semua Nota Kompensasi (2026-09-12): Owner/Admin bisa menyalakan opsi ini di Pengaturan Outlet (default NONAKTIF, per outlet). Kalau aktif, SETIAP Buat Ulang dan Gratiskan wajib persetujuan Manajer — termasuk Buat Ulang pertama kali dan Gratiskan pada pesanan yang masih terbuka/belum dibayar, dua kasus yang di atas dijelaskan bisa langsung dilakukan kasir sendiri. Cocok untuk outlet yang butuh pengawasan lebih ketat, tapi perlu diingat: dapur bisa menunggu sampai Manajer menyetujui, jadi ini trade-off kecepatan vs kontrol.
💡 Siapa yang dianggap "Manajer" untuk approval ini (2026-09-13): tidak selalu harus Owner atau Admin. Role khusus (Custom Role) "Supervisor Shift" dan "Manager Outlet" juga bisa di-pilih sebagai manajer untuk approve Buat Ulang/Gratiskan (dan Void) — tapi HANYA untuk outlet tempat mereka ditugaskan, tidak untuk outlet lain. Ini diatur di Perusahaan → Pengguna & Akses, dengan menugaskan role tersebut ke outlet spesifik. Selain itu, kalau seorang Admin dibatasi hanya untuk cabang tertentu, wewenang approve-nya otomatis ikut terbatas ke outlet-outlet di cabang itu saja — Owner tidak pernah dibatasi seperti ini.
⚠️ Refund tunai yang sudah dibuat tidak bisa dibatalkan — begitu uang keluar dari laci, satu-satunya cara membatalkan adalah mencatat penyesuaian kas masuk terpisah. Nota Kompensasi dengan pengembalian ke Saldo Pelanggan (bukan tunai) masih bisa dibatalkan oleh Manajer.
Nota Kompensasi bisa dikelola lewat Laporan POS → Laporan Kompensasi → tombol "Kelola Kompensasi" di kanan atas (daftar semua nota + pengajuan yang menunggu persetujuan, bisa dibatalkan/disetujui dari situ) — atau di Laporan POS → Laporan Kompensasi langsung untuk rekap per outlet/kasir/ alasan, semua angka bisa diklik ke Buku Besar.
💡 Void Pesanan dengan Nota aktif (2026-10-11): pesanan ber-Nota Kompensasi bisa di-void dengan persetujuan manager. Waste Buat Ulang tetap tercatat; Nota uang-saja dibatalkan otomatis atau ditandai moot (Rp0 di laporan); Nota pada pesanan yang sudah di-void tidak bisa dibatalkan manual.
Komplain vs Retur — mana yang dipakai?
| Komplain (Nota Kompensasi) | Retur | |
|---|---|---|
| Kapan digunakan | Makanan/minuman sudah dibuat & disajikan, tidak bisa dikembalikan fisik | Barang fisik (mis. minuman botolan) dikembalikan utuh oleh pelanggan |
| Stok | Tidak pernah kembali (kecuali Buat Ulang, yang justru memakai bahan baru) | Kembali sesuai kondisi barang |
| Butuh Manajer | Selalu, kalau ada uang tunai keluar | Tergantung aturan approval outlet |
Tampilkan informasi transaksi ke layar kedua (monitor, tablet, TV) yang menghadap pelanggan.
Setup
- Buka layar kedua (monitor/tablet) → login ke akun yang sama
- Buka: POS → Outlets → [Outlet] → Customer Display
- Layar menampilkan mode idle dengan informasi toko
4 Mode Tampilan
| Mode | Tampilan |
|---|---|
| Idle | Jam WIB + nama toko + pesan sambutan |
| Keranjang | Daftar item + total di kiri, promo/banner di kanan |
| QRIS | QR code pembayaran besar di tengah |
| Sukses | Animasi konfirmasi pembayaran + kembalian |
Kustomisasi
Di Pengaturan Display:
- Upload logo toko
- Atur warna aksen
- Tagline & pesan sambutan
- Handle Instagram/TikTok
- Banner promo (teks + gambar)
- Orientasi: Landscape / Portrait
💡 Live preview 640×360px tersedia di halaman pengaturan — lihat tampilan sebelum disimpan.
X-Report (Laporan Sesi Berjalan)
Laporan ringkas transaksi dalam sesi aktif — bisa dicetak kapan saja tanpa menutup sesi.
Di layar kasir → Laporan → X-Report
Isi: total transaksi, rata-rata per transaksi, penjualan kotor/neto, total per metode bayar, diskon, retur, dan bill yang masih terbuka.
Klik salah satu metode pembayaran (mis. ShopeeFood, QRIS) untuk langsung lihat daftar transaksi dengan metode itu di Riwayat Transaksi — tidak perlu cari manual.
Z-Report (Laporan Tutup Sesi)
Laporan final saat sesi ditutup. Setelah Z-Report dicetak/tersimpan, sesi tidak bisa dibuka kembali.
Otomatis muncul saat Tutup Sesi → cetak atau simpan sebagai PDF.
Laporan Harian POS
Buka POS → Laporan untuk laporan agregat:
- Revenue per outlet per hari/minggu/bulan
- Breakdown per metode bayar
- Top produk terlaris
- Perbandingan omzet antar outlet (untuk multi-outlet)
Sekilas Toko Anda — Rincian PB1 & Service Charge (baru, September 2026)
Kartu "Sekilas Toko Anda" di halaman ini (periode yang sama dengan filter tanggal/outlet di atas) sekarang menampilkan dua baris tambahan:
- Rincian PB1 — total PB1 (Pajak Restoran) terutang periode ini, dihitung dari Buku Besar (angka yang sama dengan Laporan → PB1 Terutang, cuma tampil di sini juga supaya tidak perlu pindah halaman)
- Rincian Service Charge — total Service Charge terutang periode ini, juga dihitung dari Buku Besar (bukan sekadar jumlah transaksi) supaya koreksi Service Charge yang di-posting belakangan tetap ikut terhitung dengan benar
Kalau muncul "Belum dikonfigurasi" di salah satu baris, artinya akun PB1/Service Charge belum di-setting di Pengaturan → Akuntansi → Akun Sistem.
Karena 1 cabang bisa punya beberapa outlet, dan PB1/Service Charge dihitung per-cabang (bukan per-outlet), kalau Anda filter ke 1 outlet spesifik dan cabangnya punya outlet lain, akan muncul catatan kecil "Termasuk seluruh outlet di cabang yang sama" di bawah angkanya.
Semua Baris di Sekilas Toko Anda Sekarang Bisa Diklik (baru, September 2026)
Semua baris di kartu "Sekilas Toko Anda" sekarang bisa diklik untuk lihat rincian:
- Pelanggan Baru, Jumlah Transaksi, Penjualan Kotor/Neto, Total Diterima/Diterima Neto, Rata-rata/Transaksi — klik untuk buka daftar transaksi/pelanggan yang membentuk angka tersebut (khusus Pelanggan Baru, daftarnya se-organisasi, bukan hanya outlet yang dipilih — ada catatan kecil di modal-nya)
- Pengeluaran — klik untuk lihat daftar Kas Keluar (operasional) yang membentuk angka ini
- Total Retur — klik untuk lihat daftar retur yang membentuk angka ini
- Rincian PB1 — klik untuk buka halaman Laporan → PB1 Terutang penuh
- Rincian Service Charge — klik untuk buka halaman Laporan → Service Charge Terutang (halaman baru, sama strukturnya dengan Laporan PB1 Terutang)
Export
Semua laporan bisa di-export ke Excel atau PDF.
Halaman khusus Owner/Admin untuk mendeteksi pola kecurangan kasir tanpa harus membaca laporan satu per satu.
Buka POS → Pengawasan. Halaman menampilkan, per karyawan, dalam periode 7/30 hari terakhir:
- Jumlah dan nilai void transaksi
- Jumlah dan besar selisih kas saat Tutup Sesi
Karyawan yang aktivitasnya lebih dari 2x rata-rata karyawan lain pada periode yang sama ditandai "Di atas rata-rata" — bukan bukti kecurangan, tapi sinyal yang layak dicek lebih lanjut.
Terkait — Hitung Kas Tidak Lagi Menampilkan Angka "Seharusnya" Saat Menghitung: saat Tutup Sesi, langkah hitung kas fisik sekarang tidak menampilkan angka "Seharusnya" (kas yang diharapkan sistem) sampai hitungan Anda selesai dimasukkan dan lanjut ke konfirmasi. Ini untuk mencegah penyesuaian hitungan fisik supaya "pas" dengan angka sistem — hitung dulu apa yang benar-benar ada di laci, baru dibandingkan.
Template Struk
POS → Outlets → [Outlet] → Pengaturan Struk
Kustomisasi:
- Logo toko (upload gambar)
- Nama & alamat toko
- Pesan terima kasih di bawah struk
- Tampilkan/sembunyikan: nomor HP, NPWP, website
- Format: Thermal 58mm / Thermal 80mm / A4
Routing Akun Pembayaran
Atur akun jurnal per metode bayar:
POS → Outlets → [Outlet] → Akun Penerimaan
Contoh:
- Tunai → Kas (111100)
- QRIS → Bank BCA (112001)
- Transfer → Bank BRI (112002)
Jika tidak diatur, semua metode bayar masuk ke akun KAS default.
Pesanan Kasir Masuk Antrian Dapur (Diproses)
POS → Outlets → [Outlet] → bagian "Umum" (Lanjutan)
Secara default, setiap pesanan yang di-ring up kasir muncul di tab "Diproses" pada halaman Antrian, dan baru pindah ke "Selesai" setelah staf dapur klik "Tandai Selesai". Kalau outlet Anda tidak punya alur dapur terpisah (mis. tidak ada kitchen display / kitchen print station), matikan toggle "Pesanan kasir masuk antrian dapur (Diproses)" — pesanan kasir langsung dianggap selesai saat pembayaran, tidak menumpuk di tab Diproses. Pengaturan ini tidak memengaruhi pesanan online (QR/storefront) — pesanan online tetap selalu masuk alur Diproses seperti biasa karena kitchen display tetap perlu tahu pesanan tersebut untuk disiapkan.
Branding & Operasional QR Menu per Outlet (Nama, Tema, Banner, Jam Buka, Mode Pesanan)
Setiap outlet bisa punya nama toko, tema warna, banner, jam buka, dan mode pesanan (Dine-in/Takeaway) sendiri untuk QR menu pelanggannya (/g/[kode-outlet]) — terpisah dari default toko yang diatur di Storefront → Pengaturan → Profil Toko / Jam Operasional. Cocok untuk bisnis dengan beberapa cabang yang jam bukanya berbeda (misal cabang mall vs cabang ruko) atau yang tidak semua cabang menerima Dine-in.
Cara atur:
- POS → Outlets → [Outlet] → bagian "Pesan Online (QR Menu)"
- Isi Nama Toko Online, pilih Tema, warna custom (hex), dan/atau upload Banner khusus outlet ini
- Klik Ubah Jam & Libur untuk atur jam buka 7 hari + Hari Libur Khusus khusus outlet ini
- Pilih Mode Pesanan (Dine-in & Takeaway / Dine-in saja / Takeaway saja) khusus outlet ini
- Klik Simpan
Field yang tidak diubah otomatis mengikuti default toko — tidak perlu mengisi semua field kalau hanya ingin ubah satu (misalnya cuma jam bukanya saja).
- Badge kecil di sebelah tiap field menunjukkan apakah nilai itu "Khusus outlet ini" (override) atau masih mengikuti default toko
- Tombol "Ikuti default toko" di sebelah field mengembalikan field itu saja ke default — field lain yang sudah di-override tidak ikut terhapus
- Kalau pengaturan gagal dimuat (error jaringan), form disembunyikan sementara agar tidak menyimpan data kosong yang bisa menimpa pengaturan outlet — refresh halaman dan coba lagi
- Aktifkan Pesan Online / QRIS Online / Deskripsi Toko tetap berlaku untuk SEMUA outlet (diatur di outlet utama yang pertama kali mengaktifkan toko online) — outlet lain melihat field ini dalam mode baca saja dengan link ke Pengaturan Storefront
Komisi Aggregator (GoFood/GrabFood/ShopeeFood)
Kalau outlet menerima pesanan lewat aggregator (GoFood, GrabFood, ShopeeFood), FirstJournal bisa otomatis mencatat estimasi komisi platform di setiap penjualan — bukan cuma piutang gross-nya saja.
Aktifkan akrual + atur rate per platform:
POS → Outlets → [Outlet] → Akun Penerimaan per Metode Bayar → pilih baris GoFood/GrabFood/ShopeeFood → isi Rate komisi (%) → centang Aktifkan akrual komisi → Simpan.
- Rate komisi diisi sesuai perjanjian merchant dengan platform (mis. 20% untuk GoFood).
- Rate hanya estimasi — rate asli platform bisa beda tiap order. Boleh dikosongkan: penjualan tetap masuk daftar Settlement Komisi Aggregator, dan komisi sebenarnya dicatat dari angka payout platform saat settlement.
- Bisa diatur berbeda per platform dan per outlet (outlet A boleh 15% GoFood, outlet B boleh 20%).
Apa yang terjadi setelah diaktifkan: setiap transaksi penjualan lewat platform tersebut otomatis membuat jurnal estimasi komisi (Beban Komisi + Piutang Platform), sehingga laporan laba-rugi sudah memperhitungkan biaya komisi sejak hari penjualan — tidak menunggu sampai platform bayar.
Settlement Batch (mencocokkan dengan laporan payout platform):
Saat platform sudah mengirim laporan pembayaran (payout report) dan uangnya masuk ke rekening, gunakan Settlement Komisi Aggregator (paling mudah lewat chip Settlement di kartu outlet pada halaman POS — angkanya menunjukkan transaksi yang belum disettle; chip muncul setelah akrual komisi aktif. Bisa juga lewat link di halaman Akun Penerimaan, atau dari peringatan "belum di-settle" di Laporan POS). Yang bisa membuka dan memakainya: Owner, Admin, dan Akuntan (izin Settlement Komisi Aggregator — Owner bisa mengatur per role di Perusahaan → Pengguna & Akses → Role; terpisah dari hak mengelola outlet):
- Pilih platform + rentang tanggal → sistem tampilkan daftar transaksi yang belum disettle beserta estimasi komisinya. Kalau sebuah transaksi sudah ada Retur Penjualan di fakturnya, nilai yang tampil sudah dikurangi retur itu (retur sebagian menampilkan sisanya; retur penuh tidak muncul lagi).
- Centang transaksi yang mau disettle (biasanya sesuai batch di laporan platform).
- Masukkan nominal aktual yang diterima (net payout) dari laporan platform, promo/subsidi platform kalau ada, pilih rekening bank/kas tempat uang payout benar-benar masuk (bisa dicari dengan mengetik; akun piutang GoFood/GrabFood/ShopeeFood tidak ditawarkan di sini — itu bukan rekening bank), dan isi Tanggal dana diterima sesuai tanggal dana masuk di mutasi rekening (default hari ini; tidak boleh di masa depan, sebelum penjualan terakhir yang dipilih, atau di periode yang sudah ditutup).
- Klik Settle — sistem posting 1 jurnal yang: (a) mencatat kas/bank masuk sebesar net payout, (b) menghapus estimasi komisi yang sudah diakru, (c) mencatat selisih komisi (kalau komisi aktual berbeda dari estimasi), (d) melunasi piutang platform.
- Transaksi yang sudah disettle ditandai selesai dan tidak muncul lagi di daftar belum-settle.
⚠️ Pastikan nominal net payout sesuai laporan platform sebelum klik Settle. Total diterima Rp 0 berarti seluruh nilai transaksi dicatat sebagai komisi platform, jadi sistem meminta konfirmasi tambahan (kalau pesanan dibatalkan atau di-refund platform, catat sebagai retur/pembatalan, bukan settlement). Untuk batch bernilai besar, sistem akan minta verifikasi keamanan tambahan (kode OTP) sesuai threshold MFA outlet.
Rekening payout default: di POS → Outlets → [Outlet] → Pembayaran → Platform Food Delivery, tiap platform punya kolom Rekening payout (default). Pilih rekening bank yang menerima payout platform itu, dan halaman Settlement akan mengisinya otomatis (tetap bisa diganti). Kolom Akun piutang platform di atasnya BUKAN rekening bank — itu akun piutang tempat penjualan platform dicatat sebelum payout masuk.
Salah settle? Batalkan: di bagian bawah halaman Settlement ada Riwayat settlement terakhir. Isi alasan lalu klik Batalkan pada settlement yang salah — jurnalnya dibatalkan (tetap tercatat di riwayat) dan transaksinya kembali ke daftar belum-settle, jadi bisa di-settle ulang dengan data yang benar. Tidak bisa dibatalkan jika settlement berada di periode yang sudah ditutup, atau jika salah satu transaksinya sudah diretur setelah settlement. Nilai piutang yang di-settle sudah memperhitungkan koreksi tipe pesanan (mis. Dine-in diubah ke Antar).
Penting — hanya berlaku untuk transaksi baru: fitur ini tidak retroaktif. Penjualan yang sudah terjadi SEBELUM rate komisi diaktifkan tidak akan punya estimasi komisi (tidak dihitung ulang). Hanya penjualan yang dibuat SETELAH akrual diaktifkan yang akan otomatis mencatat estimasi komisinya.
Threshold MFA untuk Tutup Sesi
Owner bisa atur batas selisih kas yang wajib verifikasi MFA saat tutup sesi:
POS → Outlets → [Outlet] → Pengaturan → Threshold MFA Selisih Kas
Default: Rp 100.000. Selisih ≥ nominal ini → wajib verifikasi TOTP sebelum sesi ditutup.
KDS Station Settings
POS → Outlets → [Outlet] → Station Settings
Assign produk secara bulk ke station KDS (KITCHEN/BAR/BOTH) dengan filter per kategori.
Peringatan Konfigurasi Printer
Sistem otomatis mendeteksi kalau konfigurasi printer outlet tidak konsisten, dan menampilkan banner peringatan actionable di Hub Outlet → Printer & Dapur dan halaman Pengaturan Printer:
| Kondisi | Judul Peringatan | Tombol Aksi |
|---|---|---|
| Ada printer jaringan terdaftar, tapi metode cetak masih Bluetooth/Browser | "Printer jaringan terdaftar tapi tidak terpakai" | Ubah ke Jaringan |
| Metode cetak Jaringan/Native dipilih tapi belum ada printer terdaftar | "Belum ada printer terdaftar" | Tambah Printer |
| Metode Bluetooth dipilih tapi belum dipasangkan (pairing) | "Printer Bluetooth belum dipasangkan" | Atur Bluetooth |
💡 Kalau outlet punya printer jaringan idle sementara pesanan online tidak tercetak, ini sering jadi penyebabnya — klik Ubah ke Jaringan untuk fix sekali klik.
Cetak Label Stiker Item
Cetak stiker label kecil per item pesanan (nama produk, modifier, catatan, nomor order, jam) untuk ditempel di cup/kemasan takeaway & delivery.
Setup printer label: POS → Outlets → [Outlet] → kartu "Label Stiker" → "Tambah Printer" (Jenis: Printer Label) — pilih protokol TSPL (printer label dedicated seperti Xprinter/HPRT) atau ESC/POS Label Mode (pakai printer struk yang sudah ada), lalu ukuran label (40×30 / 50×30 / 58×40mm).
Atur kapan label otomatis tercetak (saat kirim ke dapur atau saat pembayaran, cocok untuk outlet model bazaar), tipe order mana yang dapat label (default: Bawa Pulang & Antar), dan field apa yang ditampilkan — semua di kartu "Pengaturan Cetak Label Stiker Item" pada halaman yang sama.
Desain sendiri tampilan label: klik "Ubah Desain" pada kartu "Desain Label Aktif" untuk membuka editor visual — atur urutan field, ukuran font, tebal, rata kiri/tengah/kanan, dan gabung 2 field jadi satu baris, dengan preview langsung berskala fisik 1:1. Tersedia 4 template siap pakai (Standar, Ringkas, Lengkap, Nama Pelanggan Besar) sebagai titik awal. Desain tersimpan per-bisnis dan bisa dipakai ulang di semua outlet/cabang. Gunakan tombol "Tes Cetak Desain Ini" untuk mengecek hasil fisik sebelum menyimpan.
Ingin mencetak tanggal kedaluwarsa di label? Set dulu masa simpan produknya (dalam hari) di halaman edit produk (Persediaan) — label akan otomatis menghitung tanggal kedaluwarsa dari waktu transaksi.
GPS & Lokasi (Lapak)
Lihat bagian Mode Lapak di atas.
Di outlet F&B dengan pajak restoran (PB1) dan biaya layanan (service charge), Anda bisa memilih apakah biaya layanan ikut dikenai pajak restoran atau tidak. Contoh: menu Rp200.000, biaya layanan 11%, PB1 10%.
| Pilihan | Pajak dihitung dari | Pajak | Total |
|---|---|---|---|
| Menu + biaya layanan (cara bawaan, tidak berubah) | Rp222.000 | Rp22.200 | Rp244.200 |
| Harga menu saja | Rp200.000 | Rp20.000 | Rp242.000 |
Saat pertama kali mengisi tarif (outlet F&B baru): di POS → Outlet → pilih outlet → bagian Menu & Pajak, setelah PB1 dan Service Charge diisi lebih dari 0, muncul pilihan "Pajak restoran dihitung dari apa?" dengan contoh angka. Yang terpilih dari awal adalah Menu + biaya layanan (cara bawaan). Pilihan Menu saja perlu mencentang pernyataan. Pilihan ini hanya tersedia selama tarif PB1 dan Service Charge belum sama-sama tersimpan; setelah itu hanya bisa diubah Owner lewat Pengaturan Pajak.
Cara mengubah: POS → Outlet → pilih outlet → Pengaturan Pajak → kartu Pajak untuk Biaya Layanan. Hanya Owner yang bisa mengubahnya, dengan verifikasi keamanan (MFA), centang pernyataan, dan alasan perubahan; setiap perubahan tercatat di jejak audit. Kartu hanya tersedia untuk outlet dengan pajak restoran (PB1) dan biaya layanan, bukan outlet Retail dan bukan outlet yang harganya sudah termasuk pajak.
Yang perlu diketahui:
- Pilihan bawaan tidak berubah untuk semua outlet. Tidak ada yang berubah sebelum Owner menyimpan pilihan baru.
- Berlaku untuk transaksi baru sejak menekan Simpan. Transaksi lama dan pesanan yang masih terbuka (meja yang belum dibayar, pesanan tertahan) tetap memakai cara sebelumnya sampai selesai.
- Setelah menyimpan, layar kasir yang sedang terbuka menyesuaikan sendiri saat kasir membuka layar pembayaran (atau kembali ke layar kasir). Kasir yang sedang offline perlu tersambung internet dulu; jika total terlihat berbeda, minta mereka membuka ulang layar kasir.
- Perubahan berikutnya baru bisa dilakukan 72 jam setelah perubahan sebelumnya (supaya transaksi yang tersimpan saat internet mati tetap dihitung benar).
- Di struk dan bill, baris pajak ditulis "Pajak (10% dari menu)" bila biaya layanan tidak ikut dikenai pajak. Di faktur (layar, cetak, dan PDF) ditulis "PB1 (Pajak Restoran) (10% dari harga menu)". Bila biaya layanan ikut dikenai pajak, tulisannya tidak berubah, misalnya "Pajak (10%)".
- Laporan PB1 Terutang dan Laporan Service Charge Terutang menampilkan catatan outlet mana yang memakai cara ini, hanya bila periode yang dipilih menyentuh masa pemakaiannya. Angka di kedua laporan selalu mengikuti jurnal.
- Keputusan pajak ini adalah tanggung jawab usaha Anda. FirstJournal tidak memberikan nasihat pajak; pastikan ke kantor pajak daerah atau konsultan pajak sebelum mengubah.
Setiap outlet POS bisa dijalankan dalam salah satu dari dua mode:
- Kasir Saja — fokus jualan: transaksi, struk, stok otomatis, sesi & shift, dan laporan penjualan kasir semuanya jalan penuh. Tapi transaksinya tidak diposting ke jurnal/Buku Besar — cocok untuk gerobak, booth bazaar, atau outlet baru yang belum butuh laporan akuntansi lengkap. Ringan dan cepat diatur, tanpa perlu paham pembukuan.
- Kasir + Pembukuan Otomatis (Terintegrasi Penuh) — mode default FirstJournal: setiap transaksi otomatis masuk jurnal dan langsung terlihat di Laba Rugi, Neraca, Buku Besar, faktur resmi, serta dianalisis Prince AI.
Kapan memilih mode ini muncul:
- Saat membuat outlet baru — modal pilihan mode langsung muncul setelah outlet dibuat. Kami merekomendasikan Kasir Saja untuk tipe outlet gerobak/bazaar, tapi Anda bebas pilih mode lain.
- Kapan saja setelahnya — buka POS → Outlet → [nama outlet], cari tautan atau ikon gembok 🔒 di sebelah fitur yang terkunci (misalnya "Kelola Settlement Komisi Aggregator") untuk membuka wizard Mode Akuntansi.
Upgrade dari Kasir Saja ke Terintegrasi — wizard 4 langkah:
- Tanggal efektif + alasan upgrade, dan saldo awal kas/bank (opsional, kalau outlet sudah punya kas/bank yang perlu dicatat).
- Saldo awal persediaan — hitung fisik manual (opname), bukan diambil otomatis dari histori penjualan sebelumnya.
- Konfigurasi pajak (PB1/Service Charge) outlet.
- Info pemetaan akun — FirstJournal sudah otomatis pakai akun default, bisa disesuaikan kapan saja di Pengaturan → Akun Sistem.
Upgrade membutuhkan verifikasi MFA (kode autentikator) karena berdampak nyata ke laporan keuangan.
Downgrade dari Terintegrasi ke Kasir Saja — sistem mengecek dulu apakah ada penghalang: sesi kasir masih terbuka atau jurnal yang belum selesai diproses harus diselesaikan dulu. Kalau hanya ada settlement komisi aggregator yang belum selesai, Anda perlu mencentang konfirmasi risiko secara eksplisit sebelum melanjutkan. Jurnal historis tidak pernah dihapus atau diubah — hanya transaksi baru yang berhenti diposting ke jurnal. Downgrade juga membutuhkan verifikasi MFA.
Apa yang terkunci untuk outlet Kasir Saja:
- Laba Rugi, Neraca, dan Buku Besar tidak menghitung transaksi outlet ini (by design, bukan bug — kalau laporan/omzet outlet ini terlihat kosong padahal ada transaksi, cek dulu mode akuntansi outlet tersebut).
- Settlement Komisi Aggregator (pencocokan payout GoFood/GrabFood/ShopeeFood) terkunci — tapi pesanan aggregator tetap bisa diterima dan tercatat seperti biasa, hanya fitur rekonsiliasinya yang butuh mode Terintegrasi.
Bisa gonta-ganti kapan saja — pilihan ini bukan keputusan permanen, dan tidak ada data penjualan yang hilang saat upgrade maupun downgrade.
Fitur Tingkat Harga memungkinkan satu produk punya harga jual berbeda tergantung kanal penjualannya — misalnya harga dine-in berbeda dari harga di GoFood, atau harga Retail berbeda dari harga Grosir/Reseller — tanpa kasir perlu ubah harga manual di setiap transaksi.
Akses
Sidebar → Pengaturan → Tingkat Harga (/pengaturan/harga-channel)
Untuk Bisnis F&B
Tersedia 4 tingkat harga baku:
- Normal — harga dasar (dipakai untuk dine-in, takeaway, delivery kasir, Toko, dan Lapak)
- ShopeeFood, GoFood, GrabFood — harga khusus per platform aggregator, otomatis dipilih berdasarkan asal pesanan
Ke-3 slot aggregator ini hanya muncul kalau platform-nya sudah diaktifkan di Pengaturan → Integrasi Aggregator.
Untuk Bisnis Non-F&B (Retail, Distributor, Jasa, dll)
Bisa membuat tingkat harga custom sendiri, misalnya "Harga Retail", "Harga Grosir", "Harga Reseller":
- Di halaman Tingkat Harga, klik Tambah tingkat harga
- Isi nama (misal "Harga Grosir") di kolom Nama tingkat harga
- Pilih cara harga ini dipicu:
- Pilih manual — kasir yang pilih tingkat harga saat transaksi
- Tipe kontak (membership) — otomatis dipilih berdasarkan tier membership pelanggan
- Atur mode harga: Markup % atau Markup Rp, lalu isi nilainya
- Klik Simpan
Cara Mengatur Harga per Produk
Di tabel Tingkat Harga:
- Cari produk lewat search "Cari produk / SKU..." atau filter kategori
- Klik sel harga pada kolom tingkat harga yang diinginkan untuk override harga produk tersebut secara spesifik
- Centang beberapa produk sekaligus → klik Terapkan tingkat harga ke [N] produk untuk atur banyak produk sekaligus (mode Rp tetap atau markup)
- Klik ikon reset pada sel untuk kembalikan ke aturan level (hapus override per-produk)
Di Layar Kasir
Kasir bisa melihat/mengubah tingkat harga yang berlaku lewat dropdown "Tingkat Harga" di toolbar kasir (desktop maupun mobile) — defaultnya "Tingkat Harga: Normal". Kasir juga bisa override tingkat harga untuk satu baris produk saja lewat badge kecil di baris keranjang tersebut.
ℹ️ Fitur ini sebelumnya bernama "Harga per Channel" — namanya berubah jadi "Tingkat Harga" karena cakupannya diperluas dari sekadar channel F&B ke semua jenis bisnis.
| Shortcut | Fungsi |
|---|---|
/ | Fokus ke search bar produk |
Enter | Tambah produk pertama dari hasil search / Konfirmasi pembayaran |
→ / ← | Navigasi langkah di panduan interaktif |
Esc | Tutup modal / Bersihkan search |
Sesi tidak bisa dibuka
- Cek apakah kasir sudah memiliki sesi aktif (cari tombol "Lanjutkan Sesi")
- Pastikan outlet sudah memiliki gudang yang dikonfigurasi
- Jika ada masalah akun loyalty, ikuti pesan error untuk setup akun di Pengaturan
Produk tidak muncul di katalog POS
- Pastikan produk dikaitkan ke gudang yang sama dengan outlet
- Cek stok produk — produk stok nol tersembunyi secara default
- Filter kategori mungkin aktif — klik "Semua" untuk reset
Struk tidak bisa dicetak
- Gunakan browser Chrome/Edge untuk thermal printing
- Aktifkan "Simpan sebagai PDF" sebagai fallback
- Untuk thermal, pastikan driver printer terinstall
GPS tidak akurat
- Pindah ke area terbuka, hindari gedung atau basement
- Refresh halaman dan coba lagi
- Gunakan input manual jika GPS tidak tersedia
Transaksi offline tidak sync
- Pastikan koneksi internet stabil
- Tap "Kirim Sekarang" di indikator antrean offline
- Jika tetap gagal, cek lisensi offline di header POS
KDS tidak menerima pesanan
- Pastikan produk sudah di-assign ke KDS station (KITCHEN/BAR/BOTH)
- Refresh halaman KDS
- Cek apakah outlet dalam mode Retail (Retail = tanpa KDS)
Berapa banyak outlet yang bisa dibuat? Tidak ada batas per paket — buat outlet sesuai cabang/lapak yang dimiliki.
Bisakah satu akun digunakan di beberapa HP kasir sekaligus? Ya — setiap kasir bisa login dengan akun sendiri (satu sesi per akun per outlet). Atau gunakan satu akun di satu device per outlet.
Apakah transaksi POS masuk ke laporan keuangan? Ya, otomatis. Setiap transaksi POS membuat jurnal akuntansi double-entry yang langsung tercermin di Laba Rugi, Neraca, dan Laporan Arus Kas.
Bagaimana cara menambah produk ke POS? Tambah produk di Persediaan → Produk & Jasa → pastikan stok tersedia di gudang yang dikaitkan ke outlet POS.
Apakah POS bisa digunakan tanpa internet? Ya, dengan fitur POS Offline (paket Pro ke atas). Install sebagai PWA terlebih dahulu saat masih online.
Bisakah mengubah harga produk saat di kasir? Tidak — harga produk diambil dari master produk. Untuk penyesuaian, gunakan diskon atau ubah harga di Persediaan → Edit Produk.
Apakah artikel ini membantu?