Sistem kasir berbasis Laravel + Inertia + React untuk transaksi penjualan, inventory audit, purchasing, finance, CRM, loyalty, dan observability operasional β dengan dukungan multi-warehouse, PPN, dan offline mode.
200+ GitHub stars β’ Open-source β’ MIT License
| POS Checkout | Dashboard | Stock Opname |
|---|---|---|
![]() |
![]() |
![]() |
| Sales Report | Receivables | Multi-Warehouse |
![]() |
![]() |
![]() |
πΈ Lihat galeri lengkap (33 screenshot)
- Pencarian produk via barcode / keyword
- Barcode scanner via kamera (PWA)
- Cart multi-item dengan hold/resume
- Checkout multi-metode: tunai, transfer bank, Midtrans, Xendit, pay later
- Multi-satuan produk (pcs, box, kg, karton) dengan konversi stok otomatis
- Multi-price list: harga berbeda per kelompok pelanggan
- Promo engine: diskon, qty break, bundle, buy-x-get-y
- Diskon dengan approval workflow
- PPN 11% (exclusive/inclusive)
- Thermal printer support (WebUSB)
- Offline mode (queue transaksi saat offline, sync saat online)
- Manajemen produk + kategori + barcode
- Stok terpisah per gudang/cabang
- Transfer stok antar warehouse (draft β send β receive)
- Stock opname per warehouse
- Stock mutation history
- Batch/expiry date tracking (FEFO)
- Composite products / kits
- Reorder point + auto-PO suggestion
- Low stock notification
- Purchase Order (draft β ordered β partial β completed)
- Goods Receiving (dengan input batch)
- Supplier Returns
- Payables (hutang supplier) dengan aging
- Receivables (piutang pelanggan) dengan partial payment
- Aging analysis + collection notes
- PPN/PPh tax management
- Customer portal: lihat invoice + bayar piutang online
- Customer management + wilayah Indonesia
- Member tiers (regular, silver, gold, platinum)
- Poin loyalty (earn/redeem)
- Voucher customer
- Customer segments (manual & auto)
- Campaign automation (reminder, promo broadcast)
- WhatsApp Gateway β kirim pesan otomatis via whatsapp-web.js (QR scan, session persistent)
- Sales report + filter + summary
- Profit report + margin analysis
- Advanced sales insights (hourly, cashier performance, repeat customer)
- PDF invoice, receipt (80mm/58mm), shipping label
- PDF receivable/payable
- Export ke Excel (produk, customer, transaksi)
- Full RBAC (users, roles, permissions)
- Audit log (before/after snapshot)
- Import produk & customer dari Excel
- App Versioning β versi aplikasi terpusat (
APP_VERSION), tampil di sidebar + POS navbar
- WhatsApp Gateway β terhubung via Node.js service (
whatsapp-service/) - Payment Gateways β Midtrans, Xendit
git clone https://github.com/aryadwiputra/point-of-sales.git
cd point-of-sales
cp .env.example .env
composer install && npm install
php artisan key:generate
php artisan migrate --seed
php artisan storage:link
# Dev servers β jalankan semua di terminal terpisah
npm run dev # Vite HMR
php artisan serve # Laravel
# WhatsApp Gateway (opsional) β untuk kirim WA otomatis
cd whatsapp-service
npm install && npm start- Admin:
arya@gmail.com/password - Kasir:
cashier@gmail.com/password
| Dokumen | Isi |
|---|---|
docs/getting-started.md |
Setup lengkap |
docs/configuration.md |
Konfigurasi environment, payment, pajak, printer, WhatsApp |
docs/architecture-overview.md |
Arsitektur, middleware, service layer, Node service |
docs/feature-index.md |
Indeks semua modul (44 fitur) |
Dikasir menyediakan REST API untuk integrasi mobile app / pihak ketiga. Dokumentasi interaktif otomatis (Scramble) tersedia di:
- UI docs:
/docs/apiβ coba endpoint langsung dari browser (Try It) - OpenAPI spec:
/docs/api.jsonβ untuk generate client (Postman, OpenAPI Generator, Swagger Codegen)
Semua endpoint (kecuali auth/login, auth/register, webhooks) memerlukan Bearer token:
# 1. Login β dapat token
curl -X POST https://dikasir.web.id/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@example.com","password":"password"}'
# β {"token": "1|abc123...", "user": {...}}
# 2. Panggil API dengan token
curl https://dikasir.web.id/api/v1/products \
-H "Authorization: Bearer 1|abc123..."Modul yang tersedia (/api/v1/):
| Modul | Endpoint | Keterangan |
|---|---|---|
| Auth | auth/login, auth/logout, auth/me, auth/register |
Token-based (Sanctum) |
| Produk | products |
CRUD + search + kategori |
| Pelanggan | customers |
CRUD + loyalty member |
| Kategori | categories |
CRUD |
| Gudang | warehouses |
CRUD (multi-warehouse) |
| Supplier | suppliers |
CRUD |
| POS | pos/shift, pos/products, pos/cart, pos/hold, pos/checkout, pos/transactions |
Alur kasir lengkap (mobile) |
Base URL: https://dikasir.web.id/api/v1 (dev: http://localhost:8000/api/v1)
- POS & Transaksi, Sales Return, Cashier Shift
- Inventory: produk, stock opname, mutation, warehouse, stock transfer, batch, composite
- Purchasing: PO, goods receiving, supplier return, payables
- Finance: receivables, PPN
- Pricing: pricing rules, price list, loyalty, vouchers
- CRM: member, segments, campaigns, WhatsApp Gateway
- Reports: sales, profit, insights, dokumen PDF
- Tools: import/export, mobile POS, thermal printer, offline mode
- Permission cache stale setelah seeding β logout lalu login lagi
- Webhook Midtrans/Xendit tidak bekerja β pastikan
APP_URLpublic, bukanlocalhost - Gambar produk tidak tampil β jalankan
php artisan storage:link - Route error 500 β jalankan
php artisan migrateuntuk modul baru - Test gagal karena PPN β pastikan
tax_rate=0di test Product::create - Vite tidak jalan β pastikan
npm run devberjalan, jangan hanyaphp artisan serve - WhatsApp QR tidak muncul β pastikan
whatsapp-service/sudah jalan (npm start) - WhatsApp terputus β klik "Hubungkan Ulang" di Settings > WhatsApp, scan ulang QR
- Branch dari
development:git checkout -b feature/nama-fitur development - Buat PR ke
development - PR ke
mainhanya daridevelopmentvia branching release
Pastikan php artisan test lulus sebelum PR.
MIT License





