QRIS, Virtual Account, e-wallet, dan standar SNAP Bank Indonesia, dijelaskan untuk developer yang memasangnya ke aplikasi. Setiap aturan dan tanggal di sini dicek langsung ke Bank Indonesia, ASPI, dan dokumentasi resmi tiap gateway.
Oleh Matthews WongDiriset pada
Poin utama
Menurut data Bank Dunia 2021, kartu kredit hanya dimiliki 1,6 persen orang dewasa Indonesia, jadi aplikasi untuk pasar Indonesia mengutamakan QRIS, Virtual Account, dan e-wallet, lewat gateway berizin atau API bank berbasis standar SNAP Bank Indonesia. Konfirmasi pembayaran hanya dari webhook terverifikasi, simpan rupiah sebagai integer, dan perhatikan aturan MDR QRIS yang berubah pada 1 Oktober 2026.
QRIS adalah standar QR nasional Bank Indonesia. BI meluncurkannya pada 17 Agustus 2019 dan mewajibkan semua QR Code pembayaran memakai QRIS mulai 31 Desember 2019. Satu kode bisa dibayar dari aplikasi bank atau e-wallet mana pun yang terdaftar sebagai penerbit, dengan sumber dana berupa simpanan, kartu debet atau kredit, fasilitas kredit, atau uang elektronik, maksimal Rp10.000.000 per transaksi. Pada Merchant Presented Mode (MPM), pelangganlah yang memindai: QRIS statis dicetak sekali dan pelanggan mengetik nominalnya sendiri, sedangkan QRIS dinamis dibuat setelah merchant memasukkan nominal. Untuk aplikasi, pilih yang dinamis, karena setiap kode membawa nilai satu pesanan.
Virtual Account adalah andalan berikutnya: pelanggan mentransfer ke nomor yang diterbitkan khusus untuk pembayaran itu, lewat mobile banking, internet banking, atau ATM. E-wallet seperti GoPay, OVO, DANA, dan ShopeePay disetujui di dalam aplikasi dompetnya setelah redirect atau deeplink. Kartu hanya dipakai segelintir orang. Data Bank Dunia mencatat kepemilikan kartu kredit hanya 1,6 persen orang dewasa Indonesia pada 2021, dan Kartu Kredit Indonesia yang diluncurkan BI bersama ASPI pada 17 Agustus 2026 pun dibelanjakan lewat QRIS, dengan scan atau tap.
SNAP, Standar Nasional Open API Pembayaran, diatur dalam PADG 23/15/PADG/2021 yang ditetapkan pada 16 Agustus 2021. Cakupannya interkoneksi dan interoperabilitas, standar keamanan sistem informasi, tata kelola, dan manajemen risiko Open API Pembayaran, dengan spesifikasi untuk kategori registrasi, informasi saldo, informasi riwayat transaksi, transfer kredit, dan transfer debit. Penyedia Layanan wajib memindahkan API yang sudah berjalan ke SNAP paling lambat 30 Juni atau 31 Desember 2022, tergantung apakah mereka ikut menyusun standarnya, lalu mengintegrasikan pengguna layanannya paling lambat 30 Juni 2024, sedangkan UMKM dan lembaga nirlaba paling lambat 30 Juni 2025. Sejak 1 September 2023, pengelolaan SNAP dan Developer Site-nya dipegang ASPI.
Di kode, SNAP mudah dikenali. Spesifikasi Virtual Account dari ASPI mengelompokkan layanannya di bawah path transfer-va yang berversi (create-va, inquiry, payment, status), memakai header seperti X-TIMESTAMP, X-SIGNATURE, X-PARTNER-ID, X-EXTERNAL-ID, dan CHANNEL-ID, dan menyusun response code tujuh digit dari HTTP status, service code, dan case code, sehingga 2002400 berarti inquiry VA berhasil. Dokumentasi DOKU menunjukkan langkah signing-nya: HMAC-SHA512 dengan client secret sebagai kunci, atas method, path, access token, SHA-256 dari body yang di-minify, dan timestamp. Anda baru perlu menulis semua ini sendiri bila mengintegrasikan API SNAP milik bank atau endpoint SNAP milik gateway.
BI mewajibkan setiap Penyedia Jasa Pembayaran dan Lembaga Switching yang memproses transaksi QRIS memperoleh persetujuannya lebih dulu, jadi aplikasi merchant terhubung lewat acquirer atau gateway berizin, bukan bergabung langsung ke jaringannya. Xendit, Midtrans, dan DOKU masing-masing menyatukan QRIS, Virtual Account, e-wallet, dan kartu di balik satu API dan satu endpoint notifikasi. Integrasi langsung ke bank lewat SNAP cocok bagi bisnis yang sudah menjadi nasabah bank tersebut, dengan konsekuensi satu integrasi, satu set kredensial, dan satu siklus pengujian untuk setiap bank.
Harga QRIS diatur regulasi. Menurut BI, MDR ditanggung merchant dan tidak boleh dibebankan kepada konsumen. Dalam tabel yang berlaku sejak Maret 2025, usaha mikro dikenai 0% hingga Rp500.000 dan 0,3% di atasnya, merchant reguler lain 0,7%, pendidikan 0,6%, dan SPBU 0,4%. Mulai 1 Oktober 2026, BI memperluas MDR 0% ke usaha kecil, menengah, dan besar untuk transaksi hingga Rp100.000. Halaman QRIS BI masih menampilkan 0,7% rata untuk kategori itu saat dicek pada 12 Oktober 2026, jadi simpan kategori merchant dan ambang batasnya di konfigurasi, bukan di kode. Biaya gateway per metode pembayaran ada di halaman perbandingan biaya.
Konfirmasi pembayaran selalu asinkron, dan setiap gateway mengakui adanya notifikasi ganda. Midtrans menandatangani setiap notifikasi dengan SHA512 dari order_id, status_code, gross_amount, dan server key, mengulang pengiriman yang gagal paling banyak lima kali dalam rentang sekitar 2 hingga 210 menit, dan mengingatkan bahwa notifikasi settlement bisa tiba sebelum notifikasi pending. Xendit mengautentikasi lewat header x-callback-token, mengulang hingga enam kali dengan exponential backoff, dan tidak menjamin urutan. Aturan umumnya: verifikasi pengirim, balas 2xx secepatnya, dan buat pemrosesan idempoten berdasarkan ID pembayaran atau order dari provider.
Rekonsiliasi adalah pekerjaan tersendiri, karena dana masuk setelah webhook. Xendit mencantumkan settlement QRIS pada T+1 hari kerja dan mencatat bahwa refund QRIS bergantung pada penerbitnya: GoPay hanya menerima refund penuh. Pelanggan umumnya bisa mengajukan sengketa QRIS lewat penerbitnya dalam 90 hari. Simpan referensi provider di baris invoice agar setiap baris settlement bisa dicocokkan.
QRIS dan Virtual Account adalah pembayaran push: pelanggan yang memulai setiap transfer, dan Xendit menandai keduanya tidak mendukung merchant-initiated transaction. Tagihan terjadwal butuh instrumen yang sudah di-tokenisasi. Kartu memenuhi syarat, begitu juga e-wallet yang sudah ditautkan: Xendit mencantumkan pembayaran tersimpan yang bisa dipicu merchant untuk OVO, DANA, ShopeePay, dan channel GoPay recurring yang memerlukan aktivasi tambahan. Subscription API Midtrans hanya menerima credit_card dan gopay dalam IDR, dan secara default mencoba ulang tagihan yang gagal tiga kali dengan jeda satu jam. DOKU mendokumentasikan skema direct debit recurring untuk BRI.
Pelanggan lainnya memperpanjang lewat invoice: QRIS atau Virtual Account baru di setiap siklus, dikirim sebelum periode berakhir, dan webhook-lah yang memperpanjang akses. Modelkan status past due dan masa tenggang secara eksplisit, karena kegagalan yang paling umum adalah pelanggan yang belum membayar, bukan penolakan kartu yang bisa dicoba ulang.
Provider tidak seragam dalam menuliskan nominal. Midtrans mendefinisikan gross_amount sebagai integer di skema request, tetapi mengembalikannya sebagai string dua desimal seperti 275000.00. Xendit memublikasikan rentang nominal per channel, dari Rp1 sampai Rp10.000.000 untuk QRIS. Simpan rupiah sebagai integer, parse setiap string dari provider secara eksplisit di batas sistem, dan pisahkan nominal bruto, biaya, dan nominal settlement ke kolom masing-masing, karena jumlah yang masuk tidak akan sama dengan total invoice.
| Metode | Cara pelanggan membayar | Yang ditangani backend Anda | Bisa ditagih tanpa pelanggan? | Batas nominal dan settlement (angka publikasi Xendit) |
|---|---|---|---|---|
| QRIS (dinamis, Merchant Presented Mode) | Memindai kode dengan aplikasi bank atau e-wallet mana pun yang terdaftar sebagai penerbit QRIS | Meminta QR dari gateway, menampilkannya, mengonfirmasi pembayaran lewat webhook | Tidak. Pelanggan menyetujui setiap pembayaran | Batas Bank Indonesia Rp10.000.000 per transaksi; settlement T+1 hari kerja |
| Virtual Account (transfer bank) | Mentransfer ke nomor rekening yang diterbitkan, lewat mobile banking, internet banking, atau ATM | Membuat nomor VA dan menunggu notifikasi pembayaran; SNAP mendefinisikan API VA di sisi bank | Tidak. Nomor VA bisa dipakai ulang, tetapi pelanggan tetap mengirim setiap transfer | VA BCA: Rp10.000 sampai Rp50.000.000; settlement T+1 hari kerja |
| E-wallet (GoPay, OVO, DANA, ShopeePay) | Menyetujui di aplikasi dompet setelah redirect atau deeplink; OVO juga lewat push notification | Membuat payment request lalu redirect, atau menautkan akun sekali dan menyimpan token-nya | Bisa, setelah akun ditautkan; channel GoPay recurring perlu aktivasi tambahan | Hingga Rp20.000.000 (OVO, DANA, ShopeePay) atau Rp50.000.000 (GoPay recurring); T+1 sampai T+2 hari |
| Kartu (kredit atau debit) | Memasukkan data kartu dan menyelesaikan autentikasi dari penerbit | Men-tokenisasi kartu pada pembayaran pertama, lalu menagih token yang tersimpan | Bisa, setelah kartu di-tokenisasi | Rp5.000 sampai Rp200.000.000; settlement T+2 hari kerja |
| Direct debit (rekening bank yang ditautkan) | Menautkan kartu debit atau rekening sekali, lalu mengonfirmasi pembayaran dengan OTP atau PIN | Menautkan akun, menyimpan token, menagih melalui provider | Hanya dengan skema recurring: DOKU mencantumkan BRI; bank lain di DOKU meminta OTP atau PIN setiap kali | Tidak tercantum di Xendit untuk Indonesia; DOKU mendokumentasikan Allo Bank, BRI, dan CIMB |
| Gerai ritel (Alfamart, Indomaret) | Membayar tunai di kasir dengan kode pembayaran | Membuat kode dan menunggu notifikasi pembayaran | Tidak | Alfamart: Rp10.000 sampai Rp5.000.000; kode berlaku 48 jam; settlement T+5 hari kerja |
Perubahan bertanggal yang harus ditindaklanjuti developer, dari yang terlama, masing-masing ditautkan ke sumber resminya.
Semua QR Code pembayaran wajib mengikuti QRIS mulai 31 Desember 2019, sehingga satu kode bisa dibayar dari aplikasi penerbit mana pun yang terdaftar.
Sumber:Bank Indonesia: Quick Response Code Indonesian Standard (QRIS)Penyedia Jasa Pembayaran wajib memindahkan API yang sudah berjalan ke SNAP paling lambat 30 Juni atau 31 Desember 2022 dan mengintegrasikan pengguna layanannya paling lambat 30 Juni 2024, sehingga API pembayaran bank kini memakai satu kontrak signing dan response code.
Sumber:Bank Indonesia: PADG 23/15/PADG/2021 on the national payment Open API standardTransfer kredit antarbank real-time berjalan 24/7, diawali dengan transfer individu, yang relevan untuk refund dan payout yang keluar lewat transfer bank.
Sumber:Bank Indonesia: BI Launches Bank Indonesia Fast Payment (23/334/DKom)Nasabah lembaga peserta bisa membayar dengan memindai QRIS atau DuitNow QR di kedua negara.
Sumber:Bank Negara Malaysia: Commercial launch of the Indonesia-Malaysia cross-border QR payment linkageASPI kini mengelola Developer Site SNAP, verifikasi, dan pembaruan standarnya, sehingga dokumen spesifikasi terbaru dipublikasikan di sana, bukan di bi.go.id.
Sumber:Bank Indonesia: Mulai 1 September 2023 Pengelolaan SNAP Dilakukan oleh ASPI (25/240/DKom)Nasabah lembaga peserta memindai QRIS atau NETS QR dengan aplikasi mobile banking yang sudah mereka pakai, di kedua negara.
Sumber:Bank Indonesia: Launch of Cross-border QR Payments Linkage between Indonesia and Singapore (25/310/DKom)BI menetapkan tanggal ini untuk peluncuran QRIS Tap, pembayaran NFC tanpa pindai, sekaligus menurunkan skema harga QRIS untuk merchant BLU dan PSO dari 0,4% menjadi 0%.
Sumber:Bank Indonesia: Siaran Pers Hasil RDG Februari 2025 (27/36/DKom)Kartu kredit yang diproses di dalam negeri, diterbitkan delapan penyelenggara saat peluncuran, dibelanjakan lewat QRIS dengan scan atau tap, sehingga sampai ke merchant melalui penerimaan QRIS yang sudah ada.
Sumber:Bank Indonesia: Indonesia Credit Card and 0% MDR Policy (28/159/DKom)Usaha kecil, menengah, dan besar dikenai 0% untuk transaksi QRIS hingga Rp100.000, turun dari 0,7%, sementara usaha mikro tetap 0% hingga Rp500.000. Pengecekan biaya yang diharapkan dalam rekonsiliasi perlu memakai ambang batas baru ini.
Sumber:Bank Indonesia: Indonesia Credit Card and 0% MDR Policy (28/159/DKom)Masing-masing adalah catatan praktis dari masalah yang pernah saya kerjakan. Mulailah dari yang paling sesuai dengan kondisi Anda.
Jawaban singkat, sesuai dengan sumber di halaman ini per tanggal riset.
Sumber primer yang diperiksa pada tanggal riset. Ikuti tautannya untuk versi terbaru.
Hub lain, halaman referensi, dan kalkulator di bagian ini.