MAPAN

Search the Guide

Search MAPAN guide topics

Business: Catalog, POS & Stock

Business: Catalog, POS & Stock

Build your catalog and variants, sell through the POS, manage your warehouse and stock history, and keep contacts tidy.

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

Open your catalog menu, then tap the "Tambah ..." (Add ...) button (Tambah Menu, Tambah Produk, etc.).

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.

Tap "Simpan" (Save).

Managing Variants

On the item row, tap the "Kelola varian" (Manage variants) icon.

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.

In the variant dialog, tap the "Sesuaikan stok manual" (Adjust stock manually) icon.

Enter the Jumlah (quantity) — a positive number adds, a negative number subtracts (it can't be 0) — and a Catatan (note) (optional).

Tap "Simpan" (Save). Adjustments don't affect business cash.

Recording Stock Purchases

Available for Retail and Other, for items bought ready-made and resold.

In the variant dialog, tap the "Catat pembelian" (Record purchase) icon.

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.

Tap "Simpan Paket" (Save Bundle). The item is now labeled Paket in the Catalog and POS.

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

Make sure the ingredients exist in the Gudang (Warehouse) and have a cost price (via Catat Pembelian).
Open the menu item's details in the Katalog (Catalog), then tap "Atur resep (HPP)" (Set recipe) on the variant row.
Search and pick ingredients, then enter the amount per serving. Ingredients stored per kg/liter can be measured directly in grams/ml (or ons) — e.g. 20 grams of milk powder is automatically taken as 0.02 kg from Warehouse stock.
Check the COGS per serving, gross profit, and margin in the summary, then tap "Simpan Resep" (Save 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

Open Kasir (the Kasir tab).

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.

Tap "Checkout", review the confirmation dialog, and tap "Konfirmasi & Bayar" (Confirm & 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

Open Gudang, then tap "Tambah Bahan Baku" (Add Raw Material) — for Retail: "Tambah Produk" (Add Product).
Enter the name, unit, category, and variants with their cost price and opening stock.

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

In the Warehouse variant dialog, tap "Catat pemakaian" (Record usage).
Enter the Jumlah Dipakai (quantity used) and Catatan (note) (optional), then save.

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

Open Tambah Stok (Restock) — the table shows the Stok Saat Ini (current stock) and Stok Gudang (warehouse stock) per variant.
Search for the item, tap "Tambah Stok" on its row, fill in the purchase, then save.

Reading Stock History

Open Riwayat Stok (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.

Tap "Export Excel" to download the results matching the active filters.

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.

Open Kontak (Contacts), then tap "Tambah Kontak" (Add Contact).

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.

Tap "Simpan" (Save). When editing, the Kontak Aktif (Active Contact) switch deactivates a contact.

Was this guide helpful?

Tell us which parts need more clarity.