A guide to day-to-day Mapan Bisnis operations: building your catalog with variants and stock, selling through the POS, managing your warehouse and stock history, and keeping customer and supplier contacts.
Catalog Items & Variants
The catalog is the list of things you sell. Every item has at least one variant — prices and stock are set at the variant level (for example Milk Coffee with Regular and Large variants). This menu is for admins and above.
Variants & Prices
Each variant has its own name, SKU, Harga Jual (selling price), and Harga Modal (cost price).
Stock Tracking
Turn it on for physical goods. Stock goes down automatically when sold and up when you record a purchase.
Variant Photos
Upload a photo (JPG/PNG/WEBP, max 2 MB) so it's easy to recognize at the POS.
Excel Export
Download the whole catalog, one row per variant, with stock and warehouse stock.
Adding an Item
Enter the Nama Item (item name), Satuan (unit) (optional, with suggestion chips for your business type), and Kategori (category) (optional).
Turn on Lacak Stok (Track Stock) if it's a physical good whose stock you need to monitor.
For the Retail business type, you can turn on Gunakan Stok Gudang Terpisah (Use Separate Warehouse Stock) — see the Warehouse section below.
In the Varian block, enter the Nama Varian (variant name), Harga Jual, Harga Modal, and Stok Awal (opening stock — only when Track Stock is on). Tap "+ Varian" to add another variant.
Managing Variants
Tap "+ Varian" to add one, the Edit varian icon to change the name, SKU, barcode, price, and photo, or Hapus varian (Delete variant) to hide it. An item must keep at least one active variant.
SKU and Barcode per Variant
Each variant can have its own SKU and barcode — great for retail or vouchers with many denominations. Fill in both in the variant form; they must be unique within a business. At the POS, barcode scanning works with a USB scanner (it types straight into the search box) or the camera via the scan button, and the matching variant is added to the cart automatically.
Adjusting Stock Manually
Use this when a physical count differs from your records (stock take) or goods are damaged.
Enter the Jumlah (quantity) — a positive number adds, a negative number subtracts (it can't be 0) — and a Catatan (note) (optional).
Recording Stock Purchases
Available for Retail and Other, for items bought ready-made and resold.
Enter the Jumlah Beli (quantity bought) and Harga Beli/Satuan (unit purchase price), then the Pemasok (supplier) and Kategori (category) if needed.
Leave Perbarui Harga Modal (Update cost price) on to recalculate the variant's cost price (a weighted average of old stock and the new purchase price) — a preview is shown in the dialog. Turn it off to keep it as is.
Check the Total Pembelian (purchase total), then save. Stock increases and business cash is deducted automatically.
Bundles (Paket)
Sell several items together for one price, e.g. Value Meal = Fried Rice + Iced Tea, or 2 Hours + 2 Iced Teas for rentals. Bundles are sold like regular items in the POS and Invoices, but the stock deducted is their contents.
Create a new item for the bundle (e.g. Value Meal). Leave Lacak Stok (Track Stock) off — a bundle has no stock of its own.
In the Catalog list, open that item's three-dot menu and choose "Jadikan paket" (Make a bundle).
Search for and tap the items included in the bundle, then set the quantity per 1 bundle. Businesses with rental rates can also open the Jam Sewa (Rental Hours) tab to add a rate's rental hours (e.g. PS5 Rental 2 hours).
Enter the Harga paket (bundle price) directly in the summary box. The box also shows the total if bought separately and how much the customer saves. Bundles with several variants are priced per variant.
COGS, Recipes & Gross Profit
HPP (Harga Pokok Penjualan, cost of goods sold) is the cost of one unit sold. MAPAN uses it to calculate Gross Profit (sales − COGS) and each product's margin, alongside the cash-flow net profit.
Automatic Cost Price
Every Catat Pembelian (Record Purchase) updates the cost price with a weighted average of old stock and the new purchase price, so COGS doesn't jump around with every restock.
Recipes (F&B)
Build ingredients per serving, e.g. Iced Latte = 18 g coffee + 150 ml milk + 1 cup. COGS is calculated from the ingredients and follows their price changes.
Ingredient Stock Deducted
For menu items that don't track their own stock, ingredient stock in the Warehouse goes down automatically on every sale — it may go negative so the POS is never blocked.
Margins at a Glance
The variant form, item details, Dashboard, Business Health, and Full Report show gross profit and margin, with a reminder when a cost price is missing.
Turning Recipes On
Recipes are on automatically for F&B businesses. Other business types can turn them on in Pengaturan Bisnis → Resep & HPP (Business Settings → Recipes & COGS; admin/owner). Turning it off only hides the recipe menu — existing recipes keep working.
Creating a Recipe
Time-Based Rentals (Sewa)
For PlayStation rentals, billiards, studios, or courts billed by the hour. Rentals are managed in the Sewa (Rental) menu, separate from the POS: the POS sells items (coffee, food), while the Rental menu handles timers, durations, and rental payments.
Setting Up Rates and Units
Open Pengaturan Bisnis → Meja / Unit, turn the feature on, then on the Tarif Sewa per Waktu (Time-Based Rental Rates) card tap "Tambah Tarif" (Add Rate). Rates stand on their own — no need to create a Catalog item. Enter a name (printed on the receipt as PS5 Rental), rounding (e.g. per 15 minutes), a minimum rental (e.g. 1 hour), and the hourly price by choosing the Satu harga (Single price), Siang / Malam (Day / Night), or Kustom (Custom, several periods) pattern. Owners/admins can also do this straight from the Sewa menu with the Kelola Tarif (Manage Rates) button.
Add units (e.g. PS5 Room A, Billiard Tables 1–4 with Add in Bulk), then assign their rates — in the unit form, or in the Pasang Tarif ke Unit (Assign Rates to Units) section of the Manage Rates dialog. Rated units appear in the Sewa menu, not in the POS table grid.
Running a Session
Open the Sewa menu. Each unit shows as Kosong (Free), Berjalan (Running — with a timer and estimated cost), or Belum dibayar (Unpaid), grouped by area.
Tap "Mulai" (Start) on a free unit and choose a rental type: Main bebas (Open play — pay for the time used), Paket durasi (Duration package — set it yourself in minutes or hours; at least that duration is charged, and any extra time is charged too), or Paket bundling (Bundle — a Catalog bundle whose contents include rental hours for that unit's rate, e.g. 2 Hours + 2 Iced Teas for Rp100,000 — the duration comes from the bundle contents). Choose a customer — or add a new one with the button next to it — and add a note if needed.
Tap a running unit's card to see the details: duration, time left on the package, and the estimated cost breakdown per period. Started by mistake? Batalkan Sesi (Cancel Session) — at no charge.
Tap "Selesai & Hitung" (Finish & Calculate). The cost is calculated per minute by period — playing 17:30–19:00 with Day until 18:00 = 30 Day minutes + 60 Night minutes — then rounded. Choose the payment method and discount, tap "Bayar" (Pay), and print the receipt. Tap "Nanti" (Later) if the customer pays later — the unit stays Belum dibayar (Unpaid) until paid.
Snacks at the Unit & One Bill
Customer ordering coffee or food? Open the Kasir (POS), choose Meja (Table), then pick the unit labeled Disewa (Rented). Record the order and tap "Simpan ke …" (Save to …) — the order is kept open on that unit.
When the session is finished and paid in the Sewa menu, the rental fee, bundles, and that unit's POS orders are combined into one receipt. The unit card in Rental shows its POS order total while the session is running.
Customer wants more time? Tap the running unit's card, then Tambah Durasi (Add Time: +30 minutes, +1 hour, +2 hours, or enter minutes yourself). Extra time is charged at the rate.
Session History
Tap "Riwayat" (History) in the Rental menu to see sessions by date. The amount shown for paid sessions is the receipt total (including bundles and combined POS orders). Unpaid sessions can be paid or cancelled at no charge; paid sessions can have their receipt details opened, be reprinted, or have their payment voided (cash and stock are returned); cancelled sessions can be deleted permanently. Voiding payments and permanent deletion are for owners/admins only.
Point of Sale (Kasir)
Record sales on the spot. The Kasir (POS) menu is available to cashiers and above, and it's the one business page designed to be comfortable on a phone screen.
Making a Sale
Search for an item in the "Cari item atau varian/SKU..." (Search item or variant/SKU) box, or tap a variant card in the grid. Variants with a "Stok habis" (Out of stock) badge can't be added.
If the Tambahan (Add-ons) feature is on and the variant has groups (e.g. Size, Topping), a choice dialog appears when you tap the product. Pick what the customer asked for — groups marked Wajib (Required) must be filled, and options that ran out can't be picked — then tap "Masukkan" (Add). The same variant with different add-ons becomes a separate cart line.
Adjust quantities on the Keranjang (Cart) card with the + / - buttons. The + button is limited by the available stock.
Choose a customer (optional) — type a name to search, and the search covers your whole contact list, not just the first ones shown. You can also add a new customer with the quick-add icon. Then choose the payment method: Tunai (Cash), QRIS, Transfer, or Lainnya (Other).
If available, choose a Diskon (discount) (optional). Only discounts that are active and within their period appear. If the Biaya Layanan (Service Charge) is on, it's added automatically. The Subtotal → Discount → Service Charge → Total breakdown is shown before you pay.
The Penjualan Berhasil (Sale Successful) dialog shows the receipt number. Tap "Cetak Struk" (Print Receipt) to preview and "Unduh PDF" (Download PDF), or "Selesai" (Done) for the next transaction.
Saving and Resuming Drafts
Fill the cart, then tap "Draft" below it to save it without deducting stock or recording cash.
To continue, tap the "Draft" button on the Cart card, then choose "Muat" (Load) — the cart is refilled with an Edit Draft badge. When you save or pay, the same draft is updated (its receipt number and queue number don't change).
Drafts can also be managed from the Riwayat (History) tab: edit in the cart, Selesaikan penjualan (Complete sale), or Hapus permanen (Delete permanently).
Orders per Table
Appears when the Meja / Unit (Tables / Units) feature is on in Business Settings.
In the cart, choose the order type: Makan di tempat (Dine-in), Bawa pulang (Takeaway), or Antar (Delivery).
For dine-in, tap "Pilih Meja" (Choose Table), or the Meja button above the cart. The grid shows tables by area — occupied tables are colored with their running total, queue number, and how long they've been seated.
Choose a free table, add the order, then tap "Simpan ke Meja …" (Save to Table …). The order is kept open without deducting stock or recording cash.
Customer adding more? Open the grid again and tap the occupied table — its order loads into the cart. Add items and save again, or tap "Checkout" to pay for everything at once.
Sales History & Cancellations
Open the Riwayat (History) page with the History button in the POS. By default only today's sales are shown — tap "Semua" (All) to see every date.
Filter with the search box (receipt number or customer name), the status filter (Selesai & Dibatalkan (Completed & Cancelled), Selesai, Dibatalkan, Draft), or the date. Click the Waktu (Time) or Total header to sort.
Click a row to see its details and "Cetak PDF" (Print PDF). The receipt size follows Pengaturan Bisnis → Dokumen.
To cancel, tap the "Batalkan penjualan" (Cancel sale) icon — owner or admin only — then confirm.
Warehouse, Restock & Stock History
These three menus track the stock of raw materials and finished goods. All three are for admins and above.
Warehouse (Gudang)
An inventory of raw materials that are bought and used, not sold directly at the POS. For Food & Beverage and Retail.
Restock (Tambah Stok)
A one-page shortcut for recording stock purchases for many items without opening each variant dialog.
Stock History (Riwayat Stok)
An audit trail of every stock change — purchases, sales, usage, corrections, and returns.
Separate Warehouse Stock
Retail only: two stock numbers per variant — Stok Jual (Sales Stock, ready on the shelf/POS) and Stok Gudang (Warehouse Stock, bulk).
Managing Raw Materials in the Warehouse
On the material's row, tap "Kelola varian & stok" (Manage variants & stock) to Catat pembelian (Record purchase), Catat pemakaian (Record usage), Sesuaikan stok (Adjust stock), or view the Riwayat mutasi (Movement history).
Recording Ingredient Usage
Separate Warehouse Stock (Retail)
Useful when you keep bulk stock in a warehouse that isn't all ready to sell.
When adding or editing an item, turn on Lacak Stok (Track Stock) and then Gunakan Stok Gudang Terpisah (Use Separate Warehouse Stock).
When you Catat Pembelian (Record Purchase) or Sesuaikan Stok (Adjust Stock), choose the Tujuan Stok (stock destination): Stok Jual (ready to sell at the POS) or Stok Gudang (bulk, not yet released to the shelf).
To move goods to the shelf, tap "Ambil dari Gudang" (Take from Warehouse) on the variant, choose the Arah (direction) Gudang → Stok (Warehouse → Stock), enter the Jumlah (quantity), then save. For the opposite correction choose Stok → Gudang.
Bulk Restocking
Reading Stock History
Filter by item, type (Pembelian/Purchase, Penjualan/Sale, Pemakaian/Usage, Koreksi/Correction, Retur/Return, Masuk lain/Other in), and date range. Tap "Reset Filter" to clear them.
The Sumber (Source) column shows where a change came from: a receipt number, an invoice number, or "-" for manual entries. The Oleh (By) column shows who made it.
Contacts: Customers & Suppliers
Keep details of the people who buy from and sell to your business. Contacts are used in the POS, Invoices, and Payables & Receivables. This menu is for admins and above.
Enter the Nama (name) (required) and choose the Tipe (type): Pelanggan (Customer), Pemasok (Supplier), or Keduanya (Both). The labels follow your business type (e.g. Client and Vendor).
For types other than Customer, fill in the Telepon (phone), Email, and Alamat (address). Customers only need a name and notes.
For customers, you can fill in Gender and Umur (age) (both optional). This data is only used for buyer profile insights in the Full Report.