Blog · Terbit
Menerima pembayaran toko top up game dan voucher: ID pemain yang dicek sebelum ditagih, top up yang dikirim setelah Dibayar, dan pengiriman otomatis yang tidak mengisi dua kali
Toko top up game menjual barang yang tidak bisa ditarik kembali. Diamond yang sudah masuk ke akun pemain tidak bisa dibatalkan, dan saldo di pemasok sudah terpakai saat itu juga. Karena itu urutannya tidak boleh terbalik: ID dan server pemain dicocokkan lebih dulu, tagihan dibuat dengan nominal final, top up baru dikirim setelah status Dibayar, dan setiap pembayaran hanya boleh memicu satu pengiriman. Untuk paket sampai Rp 100.000, biaya QRIS-nya Rp 500 per pembayaran, apa pun nominalnya.
ID pemain dicek sebelum tagihan dibuat, bukan sesudahnya
Kesalahan yang paling mahal di toko top up bukan pembayaran palsu, tetapi ID yang salah ketik. Pembayaran QRIS dan Virtual Account yang sudah berhasil tidak bisa di-refund lewat Kasera Pay. Kalau penjual memutuskan mengganti, uangnya ditransfer dari rekening sendiri, biaya transaksinya tidak kembali, dan saldo pemasok yang terlanjur terpakai juga hilang. Satu salah ketik pada paket Rp 50.000 bisa menghapus untung dari puluhan pesanan.
Yang bisa dilakukan sebelum tagihan dibuat:
- Minta ID dan server (atau zona) dalam satu pesan teks, bukan tangkapan layar yang harus diketik ulang.
- Kalau pemasok menyediakan pengecekan nama akun, jalankan dan kirim nama yang muncul ke pembeli untuk dikonfirmasi. Di toko web, tampilkan nama itu sebelum tombol bayar.
- Tulis aturannya di pesan sebelum tautan dikirim: top up dikirim ke ID yang sudah dikonfirmasi, dan ID yang salah tidak diganti.
Jualan lewat WhatsApp: satu tagihan per pesanan
Penjual tanpa website membuat permintaan pembayaran dari dashboard atau aplikasi Android untuk setiap pesanan: isi Nominal, pilih QRIS di Metode, dan isi Keterangan dengan paket dan ID pemain, misalnya 86 diamond, ID 12345678 (2011). Tautannya dikirim ke pembeli, dan tagihan dari dashboard berlaku 60 menit. Langkahnya dirinci di panduan menerima pembayaran tanpa coding.
Keterangan itulah yang membuat pekerjaan berikutnya mekanis. Saat status berubah menjadi Dibayar, penjual membaca ID dari tagihan itu sendiri, bukan dari riwayat chat yang sudah bergulir puluhan pesan, lalu mengirim top up dari aplikasi pemasok. Satu pembeli yang memesan tiga kali untuk tiga akun mendapat tiga tagihan, bukan satu tagihan gabungan, sehingga setiap pembayaran menunjuk tepat satu ID.
Kalau biaya ingin ditanggung pembeli, centang Terima utuh di formulir. Nominal yang diketik menjadi yang diterima penjual, dan pembeli melihat total yang lebih besar sebelum membayar: tagihan Terima utuh Rp 10.000 menjadi Rp 10.500 bagi pembeli. Bukti yang dipegang tetap status di dashboard; pola pemalsuan bukti yang biasa dipakai dibahas di tulisan tentang bukti transfer palsu.
Toko web otomatis: tiga penjaga agar top up tidak terkirim dua kali
Toko yang mengirim top up otomatis membuat transaksi lewat API saat pembeli menekan bayar, menunggu webhook payment.paid, lalu memanggil API pemasok. Setiap langkah itu bisa terulang: pembeli menekan tombol dua kali, koneksi putus lalu dicoba lagi, dan webhook dikirim at-least-once sehingga event yang sama bisa tiba lebih dari sekali. Pengulangan di dua langkah pertama hanya mengganggu. Pengulangan di langkah ketiga menghabiskan saldo pemasok.
- Satu Idempotency-Key per pesanan. Key dibuat sekali saat pesanan dibuat, disimpan di baris pesanan, dan dikirim ulang di setiap percobaan create. Nomor pesanan di
external_idtidak mencegah duplikat; hanya header itu yang mencegahnya. Alasannya dibahas di tulisan tentang idempotency untuk pembayaran. - Dedupe id event sebelum pemasok dipanggil. Simpan
idevent dengan primary key di transaksi database yang sama dengan perubahan status pesanan, dan panggil pemasok hanya kalau barisnya baru. Cocokkan jugaamountdi event dengan total pesanan. Bentuk kodenya ada di dokumentasi webhook. - Nomor pesanan sebagai referensi di pemasok. Kalau API pemasok menerima referensi unik per transaksi, kirim nomor pesanan yang sama. Pemanggilan ulang setelah timeout lalu ditolak pemasok sebagai duplikat, bukan diproses sebagai pesanan kedua.
Untuk paket kecil, kirim payment_methods: ["qris"] saat create agar pembeli langsung diarahkan ke QR. Status pesanan di toko berpindah ke lunas hanya dari webhook yang tanda tangannya sah, atau dari pembacaan status transaksi di server, tidak pernah dari halaman kembali setelah membayar.
Pembayaran yang masuk setelah tagihan kedaluwarsa
Tagihan yang kedaluwarsa masih bisa dibayar kalau QR-nya sudah terlanjur dipindai. Pembayaran seperti itu tetap dihitung, statusnya berubah menjadi berhasil, dan webhook payment.paid tetap dikirim. Toko yang membatalkan pesanan saat menerima payment.expired harus bisa menghidupkannya kembali: kirim top up-nya, atau kalau harga di pemasok sudah berubah dan paketnya tidak tersedia, hubungi pembeli dan kembalikan uangnya dengan transfer. Masa berlaku tagihan API bisa dipendekkan lewat expires_in_minutes, tetapi pembayaran yang terlambat tetap mungkin.
Kalau pemasok gagal setelah pembeli membayar
Pembeli sudah membayar, lalu pemasok menjawab gangguan atau saldo deposit tidak cukup. Pembayarannya sudah tercatat berhasil di Kasera Pay, dan yang tertunda hanya pengirimannya. Antrekan pesanan itu sebagai “dibayar, belum terkirim”, coba lagi dengan referensi yang sama, dan beri tahu pembeli kalau pengirimannya lebih lama dari biasanya. Kalau paketnya benar-benar tidak bisa dikirim, uangnya dikembalikan dengan transfer dari rekening penjual, dan biaya transaksi yang sudah terpotong tidak kembali. Deposit di pemasok yang cukup untuk jam ramai, biasanya malam hari dan akhir pekan, mencegah sebagian besar kasus ini.
Biaya per nominal
Tarif yang berlaku saat tulisan ini dibuat: QRIS Rp 500 flat untuk pembayaran sampai Rp 100.000 dan 0,7% + Rp 250 di atasnya, Virtual Account Rp 5.000 per pembayaran berhasil, pencairan ke rekening Rp 3.000 per pencairan, tanpa biaya bulanan. Contoh dengan biaya ditanggung penjual:
| Nominal | Biaya QRIS | Biaya Virtual Account |
|---|---|---|
| Rp 5.000 | Rp 500 (10%) | Di bawah minimum Rp 10.000 |
| Rp 20.000 | Rp 500 (2,5%) | Rp 5.000 |
| Rp 50.000 | Rp 500 (1%) | Rp 5.000 |
| Rp 100.000 | Rp 500 | Rp 5.000 |
| Rp 150.000 | Rp 1.300 | Rp 5.000 |
| Rp 500.000 | Rp 3.750 | Rp 5.000 |
Yang perlu dibaca dari tabel itu: di toko top up, biayanya hampir selalu Rp 500 tetap, jadi yang paling terasa adalah paket termurah. Sebagai ilustrasi, paket yang modalnya Rp 4.600 di pemasok dan dijual Rp 5.000 menyisakan Rp 400 sebelum biaya, lebih kecil dari Rp 500 biayanya. Paket seperti itu dijual dengan Terima utuh, digabung menjadi paket yang lebih besar, atau harganya dinaikkan. Virtual Account baru lebih murah daripada QRIS di atas sekitar Rp 678.600 per pembayaran, nominal yang jarang muncul di toko top up. Cara memasukkan biaya ke harga ada di tulisan tentang harga jual setelah biaya transaksi.
Sebelum pesanan pertama
Penjual perorangan bisa mendaftar tanpa badan usaha; verifikasi pemilik memakai KTP dan selfie. Sebelum verifikasi selesai, akun bisa membuat 10 permintaan pembayaran dengan total Rp 1.000.000. Toko top up melewati sepuluh pesanan dalam satu malam yang ramai, jadi selesaikan verifikasi sebelum promosi pertama. Batas lain, termasuk rate limit API untuk toko yang ramai saat event gim, dirinci di dokumentasi batas transaksi. Kebijakan penggunaan Kasera Pay melarang judi, taruhan, dan undian dalam bentuk apa pun. Untuk produk yang ragu-ragu berada di sisi mana, misalnya chip gim bertema kasino, tanyakan ke halo@kasera.id sebelum menjualnya.
Pertanyaan yang sering muncul
Pembeli salah menulis ID pemain dan diamond-nya masuk ke akun orang lain. Uangnya bisa dikembalikan lewat Kasera Pay?
Tidak. Pembayaran QRIS dan Virtual Account yang sudah berhasil tidak bisa di-refund lewat Kasera Pay, baik oleh penjual maupun oleh Kasera. Kalau penjual memutuskan mengganti, nominalnya ditransfer dari rekening sendiri, dan biaya transaksi yang sudah terpotong tidak kembali. Saldo pemasok yang terpakai juga tidak kembali. Karena itu ID dan server dibacakan ulang ke pembeli, atau nama akunnya dicek, sebelum tagihan dibuat.
Pembeli mengirim tangkapan layar bukti bayar sebelum status berubah. Top up boleh dikirim?
Tunggu status Dibayar di dashboard atau webhook payment.paid. Tangkapan layar bisa diedit atau diambil dari transaksi lain, dan top up yang sudah masuk ke akun gim tidak bisa ditarik kembali. Biasanya statusnya berubah dalam hitungan detik setelah pembayaran dikonfirmasi.
Bisakah pembeli membayar paket Rp 5.000 lewat Virtual Account?
Tidak. Nominal minimum Virtual Account Rp 10.000, dan biayanya Rp 5.000 tetap per pembayaran, jadi untuk paket kecil Virtual Account tidak masuk akal. QRIS menerima mulai Rp 1.000 dengan biaya Rp 500 sampai Rp 100.000. Batasi metode ke QRIS untuk paket kecil, lewat pilihan Metode di dashboard atau payment_methods di API.
Panduan per jenis usaha
- Laundry
- Katering
- Bengkel motor dan mobil
- Klinik gigi dan praktik dokter
- Fotografi dan videografi
- Bimbel dan les privat
- Gym dan studio kebugaran
- Sewa lapangan olahraga
- Homestay dan villa
- Rental alat
- Toko bahan bangunan
- Jasa renovasi rumah
- Jasa pindahan rumah
- Percetakan dan digital printing
- Pet shop dan penitipan hewan
- Open trip
- Depot air minum isi ulang
- Toko bunga dan papan bunga
- Sekolah sepak bola dan klub olahraga anak
- Servis HP dan laptop
- Kursus mengemudi
- Sanggar tari dan kursus musik
- Aqiqah dan hewan kurban
- Antar-jemput sekolah
- SPP sekolah swasta, madrasah, dan pesantren
- Kue rumahan
- Jualan sayur online
- Kantin dan food court
- Cuci mobil dan motor
- Jualan frozen food
- Jualan thrift dan preloved
- Cleaning service dan bersih-bersih rumah
- Jasa penerjemah dan juru bahasa
- Toko optik dan kacamata
- Toko oleh-oleh dan jajanan khas
- Tanaman hias dan bibit
- Pesanan hampers dan parsel
- Warung dan kasbon
- Kedai kopi dan kafe
- Penjahit dan konveksi
- Kos dan kontrakan
- Jastip
- Freelancer
- Jasa website dan hosting
- Jasa panggilan di tempat