Versi: 1.0 — Draft
Tanggal: 9 Maret 2026
Status: In Review
FutsalKu adalah platform berbasis web untuk manajemen operasional lapangan futsal. Platform ini menghubungkan dua sisi: customer yang ingin memesan lapangan, dan admin (pengelola lapangan) yang ingin mengelola jadwal, booking, dan keuangan — semuanya dalam satu sistem terpusat.
Di sisi customer, FutsalKu menggantikan proses booking manual via telepon atau WhatsApp. Customer bisa melihat ketersediaan lapangan secara real-time, memesan, dan membayar secara online kapan saja.
Di sisi admin, FutsalKu menggantikan pencatatan manual dan spreadsheet. Admin mendapat visibilitas penuh atas jadwal lapangan, riwayat booking, dan performa keuangan melalui satu dashboard.
| Sisi | Masalah | Dampak |
|---|---|---|
| Customer | Booking hanya bisa via telepon/WA di jam kerja | Customer tidak bisa pesan kapanpun mereka mau |
| Customer | Tidak ada konfirmasi instan | Customer tidak yakin apakah lapangan benar-benar terpesan |
| Customer | Tidak ada riwayat booking | Customer sulit melacak booking lama atau bukti pembayaran |
| Admin | Pencatatan booking manual | Rawan double booking dan jadwal bentrok |
| Admin | Tidak ada laporan keuangan terstruktur | Admin tidak tahu pendapatan harian, utilisasi lapangan, atau tren bisnis |
| Admin | Proses refund tidak terstandar | Sengketa pembatalan sulit diselesaikan tanpa kebijakan yang jelas |
Untuk menjaga fokus, fitur-fitur berikut tidak termasuk dalam fase pertama:
- Aplikasi native Android dan iOS
- Fitur turnamen atau kompetisi
- Program loyalty / reward points untuk customer
- Booking recurring otomatis (misal: setiap Senin jam 7 malam)
- Marketplace sewa perlengkapan olahraga
Sistem memiliki tiga role yang beroperasi di dua level berbeda:
| Role | Level | Deskripsi Singkat |
|---|---|---|
| Customer | Publik | Pengguna yang mencari dan memesan lapangan futsal |
| Admin | Venue | Pengelola/pemilik lapangan. Akses penuh ke manajemen venue mereka |
| Super Admin | Platform | Tim internal FutsalKu. Mengelola konfigurasi global dan semua admin |
Customer adalah pengguna akhir yang menggunakan platform untuk menemukan dan memesan lapangan.
Bisa melakukan:
- Melihat daftar venue dan lapangan tanpa perlu login
- Mendaftar akun dan login
- Melakukan booking dan pembayaran online
- Melihat riwayat booking sendiri
- Membatalkan booking sesuai kebijakan yang berlaku
- Menerima notifikasi booking, pembayaran, dan refund
- Memberikan ulasan setelah sesi selesai
Tidak bisa melakukan:
- Melihat booking orang lain
- Mengakses panel admin
- Mengubah jadwal atau harga lapangan
Admin adalah pemilik atau pengelola usaha lapangan futsal. Mereka adalah pengguna utama sisi manajemen platform.
Bisa melakukan:
- Mengelola data venue: informasi, foto, jam operasional, fasilitas
- Menambah dan mengatur lapangan (field) beserta harganya
- Melihat seluruh jadwal dan booking di venue mereka melalui kalender visual
- Membuat booking manual (untuk pelanggan walk-in atau telepon)
- Membatalkan booking dan memproses refund
- Mengatur penutupan lapangan pada tanggal tertentu
- Mengakses dashboard keuangan dan laporan utilisasi
- Mengatur kebijakan pembatalan yang berlaku di venue mereka
Tidak bisa melakukan:
- Mengakses data venue atau booking admin lain
- Mengubah konfigurasi platform secara global
- Mengubah besaran biaya admin platform
Super Admin adalah tim internal FutsalKu yang mengelola platform secara keseluruhan. Tidak ikut campur dalam operasional harian setiap venue.
Bisa melakukan:
- Melihat daftar semua venue dan admin yang terdaftar
- Mengaktifkan atau menonaktifkan akun admin
- Mengatur besaran biaya admin (platform fee) secara global
- Melihat statistik platform secara keseluruhan
- Mengakses konfigurasi global sistem
Tidak bisa / tidak perlu melakukan:
- Mengakses detail operasional internal masing-masing venue (booking, keuangan, pelanggan)
Customer mendaftar dengan mengisi nama lengkap, email, nomor telepon, dan password. Setelah submit, sistem mengirim OTP via SMS ke nomor telepon yang didaftarkan. OTP berlaku 5 menit; jika tidak diterima, customer bisa request ulang setelah 60 detik.
Akun baru aktif begitu OTP berhasil diverifikasi. Jika email atau nomor telepon sudah terdaftar sebelumnya, sistem menampilkan pesan error yang meminta customer untuk login atau mereset password.
Customer bisa login menggunakan email atau nomor telepon, dikombinasikan dengan password. Tersedia opsi “Remember Me” yang menjaga sesi tetap aktif selama 30 hari.
Jika lupa password, customer bisa request link reset via email. Link tersebut berlaku selama 1 jam. Setelah password berhasil diganti, semua sesi aktif lain secara otomatis di-logout.
Setelah 5 kali percobaan login yang gagal berturut-turut, akun dikunci sementara selama 15 menit untuk mencegah brute force.
Customer bisa mengedit nama, email, nomor telepon, dan foto profil. Perubahan pada email atau nomor telepon memerlukan verifikasi OTP ke kontak baru — untuk memastikan kontak baru tersebut memang milik customer yang bersangkutan.
Halaman utama menyambut customer dengan search bar yang memungkinkan pencarian berdasarkan lokasi, tanggal, dan rentang waktu. Di bawahnya ditampilkan daftar venue dan lapangan yang populer atau direkomendasikan, dalam format card yang menampilkan foto utama, nama, lokasi, harga mulai dari, dan rating.
Customer tidak perlu login untuk melihat halaman ini dan menelusuri daftar lapangan.
Setelah melakukan pencarian, customer mendapat daftar hasil yang hanya menampilkan lapangan yang tersedia pada tanggal dan waktu yang dipilih. Lapangan yang sudah terisi otomatis tidak muncul.
Customer bisa mempersempit hasil dengan filter tambahan:
- Jenis lapangan: indoor atau outdoor
- Jenis permukaan: vinyl, parquet, rumput sintetis, beton
- Rentang harga per jam
- Fasilitas yang tersedia: parkir, toilet, kantin, mushola, WiFi, ruang ganti
- Rating minimum
Hasil bisa diurutkan berdasarkan relevansi, harga termurah, atau rating tertinggi.
Halaman ini menampilkan semua informasi yang customer butuhkan sebelum memutuskan untuk booking:
- Galeri foto venue
- Deskripsi, alamat lengkap, nomor telepon, email
- Jam operasional per hari
- Daftar fasilitas yang tersedia
- Peta lokasi
- Daftar lapangan yang ada di venue ini, masing-masing dengan foto, spesifikasi, dan harga
- Ulasan dan rating dari customer sebelumnya
Setelah customer memilih sebuah lapangan, mereka masuk ke halaman pilih jadwal. Di sini tersedia kalender untuk memilih tanggal, dan setelah tanggal dipilih, muncul time grid yang menampilkan ketersediaan slot per jam.
Setiap slot memiliki tampilan visual yang berbeda:
- Tersedia — bisa dipilih
- Terisi — sudah ada booking, tidak bisa dipilih
- Tidak tersedia — di luar jam operasional atau ditutup admin
Customer bisa memilih beberapa slot berurutan untuk memesan lebih dari 1 jam. Saat slot dipilih, sistem langsung menghitung dan menampilkan rincian harga:
Harga per jam × Durasi = Subtotal
Rp 80.000 × 2 jam Rp 160.000
Biaya admin Rp 5.000
─────────
Total Rp 165.000
Ketersediaan slot diperbarui secara real-time — jika ada orang lain yang sedang memesan slot yang sama, status slot berubah tanpa perlu customer me-refresh halaman.
Ketika customer menekan tombol “Booking Sekarang”, sistem mengecek apakah mereka sudah login. Jika belum, customer diarahkan ke halaman login dan setelah berhasil login, secara otomatis kembali ke halaman yang sama.
Setelah login, customer masuk ke halaman konfirmasi yang menampilkan ringkasan lengkap: detail lapangan, tanggal dan waktu, durasi, dan rincian harga. Terdapat juga kolom opsional untuk menambahkan catatan ke admin (misalnya: “mohon siapkan bola” atau “kami datang 5 menit lebih awal”), maksimal 200 karakter.
Setelah customer menekan “Konfirmasi & Lanjut Bayar”, slot langsung dikunci sementara selama 10 menit. Selama periode ini, slot tersebut tidak bisa dipesan oleh orang lain. Jika pembayaran tidak diselesaikan dalam 10 menit, kunci dilepas dan booking otomatis dibatalkan — slot tersedia kembali untuk siapapun.
Customer bisa membayar melalui berbagai metode:
- Virtual Account: BCA, Mandiri, BNI, BRI
- E-Wallet: GoPay, OVO, DANA, ShopeePay
- QRIS
- Kartu Kredit/Debit: Visa, Mastercard
Layar pembayaran menampilkan instruksi yang jelas sesuai metode yang dipilih, beserta countdown timer 10 menit yang berjalan. Konfirmasi pembayaran diproses secara otomatis — customer tidak perlu upload bukti transfer manual.
Jika pembayaran berhasil: Status booking berubah menjadi confirmed, notifikasi dikirim via push notification dan email, dan customer diarahkan ke halaman sukses.
Jika pembayaran gagal atau timer habis: Booking dibatalkan, tidak ada dana yang terpotong, dan customer bisa memulai proses booking ulang dari awal.
Setiap booking yang berhasil mendapat booking code unik dengan format BK + tanggal + nomor urut (contoh: BK2026030900042). Halaman sukses menampilkan booking code ini beserta QR code yang bisa digunakan sebagai bukti saat tiba di lapangan.
Email konfirmasi dikirim berisi detail lengkap booking, booking code, QR code, dan informasi lokasi venue. Customer juga menerima SMS konfirmasi singkat.
Semua booking customer — baik yang aktif maupun yang sudah selesai — tersimpan dan bisa dilihat di halaman ini. Customer bisa memfilter berdasarkan status (menunggu pembayaran, terkonfirmasi, selesai, dibatalkan) dan periode waktu.
Setiap item menampilkan booking code, nama lapangan, tanggal dan waktu, status, dan total bayar. Klik untuk melihat detail lengkap.
Customer bisa membatalkan booking selama statusnya masih confirmed dan waktu bermain belum berlalu. Sebelum konfirmasi pembatalan, sistem menampilkan kebijakan refund yang berlaku dan estimasi jumlah dana yang akan dikembalikan.
Kebijakan refund default (bisa berbeda per venue sesuai pengaturan admin):
| Waktu Pembatalan | Refund |
|---|---|
| Lebih dari 24 jam sebelum waktu main | 100% |
| 12 – 24 jam sebelum waktu main | 50% |
| Kurang dari 12 jam sebelum waktu main | 0% |
Setelah customer mengkonfirmasi pembatalan, status booking berubah menjadi cancelled dan proses refund dimulai secara otomatis sesuai kebijakan. Customer menerima notifikasi konfirmasi pembatalan beserta estimasi waktu pengembalian dana (1–3 hari kerja). Status refund bisa dipantau langsung dari halaman detail booking.
Setelah sesi bermain selesai (status booking berubah menjadi completed), customer menerima notifikasi yang mengundang mereka untuk memberikan ulasan. Form ulasan terdiri dari rating bintang 1–5 dan komentar teks opsional (maks 500 karakter).
Setiap booking hanya bisa memberikan satu ulasan. Ulasan masih bisa diedit dalam 24 jam setelah dikirim. Ulasan yang sudah dikirim tampil di halaman detail lapangan untuk membantu calon customer lain.
Customer menerima notifikasi melalui tiga saluran: in-app (bell icon di navbar), email, dan SMS. Customer bisa mengatur preferensi notifikasi mana yang ingin diaktifkan melalui pengaturan akun.
Jenis notifikasi yang dikirim:
| Jenis | In-App | SMS | |
|---|---|---|---|
| Booking terkonfirmasi | ✅ | ✅ | ✅ |
| Pembayaran berhasil | ✅ | ✅ | — |
| Pembayaran gagal | ✅ | ✅ | — |
| Reminder H-1 sebelum main | ✅ | ✅ | ✅ |
| Reminder 1 jam sebelum main | ✅ | — | ✅ |
| Konfirmasi pembatalan | ✅ | ✅ | ✅ |
| Update status refund | ✅ | ✅ | — |
Admin login menggunakan email dan password. Berbeda dengan customer, admin wajib mengaktifkan Two-Factor Authentication (2FA) — bisa melalui aplikasi authenticator (Google Authenticator, Authy) atau SMS.
Setelah 3 kali percobaan login yang gagal, akun admin dikunci dan hanya bisa di-unlock oleh Super Admin. Setiap aktivitas login admin dicatat: siapa, kapan, dari perangkat mana, dan dari IP apa.
Semua aksi yang dilakukan admin di dalam sistem tercatat dalam audit log yang tidak bisa dihapus — siapa yang melakukan, apa yang diubah, dan kapan.
Dashboard adalah halaman pertama yang dilihat admin setelah login. Tujuannya: memberikan gambaran lengkap kondisi operasional dan keuangan venue dalam satu pandangan.
Bagian atas dashboard menampilkan kartu-kartu metrik yang diperbarui secara real-time:
- Pendapatan Hari Ini — total revenue dari booking confirmed hari ini, dengan perbandingan persentase vs hari sebelumnya
- Booking Hari Ini — jumlah booking confirmed untuk hari ini
- Pending Pembayaran — jumlah booking yang masih menunggu pembayaran dari customer
- Utilisasi Hari Ini — persentase slot waktu yang sudah terisi dibanding total slot tersedia hari ini
- Refund Pending — jumlah refund yang menunggu tindak lanjut admin
- Grafik Pendapatan — bisa di-toggle antara tampilan harian, mingguan, atau bulanan
- Grafik Jumlah Booking — jumlah booking per hari dalam bulan berjalan
- Utilisasi per Lapangan — perbandingan tingkat kepadatan antar lapangan
- Peak Hours — heatmap yang menunjukkan jam-jam dan hari-hari paling ramai dalam seminggu
- Distribusi Metode Pembayaran — perbandingan metode yang paling sering digunakan customer
- Booking Terbaru — 10 booking terakhir yang masuk, diperbarui real-time
- Jadwal Hari Ini — daftar sesi yang akan berlangsung dalam beberapa jam ke depan
- Refund yang Menunggu — daftar refund yang perlu segera ditindaklanjuti
Semua data di dashboard bisa difilter berdasarkan rentang tanggal dan per lapangan tertentu.
Admin mengelola informasi publik venue mereka yang akan terlihat oleh customer. Informasi yang bisa dikelola:
- Nama dan deskripsi venue
- Alamat lengkap (dengan peta picker untuk menentukan koordinat tepat)
- Nomor telepon dan email venue
- Foto-foto venue (maks 10 foto, maks 5MB per foto)
- Daftar fasilitas yang tersedia (parkir, toilet, mushola, kantin, WiFi, ruang ganti, dll.)
- Jam operasional per hari — termasuk kemampuan untuk menandai hari tertentu sebagai “tutup”
Admin bisa mengubah status venue secara keseluruhan:
| Status | Efek |
|---|---|
| Aktif | Venue muncul di pencarian customer, booking baru bisa dibuat |
| Tidak Aktif | Venue tidak muncul di pencarian, booking baru tidak bisa dibuat. Booking yang sudah confirmed tetap valid |
| Maintenance | Sama dengan Tidak Aktif, tapi dengan label berbeda yang lebih informatif untuk customer |
Sebelum status diubah ke non-aktif, sistem menampilkan dialog konfirmasi yang mengingatkan admin tentang dampaknya.
Satu venue bisa memiliki beberapa lapangan. Untuk setiap lapangan, admin mengisi:
- Nama lapangan (misal: Lapangan A, Lapangan VIP, Lapangan Indoor 1)
- Jenis: indoor atau outdoor
- Jenis permukaan: vinyl, parquet, rumput sintetis, atau beton
- Kapasitas (jumlah pemain yang bisa bermain)
- Deskripsi singkat
- Foto lapangan (maks 5 foto)
Setiap lapangan memiliki statusnya sendiri, terpisah dari status venue:
| Status | Arti | Bisa Dipesan? |
|---|---|---|
| Available | Lapangan siap beroperasi | Ya |
| Maintenance | Sedang diperbaiki atau direnovasi | Tidak |
| Closed | Ditutup secara permanen atau jangka panjang | Tidak |
Harga lapangan bisa diatur dengan tingkat fleksibilitas yang cukup untuk mencerminkan dinamika permintaan nyata:
Berdasarkan tipe hari:
- Hari kerja (Senin–Jumat)
- Akhir pekan (Sabtu–Minggu)
- Hari libur nasional
Berdasarkan slot waktu:
- Admin bisa mendefinisikan rentang jam dengan harga berbeda. Contoh: pagi (06.00–12.00), siang (12.00–18.00), malam (18.00–24.00) bisa memiliki harga yang berbeda.
Admin bisa melihat preview harga yang sudah diatur dalam bentuk tabel, untuk memastikan tidak ada rentang jam yang kosong atau overlap.
Fitur ini digunakan untuk menutup lapangan atau seluruh venue pada tanggal-tanggal tertentu di luar jam operasional reguler — misalnya libur Lebaran, renovasi mendadak, atau acara privat.
Admin bisa menentukan:
- Penutupan untuk seluruh venue atau hanya lapangan tertentu
- Apakah penutupan berlaku hari penuh atau hanya rentang jam tertentu
- Tanggal penutupan (bisa single date atau range tanggal)
Jika ada booking yang sudah confirmed dan terdampak oleh penutupan yang baru dibuat, sistem akan memperingatkan admin dan admin wajib memproses pembatalan beserta refund untuk booking-booking tersebut sebelum penutupan disimpan.
Admin bisa melihat seluruh jadwal lapangan dalam format kalender visual. Tersedia tiga mode tampilan: harian, mingguan, dan bulanan.
Pada tampilan harian, setiap lapangan tampil sebagai kolom, dengan slot-slot waktu sebagai baris. Setiap booking tampil sebagai blok berwarna di atas kalender, dengan kode warna:
- 🟩 Hijau — Booking confirmed
- 🟡 Kuning — Pending pembayaran
- 🔴 Merah — Dibatalkan
- ⬜ Abu-abu — Maintenance / tidak tersedia
- Kosong — Slot tersedia
Admin bisa mengklik sebuah booking untuk melihat detailnya, atau mengklik slot kosong untuk langsung membuat booking manual.
Selain booking yang masuk dari customer, admin bisa membuat booking langsung dari sistem — untuk melayani customer yang datang langsung ke venue, memesan via telepon, atau dalam situasi khusus lainnya.
Proses booking manual:
- Pilih lapangan, tanggal, dan rentang waktu
- Cari customer berdasarkan nama, email, atau nomor telepon — jika sudah pernah booking sebelumnya, data langsung terisi otomatis. Jika belum, bisa input data baru.
- Tambahkan catatan internal jika diperlukan
- Tentukan metode pembayaran: digital (tetap melalui payment gateway), tunai, atau gratis (complimentary)
Booking manual yang dipilih sebagai “tunai” atau “complimentary” bisa langsung berstatus confirmed tanpa melalui proses payment gateway. Notifikasi konfirmasi tetap dikirim ke customer.
Admin memiliki akses ke seluruh riwayat booking di venue mereka dalam satu tabel. Tabel ini menampilkan: booking code, nama customer, lapangan yang dipesan, tanggal & waktu, total bayar, metode pembayaran, dan status saat ini.
Admin bisa:
- Filter berdasarkan status, lapangan, tanggal, atau metode pembayaran
- Cari berdasarkan booking code, nama, email, atau nomor telepon customer
- Urutkan berdasarkan kolom manapun
- Export ke format Excel atau CSV
Halaman detail booking menampilkan informasi lengkap: data customer, detail lapangan dan waktu, rincian pembayaran (metode, kode transaksi dari payment gateway, waktu pembayaran), catatan dari customer, catatan internal admin, dan riwayat perubahan status booking.
Aksi yang tersedia tergantung pada status booking saat ini:
| Status Booking | Aksi yang Tersedia |
|---|---|
| Pending Payment | Batalkan booking |
| Confirmed | Batalkan booking + proses refund |
| Completed | Lihat ulasan (jika ada) |
| Cancelled | Lihat detail pembatalan dan refund |
Admin bisa membatalkan booking yang berstatus confirmed. Sebelum konfirmasi, admin mengisi form pembatalan:
- Alasan pembatalan — dropdown dengan pilihan umum (penutupan mendadak, masalah teknis lapangan, dll.) ditambah kolom teks bebas
- Persentase refund — pilihan 100%, 50%, 0%, atau jumlah custom
- Catatan untuk customer — pesan yang akan ikut terkirim dalam notifikasi pembatalan ke customer
Sistem menampilkan preview total jumlah yang akan di-refund sebelum admin menekan konfirmasi. Setelah dikonfirmasi:
- Status booking berubah menjadi cancelled
- Record refund dibuat di sistem
- Notifikasi pembatalan beserta informasi refund dikirim ke customer
Untuk booking yang dibayar secara digital, proses refund ke payment gateway dilakukan secara otomatis. Untuk booking yang dibayar tunai atau yang memerlukan transfer manual, admin menandai refund sebagai “Refund Manual” dan mencatat nomor referensi transfer setelah selesai dilakukan.
Terpisah dari daftar booking, admin memiliki halaman khusus untuk memantau status semua refund. Setiap refund memiliki status yang mengikuti alur:
Requested → Approved → Processing → Completed
↓
Rejected
Admin bisa memfilter berdasarkan status, tanggal, atau lapangan. Setiap perubahan status refund secara otomatis mengirimkan notifikasi ke customer yang bersangkutan.
Refund yang masih berstatus Requested atau Processing juga muncul di widget “Refund Pending” di dashboard utama agar tidak terlewat.
Laporan keuangan bisa diakses untuk periode harian, mingguan, bulanan, tahunan, atau rentang tanggal custom. Laporan menampilkan:
- Gross Revenue — total pendapatan kotor sebelum biaya platform
- Biaya Admin (Platform Fee) — potongan platform
- Net Revenue — pendapatan bersih yang diterima venue
- Total Refund — total dana yang dikembalikan ke customer
- Jumlah Transaksi — breakdown antara berhasil, gagal, dan expired
Jika venue memiliki lebih dari satu lapangan, laporan bisa difilter per lapangan untuk melihat kontribusi masing-masing.
Laporan bisa di-export ke format Excel (.xlsx), CSV, atau PDF.
Laporan utilisasi membantu admin memahami pola penggunaan lapangan mereka:
- Persentase slot terisi vs kosong per periode
- Peak hours — jam dan hari paling ramai
- Peak days — hari dalam seminggu dengan utilisasi tertinggi
- Perbandingan utilisasi antar lapangan
Informasi ini berguna untuk keputusan operasional seperti penyesuaian harga di jam tertentu, atau pertimbangan membuka lapangan tambahan.
Admin bisa mengatur kebijakan refund yang berlaku di venue mereka. Kebijakan ini yang akan ditampilkan ke customer saat mereka melihat halaman detail lapangan dan saat proses pembatalan.
Admin menentukan:
- Batas waktu untuk tiap kategori refund (dalam jam sebelum waktu main)
- Persentase refund untuk tiap kategori
Contoh konfigurasi yang bisa diatur admin:
| Waktu Pembatalan | Persentase Refund |
|---|---|
| > 48 jam sebelum main | 100% |
| 24 – 48 jam sebelum main | 75% |
| < 24 jam sebelum main | 0% |
Jika admin tidak mengubah pengaturan ini, sistem menggunakan kebijakan default platform yang ditetapkan oleh Super Admin.
Setiap booking melewati serangkaian status yang merepresentasikan posisinya dalam siklus hidup rental:
[Pending Payment] ──── (bayar berhasil) ──── [Confirmed]
│ │
(timeout/gagal) (waktu main selesai)
│ │
[Cancelled] ◄──── (dibatalkan) ───── [Completed]
Pending Payment Booking sudah dibuat dan slot sudah dikunci, tapi customer belum menyelesaikan pembayaran. Status ini berlaku maksimal 10 menit. Jika pembayaran tidak selesai dalam waktu tersebut, booking otomatis dibatalkan dan slot dilepas kembali.
Confirmed Pembayaran berhasil diverifikasi. Slot tersebut resmi milik customer. Notifikasi konfirmasi dikirim ke customer. Dari status ini, booking bisa dibatalkan (oleh customer atau admin) atau berlanjut hingga waktu bermain selesai.
Completed Waktu bermain telah berlalu dan tidak ada pembatalan. Status berubah otomatis oleh sistem. Customer akan mendapat undangan untuk memberikan ulasan.
Cancelled Booking dibatalkan, baik oleh customer maupun oleh admin. Jika ada refund, prosesnya berjalan terpisah di sistem refund.
Refunded Refund untuk booking yang dibatalkan telah selesai diproses dan dana sudah dikembalikan ke customer.
Untuk mencegah double booking, ketika customer memulai proses checkout, slot yang dipilih langsung dikunci selama 10 menit. Slot yang sedang dikunci tidak bisa dipilih oleh customer lain. Jika pembayaran tidak selesai dalam 10 menit, kunci otomatis dilepas.
Pembatalan booking tidak menghapus data booking dari sistem. Semua booking yang pernah ada — baik yang completed maupun yang cancelled — tetap tersimpan dan bisa dilihat oleh admin maupun customer di riwayat masing-masing. Ini penting untuk keperluan audit, sengketa, dan pelaporan keuangan.
Kebijakan refund yang berlaku di sebuah venue selalu ditampilkan secara eksplisit di dua titik: di halaman detail lapangan (sebelum customer booking) dan di halaman konfirmasi pembatalan (saat customer ingin membatalkan). Customer tidak pernah mengalami kejutan refund.
Semua aksi yang dilakukan admin — termasuk pembatalan booking, perubahan harga, penutupan lapangan, dan pemrosesan refund — tercatat secara permanen dalam audit log beserta identitas admin yang melakukan dan timestamp-nya. Log ini tidak bisa dihapus atau dimodifikasi.