Blog · 24 Agustus 2026
Cara tahu pembayaran QRIS sudah masuk, tanpa cek mutasi manual
Pola yang sama terjadi di banyak usaha kecil dan komunitas: kode QR dipasang, pembayar bilang sudah bayar, lalu penjual membuka aplikasi mobile banking dan menelusuri mutasi satu per satu. Kalau nominalnya kebetulan sama dengan pembayaran lain, mulai tebak-tebakan. Kalau mutasinya belum muncul, minta tangkapan layar bukti transfer, yang juga harus dicek kebenarannya.
Cara itu masih bisa jalan selama transaksinya sedikit. Begitu pembayaran mulai ramai, atau begitu yang menagih bukan orang yang memegang rekening, cek manual menjadi titik macet: lambat, rawan salah cocok, dan bergantung pada satu orang.
Kenapa cek mutasi tidak bisa jadi sistem
Masalah dasarnya: mutasi rekening mencatat uang masuk, bukan tagihan mana yang dibayar. Dua pembayaran dengan nominal sama terlihat identik. Pembayaran yang masuk malam hari baru dicek esok pagi. Tangkapan layar bukti transfer mudah diedit, dan memeriksanya satu per satu tetap kerja manual. Selama pencocokan dilakukan di kepala orang, setiap transaksi baru menambah beban, bukan sekadar menambah pemasukan.
Prinsipnya: satu permintaan pembayaran per tagihan
Supaya status bisa dipastikan mesin, arahnya dibalik: bukan satu rekening yang menampung semua pembayaran, melainkan satu permintaan pembayaran untuk setiap tagihan. Setiap permintaan punya nominal, identitas, dan statusnya sendiri, jadi pertanyaan “yang ini sudah dibayar atau belum” selalu punya jawaban pasti, tanpa menebak dari mutasi.
Di Kasera Pay, bentuknya dua, mengikuti pembagian open payment dan closed payment yang umum di payment gateway:
- Tautan checkout (closed payment): nominal ditentukan penjual, satu tautan untuk satu transaksi. Dibuat dari dashboard atau lewat API.
- Halaman pembayaran (open payment): nominal ditentukan pembayar dan halamannya bisa dipakai berulang, misalnya untuk iuran komunitas atau donasi. Setiap pembayaran tetap tercatat sebagai transaksi tersendiri.
Statusnya sederhana: pending saat menunggu, succeeded saat pembayaran terkonfirmasi, expired saat lewat batas waktu tanpa dibayar. Status yang tampil di dashboard dan yang dikembalikan API selalu sama, jadi kasir, bendahara, dan sistem membaca satu sumber yang sama.
Tanpa integrasi: cukup dashboard
Untuk yang tidak menulis kode, alurnya berhenti di sini: buat tautan checkout dari dashboard, kirim ke pembayar, lalu pantau statusnya di daftar transaksi. Begitu status berubah menjadi succeeded, pembayaran itu pasti sudah terkonfirmasi. Tidak perlu membuka mutasi, dan tidak perlu meminta bukti transfer.
Dengan integrasi: webhook, bukan polling mutasi
Untuk developer, konfirmasi datang sebagai event payment.paid yang dikirim ke satu URL webhook saat pembayaran terkonfirmasi. Beberapa detail yang penting untuk sistem yang mengandalkan status pembayaran:
- Bertanda tangan. Setiap pengiriman ditandatangani HMAC-SHA256 atas body mentah, di header
Kasera-Signature, jadi endpoint bisa memastikan event benar-benar berasal dari Kasera Pay sebelum memproses isinya. - At-least-once. Event yang sama bisa terkirim lebih dari sekali dan selalu membawa id yang sama, jadi dedupe berdasarkan id event. Kalau endpoint sempat tumbang, pengiriman dicoba ulang dengan exponential backoff hingga sekitar 34 jam.
- Bisa dicek ulang kapan saja. Status terbaru selalu bisa diambil lewat GET /v1/transactions/{id}, untuk rekonsiliasi atau sekadar memastikan.
- Tidak dobel dari sisi pembuatan. Permintaan pembayaran dibuat dengan header Idempotency-Key, jadi permintaan yang terkirim dua kali karena jaringan tidak menjadi dua tagihan.
Detail payload dan contoh verifikasi signature ada di dokumentasi webhook.
Ringkasnya
Cek mutasi manual gagal karena mencocokkan uang ke tagihan lewat ingatan orang. Satu permintaan pembayaran per tagihan membalik itu: status succeeded per transaksi, sama di dashboard dan API, dengan webhook bertanda tangan untuk sistem yang perlu bereaksi otomatis. Pendaftaran di pay.kasera.id terbuka, dengan peninjauan manual untuk setiap akun baru. Untuk perbandingan dengan payment gateway multi-channel, lihat artikel alternatif TriPay.