Blog · Terbit
Pembeli yang membayar di ATM: masa berlaku 60 menit yang tidak cukup untuk perjalanan ke mesin, nama yang dipotong pada 30 karakter, dan nominal yang tidak perlu dibedakan
Jawaban singkatnya lebih dulu: nomor Virtual Account yang diterbitkan Kasera Pay bisa dibayar di mesin ATM, dan petunjuk yang ikut pada setiap permintaan pembayaran memang menyebut ATM sebagai jalur yang setara dengan mobile banking. Langkahnya di mesin adalah menu Transfer, lalu Virtual Account, lalu nomor itu diketik.
Yang menggagalkan pembayaran di ATM hampir tidak pernah mesinnya, melainkan satu angka yang dipilih penjual tanpa memikirkannya: masa berlaku bawaan 60 menit, yang cukup untuk pembeli yang sedang memegang ponsel dan sering tidak cukup untuk pembeli yang harus keluar rumah, mencari mesin, dan mengantre. Tulisan ini membawa angka yang perlu diubah, tiga hal lain yang ikut menentukan, dan urutan kerja yang menutup seluruhnya.
Kapan jalur ini yang dipakai
Pembeli tanpa aplikasi bank biasanya jatuh pada empat keadaan: rekening lama yang mobile banking-nya tidak pernah diaktifkan, ponsel yang tidak sanggup memasangnya, kebiasaan yang belum berubah, atau uang tunai yang perlu disetor dulu. QRIS tidak menyelesaikan satu pun dari keempatnya, karena memindai tetap menuntut aplikasi pembayaran di ponsel yang sama. Virtual Account menyelesaikannya karena bentuknya cuma deretan angka: bisa disalin, dikirim lewat pesan, dibacakan lewat telepon, lalu diketik di mesin. Bank yang tersedia ada delapan, yaitu BCA, BRI, BNI, Mandiri, Permata, CIMB Niaga, Danamon, dan Maybank.
Empat hal yang harus ikut dikirim, bukan hanya nomornya
Nomor sendirian hampir selalu memicu percakapan susulan. Yang perlu ikut dalam satu pesan ada empat: nama banknya, karena nomor Virtual Account hanya berlaku di bank penerbitnya; nomornya dalam satu baris tanpa spasi supaya bisa disalin utuh; nominal sampai rupiah terakhir; dan batas waktunya dalam bentuk jam yang jelas, bukan “segera”.
Petunjuknya tidak perlu disusun sendiri. Setiap permintaan pembayaran Virtual Account membawa blok petunjuk berbahasa Indonesia yang sudah menyebut nama banknya, berjudul “Cara membayar via BCA Virtual Account” untuk pembeli yang memilih BCA, dan langkah pertamanya berbunyi membuka aplikasi mobile banking atau ATM bank tersebut. Blok itu ada di respons API dan tercetak di halaman pembayaran, jadi menyalinnya lebih aman daripada mengarangnya ulang.
Satu keputusan teknis mempercepat seluruhnya. Kalau bank pembeli sudah diketahui sejak awal, sebutkan satu kode metode saja saat membuat permintaan pembayaran: nomor Virtual Account ikut tercetak di respons, sehingga bisa langsung dikirim tanpa pembeli perlu membuka halaman apa pun. Akibat lengkap memilih satu kode dibanding menawarkan semuanya dibahas di perbandingan menyebut satu metode dengan menawarkan seluruhnya.
Masa berlaku 60 menit adalah masalah utamanya
Masa berlaku bawaan sebuah permintaan pembayaran adalah 60 menit. Untuk penjualan yang dibayar saat itu juga angka itu tepat; untuk pembeli yang akan berangkat ke ATM, waktu tempuh, antrean, dan kemungkinan mesin pertama yang kosong semuanya harus masuk ke dalam satu jam yang sama.
Angkanya diatur per permintaan lewat expires_in_minutes, yang menerima 1 sampai 10080 menit. Ada plafon kedua yang lebih rendah dan lebih sering ditabrak, yaitu plafon akun dengan bawaan 24 jam: di atasnya create ditolak 422 expiry_too_long, sementara di atas 10080 ditolak lebih awal sebagai validation_failed. Plafon akun bisa dinaikkan atas permintaan ke halo@kasera.id.
Angka yang masuk akal, dipilih dari kapan pembeli akan sampai di mesin:
| Keadaan pembeli | expires_in_minutes | Alasannya |
|---|---|---|
| Sedang di jalan, ATM dalam jangkauan | 180 | Menutup waktu tempuh, antrean, dan satu mesin yang gagal |
| Akan membayar nanti sore atau malam ini | 720 | Tidak melewati pergantian hari kerja |
| Menyatakan akan membayar besok pagi | 1440 | Plafon akun bawaan, tertinggi tanpa perlu diminta |
| Menahan stok terbatas | 60 sampai 120 | Masa berlaku panjang mengunci barang yang bisa dijual |
Memanjangkan masa berlaku bukan tindakan gratis, karena selama tagihan hidup ia mengunci apa pun yang menempel padanya. Pertukarannya dibahas utuh di tulisan tentang memilih masa berlaku tagihan.
Nama yang terbaca di layar mesin dipotong pada 30 karakter
Virtual Account menuntut satu data yang tidak diminta QRIS: nama pembeli, lewat customer.name. Tanpa nama itu, create Direct API yang menyebut Virtual Account ditolak 422; pada Kasera Pay Checkout, halamannya yang menanyakan sendiri. Yang jarang diketahui adalah nasib nama itu sesudahnya: Kasera Pay menyimpan sampai 120 karakter, tetapi salinan yang diteruskan ke bank dialihaksarakan ke ASCII dan dipotong pada 30 karakter. Nama itulah yang muncul di layar konfirmasi mesin, satu-satunya tempat pembeli bisa memastikan tujuannya benar sebelum menekan tombol terakhir.
Akibatnya: nama panjang bergelar terpotong di tengah dan lebih baik dipendekkan sejak awal, huruf beraksen tidak selamat melewati alihaksara, dan kode pesanan yang ingin diikutkan harus muat di dalam 30 karakter yang sama.
Nominal disebut sampai rupiah terakhir, dan tidak perlu dibedakan
Satu kebiasaan dari era transfer biasa harus ditinggalkan di sini: menambahkan tiga digit unik di belakang harga supaya dua transfer bernominal sama bisa dibedakan. Kebiasaan itu lahir dari kelemahan rekening pribadi, dan kelemahan itu tidak ada pada Virtual Account. Nomornya diterbitkan untuk satu permintaan pembayaran dan membawa nominal yang sudah ditetapkan, jadi nomor itu sendiri yang menyatakan tagihan mana yang dibayar dan dua pesanan bernominal persis sama tetap tidak mungkin tertukar. Angka unik hanya membuat nominal lebih sering salah diketik. Perbedaan penuh antara kedua jalur ada di perbandingan transfer Virtual Account dengan transfer biasa. Yang justru perlu diperhatikan adalah menyebut nominal secara utuh dalam pesan, karena pembeli di depan mesin mengetik dari pesan itu dan bukan dari ingatan.
Batas nominal, dan batas yang bukan milik penjual
Virtual Account menerima mulai Rp 10.000 sampai Rp 10.000.000 per pembayaran; maksimumnya bisa dinaikkan per akun atas permintaan ke halo@kasera.id, minimumnya tidak. Rinciannya, termasuk jatah sebelum verifikasi bisnis disetujui, ada di halaman batas transaksi.
Ada batas kedua di luar kendali penjual: batas transfer yang ditetapkan bank pembeli sendiri, berbeda per bank dan per jalur, tidak bisa dilihat maupun diubah dari sisi penjual. Gejalanya khas, yaitu pembayaran ditolak di mesin sebelum permintaan pembayaran sempat berubah status. Kalau nominal besar berulang kali gagal padahal nomor dan nominalnya benar, pertanyaannya ada di batas bank pembeli, dan jalan keluarnya memecah tagihan, yang berarti biaya tetapnya dibayar berkali-kali.
Biaya, dan kenapa nominal besar justru cocok di jalur ini
Per 17 September 2026, Virtual Account dikenakan Rp 5.000 tetap per transaksi berhasil, sementara QRIS dikenakan MDR 0,7 persen yang diteruskan apa adanya dari jaringan pembayaran ditambah Rp 250 biaya Kasera. Karena satu tumbuh mengikuti nominal dan satu lagi diam di tempat, keduanya berpotongan di sekitar Rp 678.600, dan pada Rp 2.000.000 Virtual Account sudah lebih murah Rp 9.250 untuk uang yang sama. Bagi pembeli yang hanya bisa membayar di mesin hitungan ini tidak menentukan apa pun; yang dituntunnya adalah keputusan sebaliknya, yaitu bahwa menawarkan Virtual Account pada penjualan bernominal besar adalah penghematan. Pembagian tugas antara kedua metode dibahas penuh di panduan memilih QRIS atau Virtual Account.
Kalau pembeli baru sampai di mesin setelah tenggatnya lewat
Permintaan yang lewat tenggatnya berubah menjadi expired, dan nomor Virtual Account-nya berhenti bersamanya. Tiga hal menentukan apa yang harus dilakukan, dan urutannya penting.
Pertama, kedaluwarsa tidak dikabarkan. Tidak ada webhook yang berbunyi saat sebuah tagihan mati; yang berubah hanya statusnya di daftar transaksi. Kedua, kedaluwarsa bukan akhir yang pasti. Pembayaran yang sudah diterima sebelum tenggatnya lewat tetap diakui meskipun kabarnya baru sampai sesudahnya, sehingga status kedaluwarsa masih bisa berubah menjadi succeeded. Jalur ATM yang paling sering memicunya, karena jeda antara uang berpindah dan bank meneruskan kabarnya tidak selalu sependek jalur aplikasi.
Ketiga, menerbitkan pengganti terlalu cepat adalah cara membuat pembayaran ganda. Tagihan baru yang dikirim sementara pembeli berdiri di depan mesin dengan nomor lama bisa membuat keduanya sama-sama lunas, dan urutan menemukan kedua barisnya ada di tulisan tentang satu pesanan yang dibayar dua kali. Sebelum melihat daftarnya, perlu diketahui bahwa tampilan bawaan hanya menampilkan status pending dan succeeded, sehingga tagihan kedaluwarsa tidak terlihat sampai statusnya ikut dipilih.
Urutan yang dipakai penjual
- Tanyakan bank pembeli lebih dulu: jawabannya menentukan kode metode dan nama bank yang tercetak di petunjuk.
- Tanyakan kapan pembeli akan sampai di mesin, lalu pilih
expires_in_minutesdari jawaban itu dan bukan dari kebiasaan. - Isi
customer.namedengan bentuk pendek tanpa aksen yang terbaca pada 30 karakter. - Kirim satu pesan berisi nama bank, nomor dalam satu baris, nominal utuh, jam tenggatnya, dan blok petunjuk yang sudah menyebut nama banknya.
- Jangan terbitkan pengganti sampai status yang lama selesai, dan periksa daftar transaksi dengan status kedaluwarsa ikut dipilih.
Pertanyaan yang sering muncul
Apakah nomornya bisa dibayar di teller kantor cabang? Petunjuk resmi yang terbit bersama setiap permintaan pembayaran menyebut dua jalur, yaitu mobile banking dan ATM, dan tidak menyebut teller. Tersedia atau tidaknya pembayaran Virtual Account di loket adalah kebijakan bank penerbit dan bukan sesuatu yang ditetapkan Kasera Pay, jadi jawaban jujurnya adalah menanyakan ke bank tersebut sambil menyiapkan jalur ATM sebagai rencana utama.
Bisakah nomor BCA dibayar dari ATM bank lain? Petunjuk yang tercetak menyebut mesin bank penerbit nomornya, jadi cara paling aman adalah menerbitkan nomor pada bank yang memang dipakai pembeli. Itulah alasan pertanyaan pertama pada urutan di atas adalah nama banknya.