Blog · Terbit · Diperbarui
Membatalkan tagihan yang terlanjur dibuat: bedanya dengan membiarkannya kedaluwarsa, dan QR yang tetap bisa dibayar
Nominalnya salah satu digit, tautannya sudah terkirim ke chat pembeli, dan sekarang ada dua tombol yang sama-sama menutup tagihan itu: membatalkannya sekarang, atau membiarkan masa berlakunya habis sendiri. Keduanya menutup halaman pembayarannya, tetapi berhenti pada status yang berbeda, dan perbedaannya nyata pada tiga hal: apa yang terjadi kalau pembeli tetap membayar, berapa jatah sebelum verifikasi yang kembali, dan kalimat apa yang dibaca pembeli kalau tautannya terlanjur dibuka.
Ringkasnya, dan sisanya adalah penjelasan dari tiga baris ini. Membatalkan menutup halaman pembayaran seketika, tetapi tidak menarik kembali QR atau nomor Virtual Account yang sudah terbit: kalau pembeli tetap membayarnya, status canceled berubah menjadi succeeded. Membiarkan kedaluwarsa menyisakan pintu yang sama: status expired masih bisa berubah menjadi succeeded kalau ternyata uangnya sudah diterima sebelum waktunya habis. Dan pada akun yang belum terverifikasi, hanya pembatalan yang mengembalikan slot jumlah permintaan yang sudah terpakai.
Perbedaannya dalam satu tabel
| Dibatalkan | Dibiarkan kedaluwarsa | |
|---|---|---|
| Status akhir | canceled | expired |
| Masih bisa menjadi lunas | Bisa, kalau pembeli tetap membayar QR atau Virtual Account yang sudah terbit | Bisa, kalau uangnya diterima sebelum waktunya habis |
| Kapan berhenti | Seketika, saat tombolnya ditekan | Saat masa berlaku habis, standarnya 60 menit |
| Jatah 10 permintaan sebelum verifikasi | Slotnya kembali | Slotnya tetap terpakai |
| Jatah nominal Rp 1.000.000 sebelum verifikasi | Nominalnya kembali seketika | Nominalnya kembali setelah kedaluwarsa |
| Yang dibaca pembeli | “Pembayaran dibatalkan” | “Tautan kedaluwarsa” |
Pintu yang tetap terbuka setelah tagihan ditutup
Sebuah tagihan yang kedaluwarsa belum tentu selesai. Kalau pembayarannya sebenarnya sudah diterima beberapa detik sebelum penghitung waktu berhenti, dan konfirmasinya baru sampai setelahnya, tagihan itu tetap berpindah dari expired menjadi succeeded. Uangnya menang atas jam, dan alasannya sederhana: memberi tahu penjual bahwa dirinya tidak dibayar padahal uangnya sudah masuk adalah kesalahan yang jauh lebih mahal daripada menutup tagihan terlambat.
Pembatalan punya pintu yang sama. Membatalkan hanya mengubah status tagihan di Kasera Pay. QR atau nomor Virtual Account yang sudah terbit di penyedia jasa pembayaran berlisensi tidak ikut ditarik, jadi pembeli yang menyimpan QR-nya atau sudah mencatat nomor Virtual Account-nya masih bisa membayar. Kalau itu terjadi, tagihan berpindah dari canceled menjadi succeeded. Karena itu membatalkan tidak pernah menjamin tidak ada uang yang masuk. Selama masih ada kemungkinan pembeli sedang berada di depan layar pembayaran, membiarkannya kedaluwarsa tetap lebih aman, karena tidak memancing pembeli membayar ulang lewat tautan pengganti.
Kalau uangnya tetap datang ke tagihan yang sudah dibatalkan
Uang itu diakui seperti pembayaran lunas lainnya. Statusnya berubah menjadi succeeded, nominalnya masuk saldo, dan pemberitahuan lunas berjalan seperti biasa, termasuk webhook payment.paid. Status Dibatalkan yang sempat terlihat di daftar transaksi karena itu bukan bukti bahwa tidak ada uang yang masuk. Yang menentukan adalah status terbaru di menu Transaksi.
Sesudahnya ada dua jalan. Kalau pesanannya masih bisa dipenuhi, kirim seperti pesanan lunas lain. Kalau pesanannya memang sudah batal, kembalikan uangnya seperti pengembalian dana biasa: untuk QRIS dan Virtual Account, penjual mentransfernya dari rekening sendiri, lengkapnya di halaman pengembalian dana.
Karantina tetap ada untuk nominal yang tidak cocok pada tagihan yang masih menunggu. Konfirmasi lunas untuk tagihan yang sudah gagal, sejak 13 Oktober 2026, diterapkan sama seperti pada tagihan yang kedaluwarsa atau dibatalkan, karena status gagal bisa muncul saat kode QR-nya sebenarnya masih bisa dibayar. Arti status gagal diuraikan di tulisan tentang pembayaran yang gagal di sisi pembeli. Nominal yang tidak cocok tidak dikreditkan otomatis dan ditahan untuk dicek tim Kasera.
Jatah sebelum verifikasi, satu-satunya alasan operasional untuk membatalkan
Akun yang sudah terverifikasi tidak punya batas jumlah maupun total nominal per hari, jadi pada akun itu membatalkan tidak mengembalikan apa pun karena memang tidak ada yang perlu dikembalikan. Akun yang verifikasinya belum selesai berbeda: jatahnya 10 permintaan dan Rp 1.000.000 untuk seumur akun, lengkapnya di halaman batas transaksi. Dua sisi jatah itu tidak diperlakukan sama.
Sisi jumlah hanya mengecualikan canceled. Tagihan yang kedaluwarsa, yang gagal, yang masih menunggu, dan yang sudah lunas semuanya tetap terhitung, jadi menerbitkan ulang tautan yang kedaluwarsa tidak pernah mengembalikan slotnya. Sisi nominal hanya menghitung tagihan yang masih menunggu dan yang sudah lunas, sehingga nominal tagihan yang dibatalkan kembali seketika, dan nominal tagihan yang dibiarkan kedaluwarsa kembali begitu waktunya habis.
Akibatnya paling terasa pada penjual baru yang membiasakan diri menerbitkan tautan baru setiap kali pembeli lambat membayar. Sepuluh tautan untuk satu pesanan yang sama menghabiskan seluruh jatah jumlah seumur akun, walaupun sembilan di antaranya tidak pernah dibuka. Membatalkan yang lama sebelum menerbitkan yang baru adalah satu-satunya cara menghentikan penumpukan itu, dan menyelesaikan verifikasi menghapus persoalannya sepenuhnya.
Yang dibaca pembeli, kata per kata
Tautan yang sudah ditutup tetap bisa dibuka. Halamannya tidak menghilang, tidak menjadi halaman kosong, dan tidak menampilkan kode kesalahan. Yang berubah hanya isinya, dan isinya berbeda tergantung jalan mana yang dipakai:
- Dibatalkan: “Pembayaran dibatalkan”, dengan penjelasan “Penjual membatalkan permintaan ini.”
- Kedaluwarsa: “Tautan kedaluwarsa”, dengan penjelasan “Waktu pembayaran sudah habis. Minta tautan baru ke penjual.”
Perbedaannya kecil di layar dan besar di percakapan. Kalimat kedaluwarsa sudah mengandung instruksi berikutnya, sehingga pembeli tahu harus meminta tautan baru. Kalimat pembatalan menunjuk penjual sebagai pihak yang memutuskan, tanpa memberi tahu apa yang harus dilakukan sesudahnya. Kalau tagihan dibatalkan karena akan diganti dengan nominal yang benar, tautan penggantinya sebaiknya dikirim lebih dulu, atau menyusul dalam hitungan detik, supaya kalimat itu tidak dibaca sebagai penolakan.
Cara membatalkannya, dan satu batasan yang perlu diketahui developer
Pembatalan dilakukan dari dashboard, pada halaman detail transaksi, dan tombolnya hanya muncul selama tagihannya masih menunggu. Sisi lain dari kalimat itu penting bagi yang sedang membangun integrasi: API publik tidak memiliki jalur pembatalan. Yang tersedia di sana adalah membuat transaksi, membaca satu transaksi, membaca daftar transaksi, membaca daftar metode pembayaran, serta membuat dan membaca pengembalian dana, seperti tertulis di dokumentasi API. Sebuah sistem yang menerbitkan tagihan secara otomatis karena itu tidak bisa menariknya kembali secara otomatis. Yang tersisa baginya ada dua: menetapkan masa berlaku yang pendek sejak awal, atau menyerahkan pembatalannya kepada manusia yang membuka dashboard.
Menetapkan masa berlaku sejak awal adalah jalan yang lebih baik dari keduanya, dan cara memilih angkanya dibahas di tulisan tentang masa berlaku tagihan. Standarnya 60 menit dengan batas 24 jam.
Permintaan pembatalan yang datang terlambat ditolak dengan tegas, bukan diterima diam-diam. Tagihan yang sudah lunas, sudah kedaluwarsa, atau sudah dibatalkan sebelumnya menghasilkan penolakan not_cancelable dengan keterangan bahwa hanya permintaan yang masih menunggu yang bisa dibatalkan. Menekan tombolnya dua kali karena layar terasa lambat juga aman: percobaan kedua ditolak, bukan menghasilkan pembatalan kedua yang membingungkan. Daftar kode penolakan selengkapnya ada di halaman kode kesalahan.
Satu keadaan tempat membatalkan justru menciptakan masalah
Pembeli mengirim pesan “sudah saya bayar”, tetapi daftar transaksi masih menunjukkan menunggu. Godaan pertama adalah membatalkan tagihan itu lalu menerbitkan yang baru supaya rapi. Itu justru urutan yang paling berisiko, karena dua hal bisa terjadi bersamaan: konfirmasi pembayaran pertama menyusul dan mengubah tagihan yang sudah dibatalkan menjadi lunas, sementara pembeli membayar tautan kedua karena merasa yang pertama ditolak. Hasil akhirnya satu pesanan dengan dua pembayaran lunas, dua kali biaya transaksi, dan satu pengembalian dana yang harus dikirim sendiri, dengan langkah yang diuraikan di tulisan tentang pesanan yang dibayar dua kali.
Urutan yang benar adalah menunggu. Tagihan yang berstatus menunggu akan berhenti sendiri pada masa berlakunya, dan kalau uangnya memang sudah diterima lebih dulu, statusnya berubah menjadi lunas tanpa perlu dibantu. Membatalkan baru masuk akal setelah jelas tidak ada pembayaran yang sedang berjalan, misalnya karena pembeli menyatakan batal membeli atau karena nominalnya salah dan belum ada yang membukanya.
Aturan yang bisa dipakai hari ini
- Salah ketik nominal dan tautannya belum terkirim: batalkan. Tidak ada yang bisa sedang membayar, dan pada akun yang belum terverifikasi slot jatahnya kembali.
- Tautan sudah terkirim tetapi belum dibuka, dan pembeli sudah dikabari: batalkan, lalu kirim tautan penggantinya pada pesan yang sama.
- Pembeli mengaku sudah membayar: jangan batalkan dan jangan terbitkan tautan baru. Tunggu, karena kalau uangnya memang sudah diterima, statusnya berubah menjadi lunas sendiri.
- Tagihan yang sudah dibatalkan ternyata lunas: periksa status terbarunya di menu Transaksi. Kirim pesanannya, atau kembalikan uangnya kalau pesanan memang sudah batal.
- Pesanan batal setelah pembayarannya lunas: bukan wilayah pembatalan sama sekali. Yang berlaku adalah pengembalian dana, dan aturannya berbeda per metode, diuraikan di tulisan tentang pengembalian dana ke pembeli.
- Tagihan menumpuk tanpa dibayar setiap hari: yang perlu diperbaiki masa berlakunya, bukan kebiasaan membatalkannya.
Pada rekap akhir hari, tagihan yang dibatalkan dan yang kedaluwarsa sama-sama muncul dengan namanya sendiri dan tidak ikut terhitung sebagai penjualan, kecuali yang kemudian berubah menjadi lunas. Baris seperti itulah yang perlu dicocokkan dengan pesanan, karena sempat terbaca batal sebelum uangnya datang.