Blog · Terbit · Diperbarui
Mengembalikan uang pembeli pada QRIS dan Virtual Account: prosedurnya dan biaya yang hangus
Pada pembayaran QRIS dan Virtual Account tidak ada tombol pengembalian dana di dashboard dan tidak ada endpoint yang bisa dipanggil. Uangnya kembali lewat transfer bank biasa, dari rekening usaha penjual ke rekening pembeli. Ini bukan celah integrasi yang bisa ditambal: permintaan refund pada kedua metode itu ditolak 422 refund_not_supported, dan dokumentasi Virtual Account menyatakannya dengan satu kalimat, yaitu VA tidak bisa dibalik. Tidak ada jalur otomatis sama sekali.
Yang bisa diatur adalah prosedurnya, nominal yang dikembalikan, dan catatannya. Satu hal yang berlaku di kedua metode: biaya per transaksi tidak pernah ikut kembali. Pengembalian dana selalu meninggalkan selisih, dan besar selisih itu ditentukan metode pembayarannya, bukan besar pesanannya.
Dua metode, dan tidak satu pun otomatis
| Metode | Refund lewat API | Cara uangnya kembali | Biaya yang hangus |
|---|---|---|---|
| QRIS | Tidak | Transfer manual dari rekening usaha | 0,7% + Rp 250 |
| Virtual Account, delapan bank | Tidak | Transfer manual dari rekening usaha | Rp 5.000 |
Daftar metode yang aktif hari ini beserta kodenya ada di dokumentasi metode pembayaran.
Satu pertanyaan yang sering muncul lebih dulu: apakah uangnya bisa ditahan saja di saldo supaya tidak perlu transfer sendiri. Tidak bisa, dan letak pembayarannya tidak mengubah apa pun. Pada QRIS dan Virtual Account tidak ada jalur yang menarik kembali satu pembayaran dari saldo, jadi baik pembayaran itu belum dicairkan maupun sudah masuk ke rekening, uang yang kembali ke pembeli tetap berangkat dari dana penjual sendiri.
Kenapa QRIS memang tidak bisa dibatalkan sepihak
Alasannya ada di arah transaksinya, dan syarat layanan Kasera Pay menyebutnya apa adanya: “Pembayaran QRIS adalah pembayaran yang didorong pembayar: pelanggan Anda mengesahkannya di aplikasinya sendiri.” Otorisasinya terjadi di aplikasi pembayar, bukan di sistem penjual, sehingga tidak ada instruksi penjual yang bisa membatalkannya setelah dana berpindah. Dokumen yang sama menempatkan sengketa barang dan jasa sebagai urusan penjual dengan pelanggannya. Artinya keputusan mengembalikan uang adalah keputusan dagang, bukan permintaan teknis yang bisa diajukan ke penyedia pembayaran.
Sebelum mengembalikan apa pun: pastikan uangnya memang masuk
Kesalahan yang paling mahal di seluruh alur ini adalah mengirim uang kembali untuk pembayaran yang sebenarnya tidak pernah berhasil. Hanya baris berstatus succeeded yang membawa uang. Baris pending belum dibayar, expired sudah lewat masa berlakunya dan tidak akan menerima apa pun, dan keduanya tidak perlu dikembalikan sama sekali karena tidak ada dana yang berpindah.
Kalau pembeli bersikeras sudah membayar sementara statusnya belum berubah, itu persoalan lain dengan urutan pemeriksaan tersendiri, dan tangkapan layar bukti transfer bukan jawabannya. Urutannya ada di artikel tentang pembayaran yang katanya sudah dibayar. Selesaikan itu lebih dulu. Pengembalian dana baru relevan setelah satu baris succeeded yang benar berhasil ditunjuk.
Prosedur untuk QRIS dan Virtual Account
- Kunci fakta pembayarannya. Catat referensi transaksinya dan nominal bruto yang tertera pada baris itu. Dua angka itu yang menghubungkan uang keluar nanti dengan pembayaran yang masuk hari itu.
- Kembalikan bruto, bukan bersih. Yang berpindah dari kantong pembeli adalah nominal bruto. Nominal bersih adalah bruto dikurangi biaya per transaksi, dan itu angka internal penjual. Mengembalikan angka bersih berarti pembeli menanggung biaya atas pesanan yang batal, yang hampir selalu menjadi keluhan berikutnya. Kalau mode penanggung biaya diatur ke pembeli, bruto yang dibayar memang lebih besar daripada harga barangnya, dan bruto itu pula yang dikembalikan.
- Minta nomor rekening lewat kanal yang sama dengan pesanan. Catatan pembayaran hanya menyimpan nama, email, dan nomor telepon pembayar bila memang diisi. Nomor rekening pembeli tidak pernah ada di sana, pada QRIS maupun Virtual Account. Permintaan pengembalian yang datang dari akun baru, nomor baru, atau percakapan yang berbeda dengan tempat pesanan dibuat adalah bentuk penipuan yang paling murah untuk dicoba, dan menjawabnya lewat kanal asal pesanan menutup seluruh peluang itu.
- Transfer dari rekening usaha, dengan berita yang bisa dicari. Isi berita transfer dengan referensi atau nomor pesanan, bukan kata “refund” saja. Tiga bulan lagi, baris mutasi itulah satu-satunya bukti yang tersisa.
- Beri tahu pembeli nama pengirimnya. Dana masuk atas nama rekening usaha penjual, bukan atas nama Kasera Pay, dan tanpa keterangan itu pembeli tidak akan mengenali kiriman yang ditunggunya. Sebutkan juga bahwa waktu tibanya mengikuti bank pengirim dan bank penerima.
- Catat di luar sistem pembayaran. Baris pembayarannya tetap
succeededselamanya, karena memang begitulah faktanya: uang itu pernah masuk. Ekspor CSV berisi tanggal, referensi, referensi penjual, deskripsi, status, bruto, biaya, bersih, sumber, dan penanda mode uji, dan tidak satu pun di antaranya menyebut pengembalian. Buku pengembalian dana harus berdiri sendiri, dengan referensi pembayaran sebagai kunci sambungannya ke rekonsiliasi harian.
Berapa yang hangus, pada pembayaran Rp 150.000
| Metode | Dibayar pembeli | Biaya transaksi | Diterima penjual | Selisih setelah dikembalikan |
|---|---|---|---|---|
| QRIS | Rp 150.000 | Rp 1.300 | Rp 148.700 | Rp 1.300 |
| Virtual Account | Rp 150.000 | Rp 5.000 | Rp 145.000 | Rp 5.000 |
Pada keduanya masih ada satu biaya lagi yang tidak muncul di tabel mana pun, yaitu biaya transfer keluar yang dikenakan bank pengirim, besarnya ditentukan bank itu sendiri. Rincian potongan dan biaya yang tetap berlaku ada di halaman refund dan sengketa.
Konsekuensi praktisnya untuk kebijakan toko: pengembalian dana pada nominal kecil hampir seluruhnya adalah biaya. Pada pesanan Rp 25.000 lewat QRIS, biaya yang hangus Rp 425 ditambah biaya transfer keluar, yang bisa lebih besar daripada margin pesanan itu sendiri. Toko yang sering menerima pembatalan pada nominal kecil lebih baik memperbaiki penyebab pembatalannya daripada menyempurnakan prosedur pengembaliannya.
Pesanan yang batal sebagian
Pada QRIS dan Virtual Account tidak ada yang khusus: kembalikan nominal yang disepakati lewat transfer, dan catat sisanya sebagai penjualan yang tetap berjalan. Karena tidak ada jalur otomatis, yang menentukan bukan bentuk permintaannya melainkan catatan: tulis nominal yang dikembalikan dan alasannya pada catatan pesanan, supaya rekap bulanannya tetap bisa dicocokkan dengan ekspor transaksi.
Penyebab paling sering: satu pesanan dibayar dua kali
Pembayaran ganda adalah alasan pengembalian dana yang paling banyak muncul di toko kecil, dan bentuknya hampir selalu sama: satu tautan kedaluwarsa atau dianggap gagal, pembeli minta tautan baru, lalu keduanya dibayar. Dua tautan itu adalah dua pembayaran yang sah, keduanya succeeded, dan yang kedua dikembalikan dengan prosedur yang sama seperti di atas. Sisi sebelum pengembaliannya, yaitu memastikan benar ada dua pembayaran lalu menemukan kedua barisnya, dibahas terpisah di artikel tentang satu pesanan yang dibayar dua kali.
Yang perlu diluruskan sekalian: hanya header Idempotency-Key yang membuat dua permintaan pembuatan dianggap satu. Nomor pesanan sendiri, baik lewat merchant_ref maupun external_id, adalah label yang disimpan dan bisa dicari, bukan klaim bahwa dua permintaan adalah satu pembayaran. Ini mencegah tagihan ganda dari sisi sistem, bukan pembayaran ganda dari sisi pembeli, dan bedanya dibahas di artikel tentang idempotensi.
Tidak ada endpoint refund untuk QRIS dan Virtual Account
Tidak ada endpoint pengembalian dana untuk kedua metode ini. Permintaan refund lewat API pada QRIS maupun Virtual Account ditolak 422 refund_not_supported, jadi jangan menjadikan panggilan API sebagai jalur pengembalian yang dijanjikan ke pembeli. Yang berlaku adalah prosedur transfer manual di atas.
Refund adalah pengembalian atas kemauan penjual sendiri. Pada QRIS dan Virtual Account tidak ada mekanisme yang menarik dana kembali tanpa persetujuan penjual: komplain pembeli datang ke penjual, dan penjual yang memutuskan lalu mentransfer. Panduan menangani sengketa dan komplain pembeli membahas urutan menjawab komplain, dan catatan pesanan yang menentukan hasilnya tetap layak disimpan apa pun metodenya.
Ringkasnya
- QRIS dan Virtual Account kembali lewat transfer manual, tanpa pengecualian.
- Pastikan statusnya
succeededsebelum mengirim apa pun kembali. - Kembalikan nominal bruto, dan minta nomor rekening lewat kanal asal pesanan.
- Biaya per transaksi tidak pernah kembali, jadi setiap pengembalian dana adalah kerugian sebesar biaya itu ditambah biaya transfer keluar.
- Catat pengembaliannya di luar sistem, karena baris pembayarannya tetap
succeededdan ekspornya tidak punya kolom untuk itu.