Kasir POS
Kasir (point of sale) is used to sell, record transactions, manage products and stock, and view reports. All data is saved in the cloud and synced across every device logged in to the same account.
Open the Kasir app →Quick start (the first 10 minutes)
- Log in via the Login page with your account. The Kasir app opens automatically. New accounts get a 7-day free trial with all features.
- Open the Produk tab, then + Tambah Produk. Fill in Product Name, Category, Retail Price, and Stock. New accounts already contain 14 sample products (Es Teh Manis, Kopi Hitam, etc.); delete or edit them as needed.
- Open the Lainnya ▾ → Kas tab, click Buka Kasir, choose the cashier's name, and enter the Starting Cash. The register must be opened before you can sell.
- Open the Kasir tab, click the products being bought, fill in Uang diterima, then click Bayar & Cetak Struk.
- After the transaction, send the receipt with Kirim WA or print it with 🖨 Cetak.
Kasir: selling
The main screen for serving customers. Left: the product list. Right: the SHOPPING RECEIPT (cart and payment).
Cash sale
- Search for products in the Cari produk... box or pick a category chip. Products marked Sold out can't be clicked.
- Click a product card to add it to the cart. Click again to increase the quantity, or use the + and − buttons in the cart.
- If a product has additional units (e.g. Dozen, Box), a Pilih satuan pembelian: option appears. If it has Add-Ons/Toppings, a checklist appears; then click Tambah ke Keranjang.
- (Optional) Choose a customer in the Tanpa pelanggan (umum) dropdown so points and history are recorded.
- Fill in Uang diterima. Change (green) or Short (red) appears. Quick amount buttons are available (exact amount, 5,000, 10,000, 50,000).
- Click Bayar & Cetak Struk. Stock is reduced automatically and the receipt appears.
Discounts, tax, vouchers, points
- Total Discount: type a number and choose Rp or %. Tax (%) is calculated after the discount. The tax field isn't saved automatically, so type it again for each transaction.
- Item discount: click 🏷 Diskon item on the product row (Rp or %).
- Voucher: type the Kode voucher then Pakai. Only one voucher per transaction.
- Redeem points: tick redeem points if the selected customer has points.
- Order of deductions: item discount, then manual discount, voucher, and points.
Wholesale prices and units
- If a product has a Wholesale Price, a Grosir (Rp...) checkbox appears on the cart row. Tick it manually per row; wholesale pricing doesn't apply automatically based on quantity, and doesn't apply to additional units.
- Stock is always counted in the base unit (pcs). Selling 1 Box containing 12 reduces stock by 12.
Non-cash payments
- 📱 QRIS / E-Wallet: payment through Midtrans. The transaction is saved automatically once payment succeeds. Don't close or refresh before it finishes. It must be set up first in Pengaturan → 💳 Pembayaran QRIS.
- ✓ Tandai Lunas (QRIS/TF Sendiri): for customers who pay to your own static QRIS or bank account. The app only records it; it can't check whether the money came in, so make sure the funds have been received first.
- 🔀 Split: appears when Uang diterima is less than the total. The remainder is recorded as non-cash.
Hold a transaction
Click ⏸ Tahan, add a label (e.g. "Table 3"), and serve another customer. Reopen it with the 🗂 N button.
Receipt
After payment, the Struk Transaksi window appears: Tutup, Kirim WA, and 🖨 Cetak. Kirim WA asks for the customer's number (it can be left empty to pick a contact in WhatsApp; a leading 0 is replaced with 62). The receipt includes the text "Dibuat dengan terasusaha.com".
Barcode scanner
Use a keyboard-type USB/Bluetooth scanner. Click the Cari produk... box, then scan. If the barcode matches, the product goes straight into the cart. The Esc key clears the search. A phone camera can't be used as a scanner yet. Barcodes are entered in the product form.
Transaction history
A list of all transactions, daily summary, returns, and cancellations.
- Top cards: Today's transactions, Today's revenue, Average per transaction, Total transactions, plus a 14-day revenue chart.
- Search by receipt number, product, customer, or cashier in the search box. Date range filters: Hari ini, 7 hari, 30 hari, Semua. Payment method filters: Cash, QRIS / E-Wallet, QRIS / Store Transfer, Split, Cancelled.
- Click a row to open it and reprint the receipt or Kirim WA.
- ⬇ Export CSV downloads your transactions (opens in Excel).
Batalkan (cancel) vs Retur (return)
| Batalkan (cancel) | Retur (return) | |
|---|---|---|
| Use for | A transaction entered by mistake | Goods returned by the buyer |
| Stock | Fully restored | Increases by the returned quantity |
| Reports | The transaction is removed from all totals | The return value is recorded and the transaction stays |
| Voucher/points | Restored | Unchanged |
- Cancel: click Batalkan, then Ya, Batalkan Transaksi. If the active cashier has a PIN, the PIN is required.
- Return: click Retur, enter Retur Qty for each product (up to the quantity not yet returned), add a reason if needed, then Proses Retur. Return value = unit price x quantity (discounts are not counted).
Products and stock
Manage your product list, prices, stock, and online catalog.
Add / edit a product
Click + Tambah Produk. Fields:
- Nama Produk (product name), Kategori (category), Barcode (optional), Harga Retail (retail price), Harga Grosir (optional) (wholesale price), Harga Modal (optional) (cost price), Stok (stock).
- Fill in Harga Modal (cost price) so your profit and loss is accurate. The margin shows automatically once the cost is entered.
- Tanggal Kedaluwarsa (expiry date): a warning appears, and expired products are hidden from the catalog.
- Satuan Tambahan (extra units, e.g. dozen, carton): enter the name, the quantity per unit (pcs), and the price, then +.
- Add On / Topping: enter a name and price, then +.
A barcode already used by another product will be rejected. Product limit: 10,000.
Import and export
- ⬆ Import Excel/CSV: add many products at once. Columns: nama,kategori,harga,stok,barcode,satuan (barcode and unit are optional). Save from Excel as .csv first. Import only adds new products and does not check for duplicates.
- ⬇ Export Data: saves a copy of your products and transactions (JSON).
- ⬆ Import Data: overwrites all products and transactions with the contents of the file. Don't use it as a full restore, because barcodes, wholesale prices, cost prices, units, and add-ons are not included.
Stock Opname (stock count)
Click 📋 Stok Opname, enter the physical count in the Fisik column (compare it with Sistem), then Simpan Penyesuaian. Stock is replaced with the physical count and the count history is saved.
Online Catalog
- Click 🌐 Katalog Online, then Publikasikan Katalog.
- Click Salin to copy the link and share it with your customers.
- Whenever your products change, click Perbarui Katalog again. The catalog is a copy as of the time you published it.
Reports
Choose a month with the ← → buttons. Sub-tabs: Summary, Sales, Finance, Stock & Cost, Feedback.
- Ringkasan (Summary): Total Omzet (revenue, with comparison to last month), number of transactions, average per transaction, best day, daily revenue, best-selling products, busiest hours.
- Penjualan (Sales): by category, payment method, day of the week, by cashier, and this month's returns. Includes ⬇ Export Arus Stok CSV.
- Keuangan (Finance): Omzet (revenue), Modal Terjual (cost of goods sold, HPP), Pengeluaran (expenses), Pajak Terkumpul (tax collected), net profit and loss, 6-month trend, expenses by category, daily cash flow. Can be exported as CSV.
- Stok & Modal (Stock & Cost): current cost value of your stock, products that don't have a cost price yet, the 10 lowest-stock items.
- Kritik & Saran (Feedback): reviews sent by customers from the Online Catalog page.
Customers
- Click + Tambah Pelanggan.
- Enter a name, phone number (optional), and notes (optional), then save.
- On the Kasir screen, choose a customer from the dropdown in the cart.
If the Points feature is on, a ⭐ N poin tag appears. Points are only awarded on transactions with a selected customer.
Cash: opening/closing the register and expenses
This menu is available to all customers.
Open the register (required before selling)
- Open the Kas tab and click Buka Kasir.
- Choose the Nama Kasir (cashier name) (or + Nama baru...), enter the PIN Kasir if that cashier has a PIN, and enter the Modal Awal (Rp) (starting cash).
- Click Buka Kasir. Only one session can be open at a time.
Close the register
- Click Tutup Kasir. The screen shows Starting Cash, Sales During the Session, Expenses During the Session, and Estimated Closing Cash.
- Count the physical cash in the drawer, enter Kas Fisik Dihitung (Rp) (counted cash), then close.
- The difference is saved and shown in Riwayat Sesi Kasir as Pas (exact) / Lebih (over) / Kurang (short).
Record an expense
Click + Catat Pengeluaran, then enter the amount, description, and category (Operational, Salaries, Rent, Electricity & Water, Raw Materials, Transportation, or type your own). Expenses go into the Financial Report.
Suppliers and purchases
- Click + Tambah Supplier (name, phone number, address).
- Click + Catat Pembelian, choose the supplier, product, unit, quantity, and purchase price, then + Tambah. Repeat for other products.
- Enter the amount in Sudah Dibayar (Rp) (amount paid), then Simpan Pembelian.
- Product stock goes up and the cost price is recalculated (weighted average).
- If it isn't fully paid, the remainder goes into the Hutang/Piutang (payables/receivables) menu.
- To return goods to a supplier, click Retur in Purchase History.
Payables and receivables
- Hutang ke Supplier (money you owe suppliers) fills in automatically from unpaid purchases. Click Bayar and enter the amount (installments are fine).
- Piutang Pelanggan (money customers owe you): click + Catat Piutang, choose a customer or type a name, and enter the amount and a note. Click Bayar when the customer pays (installments are supported).
Customer orders
- Click + Buat Pesanan Baru, choose a customer, add products and quantities, enter the address, payment method, and notes, then Simpan Pesanan.
- Change the status with the buttons: New → Proses → Processing → Siap/Kirim → Ready/Shipped → Selesaikan. Batalkan is available while the order is New or Processing.
- Print a delivery note with Cetak Invoice (when the order is Ready/Shipped or Completed).
Settings
Menu on the left: Store Photo & Profile, QRIS Payments, Cashiers/PIN & Access, Vouchers & Promos, Customer Points, Receipt Printing.
🏪 Store Photo & Profile
Upload a photo (JPG/PNG/WebP, max 8 MB), enter your store's address and phone/WhatsApp, then Simpan Profil Toko. These appear on receipts and in the catalog.
💳 QRIS Payments (Midtrans)
- Sign up for your own Midtrans account for your store (money goes into your bank account).
- Choose a mode: Sandbox (for testing, no real money) or Production.
- Enter your Client Key and Server Key, then Simpan Pengaturan Pembayaran. The Server Key is encrypted and is not shown again.
The status changes to "✓ Pembayaran QRIS sudah aktif" (QRIS payment is active). After that, the 📱 QRIS / E-Wallet button on the Kasir screen lights up.
👤 Cashiers, PIN & Access
- Add a cashier: enter Nama Kasir, PIN (4-6 digit, opsional), and Peran (role: Manajer has full access, Kasir has limited access), then Simpan Kasir.
- The PIN is used at Buka Kasir and when you Batalkan Transaksi. A PIN can't be viewed again once saved.
- Staff Access Rights: tick Batasi akses peran Kasir and enter the PIN Pemilik (owner PIN). The Reports, Products, Supplier, and Settings menus, and the Cancel/Return/Stok Opname actions, will ask for the Owner PIN (access stays open for 10 minutes).
🎟 Vouchers & Promos
Click + Buat Voucher: Voucher Code (3-20 characters), Discount Type (fixed amount or percentage), Value, Maximum Discount, Minimum Purchase, Valid Until, Usage Quota. Vouchers can be turned on/off or deleted.
⭐ Customer Points
Tick Aktifkan poin pelanggan, set "Earn 1 point for every purchase of (Rp)", the value of 1 point, and the minimum points to redeem, then Simpan Pengaturan Poin.
🖨 Receipt Printing
- Choose a printer: Cetak Biasa (regular printing: USB/network printer through the browser's print dialog) or Printer Thermal Bluetooth (Bluetooth thermal printer, prints directly with no dialog).
- Choose a paper width of 58 mm or 80 mm.
- For Bluetooth: click 🔗 Hubungkan Printer, then 🧾 Tes Cetak.
FAQ and things to watch out for
Why can't I tap a product on the Kasir screen?
I entered a transaction by mistake. What should I do?
Is it safe if the internet drops while I'm selling?
If two cashiers sell at the same time on two devices, will stock conflict?
Can I use it for multiple branches?
Is there a separate login for each employee?
Can customers pay by debit/credit card?
Can I import from an .xlsx file?
Invoice & Billing
Invoice & Billing (Invoice & Tagihan) is used to create invoices, quotations, and proformas, record payments (including installments), and remind customers who haven't paid via WhatsApp.
Open the Invoice & Billing app →Quick start
- Log in from the Login page. The Invoice app opens automatically (the 7-day free trial unlocks all features).
- Open Pengaturan → 🏢 Identitas Usaha and fill in your business name, WhatsApp number, email, and address. Open 🏦 Rekening & QRIS to enter your bank, account number, and account holder name. Click Simpan Pengaturan.
- Open Pelanggan → Tambah Pelanggan and Item → Tambah Item so future invoices only need a selection.
- Click + Buat Dokumen, fill in the customer, items, and dates, then Terbitkan.
- On the detail page, send it via Kirim WhatsApp or Cetak / PDF.
Dashboard
A summary of your billing and a list of all documents.
- Cards: Total Dokumen (total documents), Piutang (Belum Diterima) (receivables, not yet received), Lewat Jatuh Tempo (overdue), Diterima Bulan Ini (received this month).
- The Perlu Ditagih (needs collecting) card shows up to 8 documents that are overdue or due within 3 days. Click Ingatkan to open WhatsApp with a ready-to-send message.
- Search by number or customer name in the search box. Type filter: All types / Invoice / Quotation / Proforma. Status filter: All, Unpaid, Partial, Overdue, Paid, Draft, Cancelled.
- Click a document row to open its details. The Dashboard loads the latest 200 documents; click Muat dokumen lebih lama for the rest.
Creating an invoice
- Click + Buat Dokumen (or the Buat tab). Choose the Jenis Dokumen (document type): Invoice, Quotation, or Proforma.
- Customer: choose from Pilih Pelanggan Terdaftar or enter manually (customer name is required; WhatsApp number, email, NPWP (tax ID), and address are optional).
- Dates: enter the issue date and due date. Quick buttons: Hari ini, 7 hari, 14 hari, 30 hari, 60 hari. The default due date is set in Settings.
- Items: choose Dari Katalog to fill in automatically, or choose "— Item manual —". Enter the name & description, quantity, unit, and price. Click + Tambah Baris for another line.
- Discount, Tax & Fees: enter the total discount (Rp or %), and choose Kena PPN? (subject to VAT?) Yes/No (default 11%, calculated on the value after discount).
- Fill in the notes and Terms & Conditions (filled in automatically from your Settings defaults).
- Check the totals box (Subtotal, Discount, VAT, Total, and the total in words), then click Terbitkan or Simpan sebagai Draf.
Extra features
- Discount % and a VAT tick per line.
- Other Fees (shipping, admin).
- Income tax withheld by the customer (PPh 23 for services 2% / 4% without NPWP / 1.5%, or land/building rent 10%). Amount to collect = Total minus PPh.
- Quotations and Proformas, and more than 20 item lines.
Issue vs Draft
- Terbitkan (Issue): the invoice gets the status Unpaid and counts toward receivables.
- Simpan sebagai Draf (Save as Draft): it gets a number and can be edited, but it isn't counted as a receivable and doesn't appear in Perlu Ditagih. To issue a draft: open it, click Edit, then Terbitkan.
Document details: send, pay, receipt
Click a document row on the Dashboard, or it opens automatically after you save.
Send to the customer
- Kirim WhatsApp: opens WhatsApp with a summary (number, items, total, remaining balance, bank details, and a link if enabled). Numbers starting with 08xxx are automatically converted to 62xxx.
- Cetak / PDF: uses the browser's print dialog. On a phone, choose "Save as PDF" or "Share".
- Buat Link Publik: creates a /inv/?t=... link that customers can open without logging in, and copies it right away. You can see how many times the customer has opened it (Dilihat pelanggan N×). Click Matikan to turn the link off. The link updates automatically when the document is changed or paid.
Recording payments
- Click + Catat Pembayaran.
- Enter the amount paid (default = remaining balance), payment date, method (Transfer, Cash, QRIS, E-wallet, Other), and a note (e.g. "50% DP").
- Click Simpan. The status automatically becomes Partially Paid or Paid.
- Tandai Lunas records full payment today via Transfer. For installments, use Catat Pembayaran.
- Recorded something wrong? Click Hapus on the row in the Payment History card; the status is recalculated.
- The amount can't be zero or exceed the remaining balance.
Receipt
In Payment History, click Kwitansi, then Cetak / PDF. Receipts are numbered <NoInvoice>-K1 and so on, include the amount in words, and have a stamp-duty box (it reads "Tempel Meterai Rp10,000", meaning "Affix Rp10,000 stamp duty", when the amount is Rp5 million or more).
Payment reminders
Click Ingatkan via WA (or Ingatkan on the Dashboard). The app keeps count of how many times you've sent a reminder. Reminders are always manual; there are no scheduled automatic messages. Custom message templates and late fees are also available.
Document statuses
| Status | Meaning |
|---|---|
| Draft | Not yet issued, not counted as a receivable |
| Unpaid | Issued, no payment yet |
| Partially Paid | Has installments, balance still remaining |
| Overdue | Past the due date with a balance remaining (including those partly paid) |
| Paid | Zero balance |
| Cancelled | Stays saved with a CANCELLED stamp, not counted as a receivable |
Other actions
- Edit: for documents that haven't been cancelled. Editing a Paid invoice asks for confirmation, because the amounts may no longer match the payments.
- Duplikat: opens a pre-filled form with today as the issue date.
- Batalkan / Aktifkan Kembali: safer than Hapus for documents that have already been issued.
- Hapus: permanent; the number and payment history are lost too.
Quotations and Proformas
- Quotations use the label Berlaku Sampai (valid until) and the prefix PNW. After Terbitkan, the status is Sent.
- Use Tandai Disetujui, Tandai Ditolak, or Jadikan Invoice (one click, and a new invoice number is created). Proforma payments carry over.
- Quotations past their valid-until date automatically show as Expired. Quotations are never counted as receivables.
Recurring invoices
For regular billing (rent, subscriptions, retainers).
- Open an invoice that has been issued and click Jadikan Berulang.
- Enter the schedule name, frequency (Monthly/Weekly/Yearly), next issue date, end date (optional), due date after issue, and Saat dibuat otomatis (when auto-created: Issue immediately or Save as draft).
- Click Simpan Jadwal. Manage it in the Berulang tab: Buat Sekarang, Jeda/Aktifkan, Hapus.
Reports
- Choose a period: Bulan ini, Bulan lalu, Tahun ini, Semua. Click Ekspor CSV to download.
- Receivables Aging: Not yet due, 1–30, 31–60, 61–90, and >90 days.
- Last 12 Months: billed vs received. Top Customers: the 10 customers with the largest bills.
- Tax Summary: DPP (tax base), output VAT, and income tax withheld by customers.
Item Catalog
- Click Tambah Item. Fill in the Goods/Service Code, Item Name (required), Unit (default pcs), and Unit Price, then Simpan.
- Search using Cari kode atau nama item....
- Import many items at once: click Template to download a sample CSV, fill it in, then Impor CSV (max 2,000 rows, duplicates are not checked).
The catalog only holds code, name, unit, and price (no stock or photos).
Customers
- Click Tambah Pelanggan and fill in Name (required), WhatsApp No., Email, NPWP (tax ID), and Address.
- The Status column shows Ada Tunggakan (overdue), Lunas Semua (all paid), or Belum Ada Invoice (no invoices yet).
- Bulk import with Template and Impor CSV.
Settings
Seven sub-menus. Click Simpan Pengaturan after changing anything.
- 🏢 Identitas Usaha (Business Identity): Business Name, WhatsApp, Email, Address, Business NPWP (optional).
- 🔢 Format Nomor (Number Format): Invoice Prefix, Quotation/Proforma Prefix, Number Style (INV-202610-00001 or 001/INV/X/2026), and resetting the sequence every month.
- 🏦 Rekening & QRIS (Bank Account & QRIS): Bank, Account No., Account Holder. Upload your QRIS image (Pilih Gambar).
- 🎨 Tampilan Dokumen (Document Appearance): Classic/Modern/Minimal template, Accent Color, Signer Name, Title/Position, and Signature image (a transparent PNG looks neatest). There is a Pratinjau.
- 📜 Syarat, Denda & Pajak (Terms, Late Fees & Tax): default due date (days), quotation validity period, default VAT (PPN) percentage, Terms & Conditions, Notes. Late fee (% per day, max 5).
- 🔔 Pengingat (Reminders): edit the WhatsApp template using the codes {nama} {no} {usaha} {sisa} {total} {jatuhtempo} {hari} {link}. Kembalikan ke bawaan restores the original text.
- 📦 Data & Impor (Data & Import): Ekspor Semua Dokumen, Ekspor Pelanggan, Ekspor Item (CSV, can be opened in Excel).
FAQ
Is this invoice a Faktur Pajak (tax invoice)?
Does sending via WhatsApp change the status?
Why does an invoice paid in installments show "Jatuh Tempo"?
Can I upload a logo and a stamp?
Can it be used without internet?
Can customers pay online?
Attendance & Payslips
Attendance & Payslips is used to record employee attendance (no facial recognition), set work schedules and locations, process leave and overtime, calculate monthly summaries, and issue payslips that are emailed automatically to employees. Suitable for small to medium businesses.
Open the Attendance & Payslips app →Quick start for owners (suggested order)
- Pengaturan → fill in the Business name, Address (shown on payslips), and Business time zone (WIB/WITA/WIT). Click Simpan pengaturan.
- Jadwal & lokasi → edit the "Utama" (Main) schedule (Clock-in, Clock-out, Break, Late tolerance) and the work location (enter Latitude/Longitude, or click Pakai lokasi saya sekarang while you are at the office, then set the area Radius).
- Karyawan → Tambah karyawan. Fill in NIK (employee ID), Name, Position, Start date, Base salary, and a 4-digit kiosk attendance PIN. Tick the login account option if the employee will clock in from their phone. Save the password that appears: it is shown only once.
- Choose how people clock in: a Kios absen (attendance kiosk) tablet at the office, phone + GPS through the employee portal, and/or a fingerprint machine (log import).
- At the end of the month: check the Rekap bulanan (monthly summary), resolve the Pengajuan (requests), then open Slip gaji (payslips) and issue them.
The menus you see depend on your role: owners see all menus; HR and supervisors see some (see the Roles section).
Today
A live view of today's attendance.
- Each employee appears with a status: Hadir (present), Terlambat (late, with the number of minutes), Belum absen (not clocked in yet), Cuti/Izin/Sakit (leave/permission/sick), Alpa (absent without notice), or day off.
- Clock-in and clock-out times are recorded from the server clock, not the phone's clock, so they cannot be set earlier.
- Wrong entry or forgot to clock in? Click Koreksi, then fill in Clock-in time, Clock-out time, and a Correction reason (required; saved in the Audit trail). Hapus catatan deletes that day's record.
Attendance kiosk (tablet at the office)
One tablet or phone at the entrance, shared by all employees.
Setting up the kiosk account
- Open Pengaturan → Akun kios (tablet di kantor) and click Buat akun kios.
- Write down the Business code, ID, and password that appear (shown only once). Log in on the tablet with the business code + that kiosk account.
- A kiosk account can only open the Kiosk screen. It cannot see salaries or personal data. Click Nonaktifkan if a tablet is lost, or Buat password kios baru to replace the password.
How employees clock in
- Type your NIK on the number pad, then press OK.
- Type your 4-digit PIN, then press OK.
- Press Absen masuk or Absen pulang. The screen shows the result (on time, late by a number of minutes, or an error).
- With an ID card (NFC): tap the card on the tablet (Chrome on Android). The card is registered in the employee's data.
- Entering the wrong PIN 5 times locks that employee out for 1 minute. Excessive attempts from a single NIK are also limited by the server.
- PIN and card verification is done on the server, not on the tablet.
- The kiosk screen refreshes its data periodically and returns to the start a few seconds after clocking in.
Employee portal (clock in from a phone)
For employees who have a login account. Address: terasusaha.com/absensi/
Log in
Choose to log in as an employee, then enter the Business code (6 characters, from the owner), your NIK, and the Password the owner gave you. Change your password with the Ganti password button (at least 8 characters).
Clocking in
- Allow location access in the browser when asked.
- Make sure the indicator shows Di dalam area kerja (inside the work area) (the distance to the location and the radius are displayed).
- Press Absen masuk when you arrive and Absen pulang when you finish. If the owner has turned on selfie photos, you can add a photo (optional).
- Clocking in is rejected if you are outside the radius (if the owner turned on "Tolak absen HP bila di luar radius lokasi") or if the phone's clock differs from the server clock by more than about 3 minutes. Set your phone's clock back to automatic.
- Needs internet. Without a connection, attendance is not recorded.
Other features in the portal
- A Bulan ini (This month) summary: Present, Late, Absent, and progress of work hours against the target.
- Pengajuan saya (My requests): Ajukan cuti / izin and Ajukan lembur, along with their statuses.
- Slip gaji saya (My payslips): only your own payslips that have been issued.
Requests: leave, permission, sick leave, and overtime
Leave & permission
- Employees submit requests from the portal. The owner, HR, or a supervisor approves or rejects them. Owners/HR can also record them directly with Catat cuti / izin (approved immediately).
- Leave types: Annual leave, Sick, Permission, and other types (e.g. menstrual, marriage, bereavement, maternity), plus an automatic annual leave balance (12 working days).
- Paid leave does not reduce salary; unpaid permission is deducted on the payslip. Public holidays and non-working days are not counted.
- Decisions immediately update the Rekap (summary) and Slip gaji (payslips).
Overtime
Overtime comes from two sources: detected automatically when someone clocks out after their scheduled end time, or requested by the employee.
Employee requests overtime
- In the portal, click Ajukan lembur.
- Fill in Start date + Start time and End date + End time. It may go past midnight. Total overtime is calculated automatically and shown on the form.
- Add a reason, then Kirim. Maximum 12 hours per request; the recommended limit is 4 hours/day and 18 hours/week.
The supervisor decides
| Button | Result | Can the employee? |
|---|---|---|
| Approve (tick "Employee agrees to overtime") | Goes into the summary and payslip | View only |
| Return (note required) | Status becomes Returned | Edit then Kirim ulang; status goes back to Pending |
| Reject (note required) | Status becomes Rejected, locked | Cannot edit. Must Buat ulang (a new request) |
- A supervisor can adjust the overtime hours before approving. Overtime pay uses tiered multipliers (working day, weekly day off, public holiday).
- A red warning appears when the limit of 4 hours/day or 18 hours/week is exceeded; the decision stays with the supervisor.
- Only Approved overtime counts toward pay.
Monthly summary
- Choose a month with ← →. A table per employee: present, late (count and minutes), absent, leave/permission/sick, work hours against the target.
- Click a name to see daily details. Koreksi fixes a daily record (reason required).
- Unduh CSV exports the summary for Excel.
- Monthly discipline target (Pengaturan): a discipline bonus is given when lateness stays within the limit and the hours target is met.
Payslips
A modern payslip per employee per month, which can be printed and emailed as a PDF. Only owners and HR who have been given salary access can view them.
- Choose a period with ← →.
- Click Buka on an employee to see the components: base salary, fixed allowance, meal allowance (per day present), overtime pay, discipline bonus, lateness deduction, and other deductions.
- Fill in manually if needed: Bonus / extras, Cash advance deducted, and PPh 21 (income tax; enter it from your own tax calculation).
- Click Terbitkan semua yang belum / berubah to issue payslips. A payslip that changes after being issued is flagged so it can be issued again.
- Employees see their payslip in the portal and receive a PDF by email.
Sending email
- Turn on Kirim PDF slip otomatis ke email karyawan saat slip diterbitkan in Pengaturan. Make sure the employee's email is filled in on their employee record.
- Resend a single payslip: Email ke karyawan → preview → Kirim sekarang.
- The email sending limit is about 150 per day for the whole system. If you have many employees, issue payslips in batches.
- Cetak / simpan PDF prints the payslip from the browser.
- The hourly overtime rate uses the Hourly overtime divisor (Pengaturan; 173 is commonly used). Adjust it to your own rules.
Employees
Adding an employee
- Click Tambah karyawan.
- Fill in NIK / Employee No., Name, Position, Start date, Schedule, Work location.
- Fill in earnings: Base salary, Fixed allowance, Meal allowance per day present, Work hours target/month (empty = automatic).
- Fill in the Kiosk attendance PIN (4 digits) and Email (for sending payslips).
- Card ID (NFC) and Fingerprint machine PIN.
- Tick the option to create a login account for clocking in from a phone. Choose a Role and save.
Role
| Role | Can |
|---|---|
| Employees | Clock in themselves, request leave/overtime, view their own payslips |
| Supervisor | View team attendance, approve leave and overtime (not their own) |
| HR | Manage employees, schedules, attendance corrections. Salary and payslips only if given salary access |
| Owner | Everything, including Settings and kiosk accounts |
- Salary, PIN, card, and email are stored in separate data that only the owner and HR can read. Regular employees cannot read other people's data.
- Active employee limit: 50. Deactivating or deleting an employee frees up a slot.
- Forgot an employee's password? Open the employee, create a new password, and give it to them.
Schedules & locations
Work schedule (shift)
Click Tambah jadwal: Schedule name, Clock-in, Clock-out, Break (minutes), Late tolerance (minutes). A schedule is chosen per employee. Schedules that run past midnight follow the clock-in date.
Work location
Click Tambah lokasi: Location name, Latitude, Longitude, Area radius (meters). The easy way: stand at the location and click Pakai lokasi saya sekarang. A radius that is too small makes employees get rejected often because the GPS is off; start at around 100 meters.
National holidays
Add national holiday dates or collective leave days. Those days are not counted as absent. If an employee works anyway, it counts as holiday overtime.
Fingerprint machine
A fingerprint machine can be used alongside NIK and cards. Everything goes into the same summary.
- In Karyawan, enter the Fingerprint machine PIN exactly as it is registered on the machine.
- Export the log from the machine (USB flash drive or the bundled software; .dat, .txt, .csv, or Excel format).
- Open the Mesin finger menu, paste the log contents (each line: fingerprint PIN, date and time, optional status) into the import box, then click Proses impor.
- The earliest time on that day becomes clock-in and the latest becomes clock-out. The summary, overtime, and payslips are updated too.
- Lines that cannot be read are reported, and duplicate data is skipped.
- The Isi contoh button shows the accepted format.
Settings (owner)
- Akses karyawan (Employee access): shows the Business code (created automatically when the first login account is made) that employees use to log in.
- Akun kios (Kiosk account): see the Attendance kiosk section.
- Business name and Address (on payslips).
- Business time zone: WIB (UTC+7), WITA (UTC+8), or WIT (UTC+9). All attendance dates and times follow it.
- Hourly overtime divisor and Overtime counted from (minutes after clock-out time).
- Reject phone clock-ins outside the location radius and Ask for a selfie photo when clocking in from a phone (optional for employees).
- Deduct pay for lateness: the Lateness deduction per minute amount.
- Monthly discipline target: Discipline bonus and Maximum lateness (times/month).
- Send payslips: automatically sends a PDF to the employee's email when a payslip is issued.
- Audit trail: a history of important changes (attendance corrections, leave/overtime decisions, and so on).
Click Simpan pengaturan after making changes.
FAQ
What if an employee forgot to clock out?
Phone clock-in is always rejected as "outside the area".
The "check your device clock" message.
An employee forgot their password.
The payslip did not arrive by email.
Does it calculate PPh 21 and BPJS?
What if the business is in WITA/WIT?
Is facial recognition available?
Who can see salaries?
Table Ordering (QR)
Table Ordering lets customers scan a QR code at their table, choose from the menu, and order from their own phone. Orders go to the cashier and kitchen, and the bill is recorded in the Kasir (point of sale) app.
Open Table Ordering →Quick start (suggested order)
- Open Pengaturan: fill in the business name, tax/service charge if any, and payment methods.
- Open Menu: create categories (Food, Drinks, etc.), then add items with prices, photos, and add-on options.
- Open Meja & QR: add tables, then print the QR codes and stick one on each table.
- The customer scans the QR code, picks from the menu, sends the order, and is then taken straight to payment (QRIS or cash at the cashier).
- The order appears in the Meja tab under Menunggu pembayaran (awaiting payment) with a notification sound. Once the money is in, click Pembayaran diterima.
- Only then does the order move to Terima (Accepted), then is cooked, ready, and delivered. The transaction is recorded in Kasir automatically when payment is received.
The Tables and orders screen
- Each table is colored by its state: empty, has orders, new order, or asking for the bill.
- Pay first (default setting): a customer's order has the status Menunggu pembayaran (awaiting payment) until the cashier presses Pembayaran diterima. Turn it off in Settings if the restaurant uses pay-after-eating.
- After payment, an order can be accepted or rejected. Turn on auto-accept if you don't want to confirm manually.
- Customers at the same table share one bill; extra orders are added to the same bill.
- Orders can be created manually by the cashier for customers without a phone.
Tables and printing QR codes
- Each table has its own QR code and secret key. If a QR code leaks, change the key for that table and print it again.
- Print all QR codes at once from the Meja & QR tab.
- Up to 200 tables, grouped by area.
Kitchen and Bar screens
- Order tickets are shown per station (Kitchen / Bar) with a timer; the color changes if it takes too long.
- Mark items as being cooked or ready; the status also shows on the customer's phone.
- Lock the tablet to Kitchen or Cashier mode with the owner's PIN.
Bills, split bill, and Kasir
- The bill calculates the subtotal, service charge, tax (PB1), and rounding according to Settings.
- Pay-first mode: each order is paid separately and recorded right away; after all orders are delivered, click Selesaikan meja. Pay-after-eating mode: close the bill with cash, QRIS, or transfer. Split bill (split evenly, by item, different payment methods) is available.
- After payment, the transaction is recorded automatically in the Kasir app with the source "meja" (table).
- QRIS/transfer payments are confirmed manually by the cashier; automatic confirmation is not available yet. Product stock in Kasir is not reduced automatically.
Reports
- Daily sales, best-selling menu items, and average order value.
- Peak hours and a summary by payment method are also available.
FAQ
Customers can't open the menu.
New orders don't make a sound.
Can I have multiple branches?
Wedding Invitations
Digital wedding invitations with RSVP, guest wishes, digital envelopes, music, and guest check-in.
Open the Undangan app →Quick start
Wedding Invitations lets you create a digital wedding invitation with its own web address, RSVP, guest wishes, digital envelope, and guest check-in. One subscription = one invitation.
- Open the Undangan app, click Buat undangan, then enter the couple's names in the Mempelai menu.
- Enter the date, time, and venue in the Acara menu. For a ceremony and a reception, add a second event.
- Choose a theme and colors in the Tema menu.
- Upload photos in Galeri. The first photo automatically becomes the full-screen cover.
- Check the Persiapan card on the home page until everything is ticked.
- Click Terbitkan. The invitation can be opened right away through its link.
Filling in your invitation
- Mempelai (couple): names, photos, parents' names, and an opening message or verse. Without photos, the invitation shows an initials monogram.
- Acara (events): each event has a date, time, venue, address, and map link. Guests can tap a button to save it to Google Calendar.
- Kisah (story): a timeline of your love story (optional).
- Galeri (gallery): shown as a swipeable carousel that opens full screen. Use good-quality portrait photos.
- Info tamu (guest info): dress code, protocols, or other notes.
Music, live streaming, and digital envelope
Background music
In the Musik & live menu, choose a source: built-in music (11 choices including royalty-free classical pieces, with a preview button), your own MP3 link, or a song from YouTube or Spotify (played through their official players). Music starts when a guest taps Buka Undangan and can be turned off with the round button in the corner.
Live streaming
Paste the broadcast link so faraway guests can watch.
Digital envelope
In the Amplop digital menu, enter your bank account, QRIS, and the address for physical gifts. Guests can copy the account number from the invitation.
Sharing with guests
- Open the Bagikan menu. There you'll find the general link, the invitation QR, and a sample WhatsApp message.
- Add guests one by one or import them from a CSV.
- Each guest gets their own link in the form
?to=Nama&c=KODE. The guest's name automatically appears on the invitation cover. - Send it with the WhatsApp button in the guest list.
RSVP, wishes, and check-in
- RSVP: guests choose attending, not attending, or unsure, and the number of people. The summary is on the home page and in the RSVP menu.
- Wishes are saved permanently and don't disappear when the page is refreshed. Turn on Moderasi if you want to approve new wishes first; wishes can also be hidden one by one.
- Check-in: on the day of the event, open the check-in screen, then scan or type the guest's code. The Menunggu kedatangan and Tamu hadir lists update automatically.
- Statistics: visits over the past 7 days and how many guests opened the invitation.
- Guest data, RSVPs, and wishes can be exported to CSV.
Settings, address, and subscription
- Invitation address: 3 to 30 lowercase letters, numbers, or hyphens (for example
sarah-rafi). Changing the address makes the old link stop working, so set it before sharing. - RSVP & wishes can be turned off if you don't need them.
- Invitation password for private events: set a password in Settings, and guests enter it to open the invitation.
- Multiple invitations: each subscription covers one invitation, up to 6 invitations per account. Add more with Sewa in the Langganan menu.
- If your subscription ends, the invitation is automatically deactivated and comes back online once you renew. Finish your event before the subscription runs out.
FAQ
Guest's name doesn't show on the invitation?
?to=), not the general link.Music isn't playing?
Photos look small or cropped?
Changes not showing yet?
Website Builder
Build a business website at name.terasusaha.com: templates, block editor, product showcase, SEO, and orders.
Open the Website app →Quick start (5 steps)
Website Builder creates a business website at nama.terasusaha.com, no coding needed. One subscription = one website.
- Open Template and choose the one closest to your business.
- Open Pengaturan: enter your name, logo, WhatsApp, and address.
- Open Editor Situs: edit the text and photos of each block.
- Fill in Produk if you have a product showcase.
- Click Terbitkan situs. Your address goes live right away.
Using the Site Editor
Left: the list of blocks and the + Tambah blok button. Middle: the site preview (click a block to select it). Right: settings for the selected block and the Tema tab.
- Use ↑ ↓ to change the order, the copy icon to duplicate, and the trash can to delete.
- The eye icon hides a block without deleting it.
- The Desktop / Tablet / Phone buttons preview the layout.
Pages and menu
In Halaman you can add, duplicate, change the homepage, edit addresses, and hide pages from the menu. The Menu navigasi tab sets the menu order.
Products and the Order button
Products you add appear in the Produk (Etalase) block. The "Pesan" (Order) button opens WhatsApp with the product name. Import many products at once from a CSV (format: name;category;price).
Messages from the form
Messages from the contact form arrive in Pesan Masuk. Reply through WhatsApp, mark as done, or mark as spam. Export to CSV anytime.
SEO to appear on Google
Fill in the title (30–60 characters) and description (70–160 characters) for each page in SEO & Sosial. A Google preview is shown on the right. Register your site with Google Search Console after publishing.
Website address
Open Domain & Publikasi to change your site's address name (e.g. kopimaju.terasusaha.com). After changing it, click Publish again and tell your customers the new address.
Publishing and restoring versions
Drafts don't go live until you click Terbitkan. Every publish is saved; older versions can be restored from the Riwayat versi tab.
Maintenance mode
Turn it on in Pengaturan › Perawatan when you want to make big changes. Visitors see a "Sedang diperbarui" (Being updated) message.
Orders, promos, and reviews
Pesanan records orders from the Order button and tracks their status. Promo & Banner puts an announcement at the top of your site and creates coupons. Ulasan lets you moderate and reply to customer reviews.
Contacts, broadcasts, and backups
Kontak & Siaran stores your customer list and prepares WhatsApp messages for specific labels. Cadangan are created automatically (at most once a day when you open the app), can be made manually, and can be downloaded as JSON.
Common problems and FAQ
Changes don't show on the site.
The add page button doesn't work.
The address name I want is already taken.
kopimaju-bandung). A name that someone else has just chosen may be locked for up to 24 hours.Photos feel slow.
What happens to my site if I don't pay?
Account & Subscription
A general guide for all apps: signing up, logging in, switching apps, paying, and renewing.
Sign up, free trial, and activation
- Open the Sign up page and enter your business name, email, and password.
- Open the activation email (check your Spam folder) and click the link inside. The 7-day free trial for all apps starts when your account is activated.
- Log in on the Log in page. If you have more than one app, you choose which app to open.
During the free trial, all features are unlocked. The free trial is available once per app.
Switching between apps
- In each app's account menu there is a button to switch to another app without logging in again.
- One Teras Usaha account is used for all apps.
- A Teras Usaha account is separate from a Jual Aplikasi account: sign up and log in at terasusaha.com.
Paying and renewing
- Open Subscription, then choose the app and subscription length.
- The price is Rp20,000 per app per month or Rp200,000 per year. All features are unlocked, with no tiered plans.
- Pay with QRIS for the exact amount shown (including the unique code at the end of the number). Payments are verified automatically.
If your subscription runs out
The app is locked until you renew, but your data stays saved. Once you pay, everything is usable again. Websites in Website Builder and invitations stop being live while the subscription is expired.
Trying the demo
Each app has a demo page on the home page. The demo uses sample data and doesn't save anything to your real account.
Help
Send your question through the Contact page, WhatsApp 0815-1157-5723, or email terasusahacom@gmail.com. Include your business name and the app you use.
I forgot my password.
The activation email didn't arrive.
Who manages the account and payments?
Try another word, or contact us on WhatsApp.
This guide follows the current version of the app and may change as features are updated.