Blog · Terbit
Delapan bank Virtual Account, dan satu keputusan yang tidak ada di halaman pengaturan: kapan mempersempit daftarnya benar-benar mengubah sesuatu, dan kapan satu kode saja menjatuhkan pembayaran yang seharusnya jadi
Delapan bank Virtual Account aktif di Kasera Pay: BCA, BRI, BNI, Mandiri, Permata, CIMB Niaga, Danamon, dan Maybank. Pertanyaan yang wajar setelah membaca daftar itu adalah bank mana yang sebaiknya ditawarkan, dan jawabannya bercabang sejak kalimat pertama. Penjual yang bekerja dari dashboard tidak punya keputusan itu sama sekali, karena Transfer Bank (VA) adalah satu switch untuk kedelapan bank dan tidak bisa dipecah per bank. Integrasi yang memakai API punya keputusan itu, per pembayaran, lewat satu field.
Kesimpulannya lebih dulu, dan sisanya adalah alasannya. Menawarkan kedelapan bank adalah bawaan yang benar untuk hampir semua penjualan, karena tidak ada satu pun biaya, batas, atau perilaku di sisi Kasera Pay yang berbeda antar bank. Mempersempit daftarnya hanya menghasilkan sesuatu pada satu keadaan, yaitu ketika nomornya harus tercetak tanpa pembeli membuka halaman pemilih. Dan menulis satu kode bank secara permanen di dalam kode integrasi membeli kenyamanan itu dengan risiko yang nyata: pembayaran yang gagal dibuat sama sekali pada hari jalur bank itu sedang dimatikan.
Di dashboard, keputusan itu memang tidak ada
Pengaturan metode pembayaran hanya mengenal dua baris: QRIS dan Transfer Bank (VA). Menyalakan Transfer Bank (VA) menyalakan kedelapan banknya sekaligus, dan pembeli yang memilih banknya sendiri di halaman pembayaran. Tidak ada switch per bank di halaman itu, dan tidak ada cara menyembunyikan satu bank dari halaman pemilih tanpa menyentuh API. Aturan lengkapnya, termasuk siapa yang boleh mengubah pengaturan itu, ada di halaman metode pembayaran.
Dua hal kecil melekat pada switch itu dan pantas diketahui sebelum dipakai. Minimal satu metode harus tetap menyala, jadi Transfer Bank (VA) tidak bisa dimatikan kalau QRIS juga mati. Dan perubahan pengaturan hanya berlaku untuk pembayaran yang dibuat sesudahnya: halaman pembayaran yang sudah terbuka di layar pembeli tetap memakai metode yang berlaku saat pembayaran itu dibuat.
Yang sama persis pada kedelapan bank
Sebagian besar hal yang biasanya dipakai untuk memilih ternyata tidak membedakan apa pun di sini:
- Biaya. Virtual Account dikenai Rp 5.000 tetap per pembayaran berhasil, sama pada kedelapan bank, tanpa komponen persentase. Bank yang dipilih pembeli tidak menggeser angka itu sedikit pun. Perbandingannya terhadap QRIS, yang dikenai 0,7% + Rp 250, dibahas di panduan memilih QRIS atau Virtual Account.
- Batas nominal. Virtual Account menerima mulai Rp 10.000 sampai Rp 10.000.000, dan batas itu berlaku per metode, bukan per bank.
- Masa berlaku. Bawaannya 60 menit sejak pembayaran dibuat, dengan plafon 24 jam lewat API, dan tidak ada bank yang mendapat jam yang berbeda.
- Pencocokan. Setiap nomor Virtual Account dibuat untuk satu permintaan pembayaran, sehingga uang yang masuk sudah menunjuk pesanannya sendiri. Itu berlaku sama pada kedelapan bank, dan tidak bergantung pada nama pengirimnya.
- Instruksi pembayaran. Halaman pembayaran menampilkan nomornya beserta langkah pembayaran untuk bank yang dipilih, jadi menambah satu bank tidak menambah pekerjaan menulis panduan bagi pembeli.
Konsekuensinya lugas: tidak ada bank yang lebih murah, lebih cepat, atau lebih mudah dicocokkan daripada yang lain. Argumen untuk mempersempit daftar harus datang dari tempat lain, dan tempat lain itu ada dua.
Yang benar-benar berbeda ada di sisi pembeli
Perbedaan pertama milik pembeli, bukan milik penjual. Transfer ke nomor Virtual Account sebuah bank dari rekening di bank yang sama umumnya tidak dikenai biaya oleh bank pembeli, sementara transfer dari bank lain mengikuti tarif antarbank yang ditetapkan bank pembeli itu sendiri. Kasera Pay tidak menetapkan, memungut, atau melihat biaya tersebut, dan besarnya berbeda antar bank serta antar jalur transfer. Yang bisa diambil dari fakta itu hanya satu kesimpulan praktis, dan kesimpulan itu justru menguatkan bawaannya: makin banyak bank yang ditawarkan, makin besar kemungkinan pembeli menemukan banknya sendiri di daftar dan membayar tanpa biaya tambahan. Membuang bank dari daftar memindahkan biaya itu ke pembeli yang kebetulan memakai bank yang dibuang.
Perbedaan kedua adalah panjang layar. Delapan pilihan berarti satu layar pemilih sebelum nomornya muncul. Pada penjualan yang pembelinya sudah siap membayar, satu layar tambahan bukan masalah. Pada penagihan yang nomornya dikirim lewat pesan supaya pembeli bisa membayar dari ATM atau aplikasi banknya tanpa membuka halaman apa pun, layar itu justru yang harus dihilangkan, dan cara menghilangkannya ada di bagian berikutnya. Kasus pembayaran di mesin dibahas terpisah di tulisan tentang pembeli yang membayar di ATM.
Satu field, tiga perilaku
Mempersempit hanya bisa dilakukan per pembayaran, saat pembayaran itu dibuat, lewat field payment_methods. Isinya array kode metode, dan kodenya adalah qris serta delapan kode bank: va_bca, va_bri, va_bni, va_mandiri, va_permata, va_cimb, va_danamon, dan va_maybank.
POST /v1/transactions
{
"amount": 250000,
"description": "Pesanan INV-1042",
"payment_methods": ["va_bca", "va_mandiri", "qris"]
}Perilakunya ada tiga, dan ketiganya menentukan apa yang dilihat pembeli:
- Tidak dikirim sama sekali: semua metode yang aktif di akun ditawarkan.
- Satu kode: metode itu saja, tanpa layar pemilih.
- Beberapa kode: pembeli memilih dari kode-kode itu, dan urutan di array menjadi urutan di layar.
Field ini hanya bisa mempersempit. Menyebut kode metode yang tidak aktif di akun tidak akan pernah membukanya, dan pembayarannya ditolak dengan payment_method_unavailable alih-alih diam-diam mengabaikan kodenya. Akibat teknis memilih satu kode dibanding banyak kode, termasuk apa yang ikut pada respons create, diuraikan utuh di perbandingan menawarkan satu metode melawan semua metode di checkout, dan daftar kode beserta syarat datanya ada di referensi API metode pembayaran.
Satu detail yang jarang diperhatikan dan sering muncul di laporan: kolom payment_method pada sebuah transaksi tidak pernah kosong. Kolom itu diisi saat pembayaran dibuat dengan kode pertama yang ditawarkan, lalu diperbarui ke kode yang benar-benar dipilih pembeli. Transaksi yang masih menunggu karena itu selalu terbaca sebagai metode pertama di array, bukan sebagai kosong atau sebagai metode yang belum ditentukan. Rekap yang menghitung metode dari transaksi yang belum dibayar akan menghitung urutan array, bukan pilihan pembeli.
Harga dari menulis satu kode bank secara permanen
Satu kode bank yang ditulis tetap di dalam kode integrasi menghasilkan alur yang paling pendek, dan membawa satu keadaan gagal yang tidak dimiliki daftar yang lebih panjang. Kasera Pay bisa mematikan sementara satu metode di luar kendali penjual, misalnya ketika jalur satu bank sedang bermasalah. Pengaturan akun tetap tersimpan dan metodenya muncul lagi begitu jalurnya sehat, dan pembeli yang sudah memegang nomor Virtual Account tetap bisa membayarnya. Tetapi pembayaran baru yang menyebut kode itu, dan hanya kode itu, ditolak payment_method_unavailable. Integrasi yang menyebut tiga kode kehilangan satu pilihan pada hari itu; integrasi yang menyebut satu kode kehilangan seluruh kemampuan menagih.
Keadaan kedua lebih sering terjadi dan lebih mudah dilupakan: nominal di bawah Rp 10.000. Virtual Account tidak menerimanya, jadi pembayaran yang hanya menyebut kode bank akan ditolak, sementara pembayaran yang juga menyebut qris tetap jadi karena halaman pembayaran hanya menawarkan metode yang cocok dengan nominalnya.
Karena itu daftar kode sebaiknya dibaca dari GET /v1/payment_methods, yang mengembalikan metode yang benar-benar bisa dipakai akun tersebut saat itu, dan bukan disalin sekali lalu ditanam di dalam kode. Kalau satu kode tetap dipilih demi menghilangkan layar pemilih, penanganan galat payment_method_unavailable harus ikut ditulis pada hari yang sama, dengan jalur cadangan yang menerbitkan ulang pembayaran memakai kode lain.
Aturan yang bisa dipakai hari ini
- Menagih dari dashboard: keputusan ini tidak ada, dan tidak perlu diada-adakan. Kedelapan bank menyala bersama dan pembeli memilih sendiri.
- Menjual ke pembeli umum lewat API: jangan kirim
payment_methodssama sekali. Pembeli yang memilih banknya sendiri adalah pembeli yang paling mungkin membayar tanpa biaya antarbank. - Nomor harus dikirim langsung lewat pesan atau tercetak pada tagihan: satu kode bank, karena hanya bentuk itu yang menghilangkan layar pemilih, disertai penanganan
payment_method_unavailabledan nominal minimum Rp 10.000. - Pembeli korporat yang selalu mentransfer dari satu bank: letakkan bank itu di urutan pertama array, bukan membuang yang lain. Urutan array adalah urutan layar, dan sisanya tetap ada kalau ternyata dibutuhkan.
- Membaca laporan: metode pada transaksi yang belum dibayar adalah kode pertama yang ditawarkan, bukan pilihan pembeli. Hitung metode dari transaksi yang sudah berhasil saja.
Pertanyaan yang sering muncul
Apakah ada bank Virtual Account yang biayanya lebih murah bagi penjual?
Tidak. Virtual Account dikenai Rp 5.000 tetap per pembayaran berhasil pada kedelapan bank, tanpa komponen persentase dan tanpa perbedaan antar bank. Yang menggeser biaya adalah pilihan antara Virtual Account dan QRIS, bukan pilihan banknya. Tarif yang berlaku hari ini tercantum di halaman biaya.
Bisakah hanya menawarkan BCA dan Mandiri tanpa menyentuh API?
Tidak bisa. Transfer Bank (VA) adalah satu switch untuk kedelapan bank, dan halaman pengaturan tidak memiliki switch per bank. Mempersempit daftar hanya tersedia per pembayaran lewat payment_methods saat pembayaran dibuat.
Apa yang terjadi kalau pembeli mentransfer ke nomor Virtual Account dari bank lain?
Pembayarannya tetap masuk dan tetap tercocokkan ke pesanannya, karena nomor itu dibuat untuk satu permintaan pembayaran. Yang berubah hanya biaya transfer yang dikenakan bank pembeli kepada pembelinya sendiri, dan biaya itu bukan bagian dari tarif Kasera Pay.
Apakah menawarkan delapan bank memperlambat pembayaran?
Menambah satu layar pemilih, dan tidak menambah apa pun setelah bank dipilih. Kalau layar itu yang ingin dihilangkan, jalurnya adalah menyebut satu kode saat membuat pembayaran, bukan mematikan bank dari pengaturan, karena pengaturan memang tidak bisa melakukannya.