Blog · 27 Agustus 2026
Bukti transfer palsu: cara kerjanya, dan cara menutup celahnya
Tangkapan layar bukti transfer tidak membuktikan uang sudah masuk. Yang dibuktikan hanya bahwa ada gambar di perangkat pengirim. Selisih antara dua hal itu adalah seluruh masalahnya, dan setiap bentuk penipuan di bawah ini bekerja persis di celah tersebut.
Jalan keluarnya bukan belajar membedakan struk asli dari struk palsu, karena tiga dari enam bentuk berikut memakai struk yang memang asli. Jalan keluarnya adalah mengganti pertanyaannya, dari “apakah bukti ini asli” menjadi “apa status pembayaran untuk pesanan ini”. Pertanyaan kedua punya jawaban yang tidak dipegang pembeli.
Enam bentuk yang benar-benar dipakai
- Gambar hasil sunting. Struk aplikasi bank punya tata letak tetap, jadi mengganti nominal, nama penerima, dan jam hanya soal menimpa teks pada gambar. Ada pula pembuat struk otomatis yang menghasilkan gambar utuh tanpa perlu menyunting apa pun. Bentuk ini yang paling banyak dibicarakan, dan justru yang paling mudah ditutup.
- Struk transfer terjadwal. Struknya asli: aplikasi bank benar-benar mengeluarkan konfirmasi untuk transfer yang dijadwalkan. Uang belum berpindah, dan jadwalnya bisa dibatalkan sebelum tanggal eksekusi. Penanda satu-satunya adalah kata terjadwal atau tanggal eksekusi yang jatuh di masa depan, dan keduanya dicetak kecil.
- Transfer ke rekening lain. Struk asli, nominal benar, jam benar, hanya nomor rekening tujuannya bukan milik penjual. Bagian itulah yang paling jarang dibaca ulang, karena mata langsung lompat ke angka nominal.
- Satu digit yang hilang. Struk asli senilai Rp 85.000 dikirimkan untuk tagihan Rp 850.000. Urutan angkanya mirip, dan pemeriksaan sekilas di sela melayani pembeli lain hampir selalu lolos.
- Struk lama yang dipakai ulang. Transaksi sungguhan dari pekan lalu, dikirim lagi untuk pesanan baru dengan nominal yang kebetulan sama. Tanpa membaca tanggal, dua gambar itu identik.
- Notifikasi yang menyerupai notifikasi bank. Bukan struk, melainkan tangkapan layar SMS atau pesan masuk yang meniru format pemberitahuan bank, lengkap dengan nama pengirim yang menyerupai nama bank. Tidak ada satu pun bagian dari gambar itu yang berasal dari bank.
Kenapa cek mutasi manual belum menutup celahnya
Membuka mutasi rekening adalah refleks yang benar, dan sudah menghentikan bentuk pertama, kedua, dan keenam. Tiga kelemahannya muncul justru saat penjualan sedang ramai:
- Jeda. Mutasi butuh waktu untuk muncul, sementara tekanan mengirim barang datang lebih dulu. Pembeli menunggu balasan, kurir sudah dijadwalkan, dan keputusan diambil sebelum datanya ada.
- Tabrakan nominal. Dua pembeli mengirim Rp 150.000 dalam sepuluh menit yang sama. Mutasi menampilkan dua baris yang tidak bisa dibedakan, dan tidak ada informasi apa pun di sana yang menentukan baris mana milik pesanan mana.
- Nama pengirim yang berbeda. Transfer dari rekening pasangan, orang tua, atau teman sekantor adalah hal biasa, jadi nama di mutasi tidak bisa dijadikan penentu kepemilikan pesanan.
Trik kode unik tiga digit, yaitu meminta pembeli menambahkan angka kecil pada nominal transfer, menutup tabrakan nominal dengan biaya nol. Yang tidak ditutupnya: jeda mutasi tetap ada, pembeli sering lupa menambahkan kodenya, dan cara ini tidak berlaku pada pembayaran QRIS yang nominalnya sudah melekat pada kode.
Yang menutupnya: satu status per pesanan
Penutup celahnya adalah membuat satu permintaan pembayaran untuk setiap pesanan, lalu memperlakukan statusnya sebagai satu-satunya penentu. Status bernilai pending sejak dibuat, berubah menjadi succeeded ketika pembayaran terkonfirmasi, dan berakhir sebagai expired, canceled, atau failed bila tidak. Tidak ada nilai yang bisa dipengaruhi oleh gambar yang dikirim pembeli.
Dua sifat teknisnya menghapus kelemahan tadi. QRIS dinamis membawa nominal di dalam kodenya, sehingga dua pembayaran bernilai sama tetap terhubung ke pesanan yang berbeda dan tabrakan nominal hilang. Nomor Virtual Account yang dipakai untuk satu tagihan bekerja dengan cara yang sama. Perbedaan model ini dibahas lengkap di open payment dan closed payment, termasuk kenapa satu kode QRIS statis yang dipakai bersama mengembalikan seluruh pekerjaan pencocokan ke mutasi rekening.
Sifat kedua adalah arah pemberitahuannya. Konfirmasi datang sendiri lewat webhook payment.paid begitu pembayaran terkonfirmasi, jadi tidak ada lagi jeda antara uang masuk dan penjual mengetahuinya. Cara memastikannya tanpa membuka mutasi sama sekali dibahas di cara tahu pembayaran QRIS sudah masuk. Kalau status per transaksi sudah ada tetapi pembeli tetap bersikeras sudah membayar, urutan pemeriksaannya dibahas pada artikel pembayaran yang menurut pembeli sudah dilakukan.
Tiga celah yang tersisa di sisi kode
Integrasi yang sudah memakai status pun masih bisa membuka pintu yang sama. Tiga kesalahan ini yang paling sering terjadi:
- Mempercayai redirect. Setelah pembayaran, halaman checkout mengembalikan pembeli ke
return_urldengan tambahan?id=payreq_...&status=succeeded. Itu string di browser pembeli, dan siapa pun bisa mengetiknya sendiri tanpa membayar. Redirect hanya untuk tampilan. Penentunya adalah pemanggilan endpoint ambil permintaan pembayaran dari server, atau webhook. - Tidak memverifikasi tanda tangan. Setiap pengiriman webhook ditandatangani HMAC-SHA256 atas timestamp dan body mentah, di header
Kasera-Signature-V1. Yang ditandatangani adalah body mentah apa adanya, bukan hasil serialisasi ulang setelah di-parse, dan perbandingannya perlu konstan waktu. Endpoint tanpa verifikasi menerima payload palsu dari siapa saja yang tahu URL-nya. Contoh kodenya ada di halaman webhook. - Tidak menangani pengiriman ulang. Id event ada di
Kasera-Event-Idsupaya event yang sama bisa dikenali saat dikirim ulang. Memproses dua kali berarti mengirim barang dua kali, dan itu kerugian yang bentuknya sama persis dengan penipuan meski penyebabnya bukan.
Satu pemeriksaan tambahan yang murah: cocokkan amount pada payload dengan nilai tagihan di basis data sendiri sebelum bertindak, dan tolak bila berbeda. Itu menutup bentuk keempat, satu digit yang hilang, di lapisan yang tidak pernah lelah.
Untuk penjual tanpa website
Semua di atas bisa dijalankan tanpa satu baris kode. Buat tautan pembayaran per pesanan dari dashboard, kirim tautannya lewat chat, lalu tunggu status pesanan itu berubah di dashboard. Aturannya cukup satu kalimat, dan seluruh isi artikel ini bermuara ke sana: barang dikirim setelah status berubah, bukan setelah gambar diterima.
Aturan itu juga menghilangkan percakapan yang paling melelahkan dalam jualan online, yaitu menawar keabsahan sebuah tangkapan layar. Tidak ada lagi yang perlu diperdebatkan, karena yang dibaca penjual bukan kiriman pembeli. Hitungan kapan perpindahan itu sepadan, untuk penjual yang hari ini memakai formulir pesanan dan transfer manual, ada di perbandingan Google Form dan transfer manual dengan tautan pembayaran.
Apa yang sebenarnya dibuktikan tiap bukti
| Yang diterima penjual | Yang benar-benar dibuktikan |
|---|---|
| Tangkapan layar struk | Ada sebuah gambar di perangkat pengirim |
| Struk transfer terjadwal | Ada perintah transfer, belum tentu ada eksekusi |
| Tangkapan layar notifikasi | Ada pesan masuk, tanpa jaminan asal |
| Baris mutasi rekening | Ada uang masuk, tanpa penanda pesanan mana |
Status succeeded pada permintaan pembayaran | Uang untuk tagihan itu sudah terkonfirmasi masuk |
Kalau sudah terlanjur terjadi
- Hentikan pengiriman lebih dulu, termasuk yang sudah dijadwalkan ke kurir.
- Periksa mutasi rekening dari aplikasi bank sendiri, bukan dari gambar apa pun yang dikirimkan pembeli, dan cocokkan nomor rekening tujuan serta tanggalnya.
- Simpan seluruh percakapan, nomor rekening, dan nomor kontak sebelum pesan sempat dihapus.
- Laporkan ke bank penerima dan ke kepolisian bila barang sudah terkirim, dengan bukti percakapan tadi.
- Jangan menerima bukti tambahan sebagai alasan melanjutkan pengiriman. Bentuk yang sama biasanya diulang pada penjual berikutnya, bukan diperbaiki.
Ringkasnya
Bukti transfer palsu bertahan karena penjual diminta menilai gambar yang dikendalikan pihak yang paling berkepentingan agar gambar itu dipercaya. Selama keputusan mengirim barang bergantung pada gambar, kemampuan menyunting akan selalu lebih cepat daripada kemampuan memeriksa. Memindahkan keputusan ke status permintaan pembayaran menghapus seluruh kategori masalah ini sekaligus, bukan satu per satu bentuknya.
Sisi sebaliknya perlu disebut juga, karena pembeli menghadapi risiko yang berbeda dan kadang menjawabnya dengan meminta rekening bersama. Risiko siapa yang sebenarnya sedang ditutup oleh masing-masing susunan itu dibahas di perbandingan rekening bersama dan pembayaran langsung.
Bukti palsu biasanya hanya salah satu dari beberapa hal yang mulai rusak bersamaan ketika pembayaran usaha masuk ke rekening pribadi, dan daftar lengkapnya beserta tanda bahwa titiknya sudah lewat ada di artikel jualan pakai rekening pribadi.
Untuk penjual perorangan yang belum punya badan usaha, syarat verifikasi, biaya, dan batas default yang berlaku sebelum semua ini bisa dijalankan ada di panduan payment gateway tanpa PT.