Panduan pengintegrasian lengkap API QRIS PT MAXIMA SINERGI PRIMA untuk pengembang dan mitra teknis.
1. Gambaran Umum
API QRIS dan Transfer PT MAXIMA SINERGI PRIMA memungkinkan mitra untuk memproses
pembayaran QRIS dan Transfer Dana
(Quick Response Code Indonesian Standard) secara otomatis. Sistem mendukung dua tipe penggunaan QR
Code:
QR Code Dinamis: QR Code sekali pakai untuk transaksi spesifik dengan nominal
pasti.
QR Code Statis: QR Code berulang yang dapat dipindai berkali-kali.
Setiap transaksi terintegrasi dengan mekanisme notifikasi real-time via Callback Webhook
setelah pembayaran dikonfirmasi oleh provider.
2. Autentikasi
Setiap HTTP Request ke sistem API wajib menyertakan kredensial autentikasi pada HTTP Header berikut:
Header
Tipe
Wajib
Keterangan
api_key
String
YA
API Key rahasia yang diberikan oleh admin saat registrasi mitra.
pin
String
YA
PIN keamanan mitra untuk validasi transaksi tambahan.
Content-Type
String
YA
Harus diisi application/json
⚠️
Perhatian Keamanan
Jaga kerahasiaan api_key dan pin Anda. Jangan pernah menyimpan
kredensial di repositori terbuka atau kode sumber di sisi klien (Client-side API Calls).
3. Alur Transaksi
Berikut langkah-langkah lengkap alur integrasi pembayaran QRIS dari sisi mitra:
Buat QRIS: Kirim HTTP POST ke /q4/qris/create membawa nominal,
cust_ref_id unik, dan deskripsi pesanan. Simpan ref_id transaksi dari
response.
Tampilkan QR Code: Ambil string dari field response qrisCode dan
render menjadi gambar QR Code pada UI aplikasi/web Anda. Tampilkan juga waktu
expiredAt.
Pembayaran oleh Pelanggan: Pelanggan memindai QR Code dan menyelesaikan
pembayaran melalui E-Wallet atau Mobile Banking pilihan mereka.
Penerimaan Callback Webhook: Sistem secara otomatis mengirim HTTP POST ke
Callback URL mitra segera setelah status transaksi menjadi PAID.
Verifikasi Status Transaksi (Disarankan): Lakukan pengecekan ganda dengan
memanggil endpoint /q4/qris/query sebelum melakukan fulfillment/pengiriman barang.
💡
Catatan Callback Integration
Callback URL Anda harus dapat diakses secara publik melalui jaringan internet dan wajib
merespons dengan HTTP Status Code 200 OK.
4. API Endpoints QRIS
4.1 Create QRIS
Membuka transaksi baru dan menghasilkan string QR Code untuk pembayaran.
POST/q4/qris/create
Request Body JSON:
Field
Tipe
Wajib
Keterangan
harga
Number
YA
Nominal transaksi (minimal 1). Contoh: 50000
cust_ref_id
String
YA
ID Referensi Unik milik mitra (cth: REQ-20260604-001).
Response Code (00 berarti request berhasil diterima).
message
String
Pesan status.
status
String
Status request (success).
kode_produk
String
Kode Bank Tujuan Transfer.
customer_no
String
Nomor Rekening Tujuan.
nominal
Number
Nominal transfer.
admin_transfer
Number
Biaya admin transfer.
total
Number
Total saldo yang dipotong.
saldo
String
Sisa saldo akun setelah dipotong.
ref_id
String
ID Referensi Unik Mitra.
trx_status
String
Status awal transaksi di sistem (PENDING).
Catatan Penting: Pemrosesan transaksi Transfer saat ini bersifat
Asynchronous. Response di atas hanya menandakan bahwa transaksi Anda telah
sukses masuk antrean dengan status PENDING dan saldo terpotong. Untuk mengetahui
status akhir transaksi (Sukses atau Gagal), sistem kami akan mengirimkannya secara otomatis via
Webhook (Callback Notifikasi).
5.3 Advice Transfer
Mengecek status akhir dari transaksi transfer yang sedang pending.
Daftar kode produk Bank Tujuan yang didukung oleh sistem.
Kode Produk
Nama Bank
Loading data...
6. API Endpoints E-Wallet
E-Wallet menggunakan format dan struktur tabel yang hampir sama dengan Transfer, namun kode produknya
spesifik untuk E-Wallet seperti DANA, GOPAY, OVO, dll.
6.1 Inquiry E-Wallet
Mengecek nama tujuan/pemilik akun e-wallet sebelum melakukan eksekusi pembayaran.
Response Code (00 berarti request berhasil diterima).
message
String
Pesan status.
status
String
Status request (success).
kode_produk
String
Kode e-wallet tujuan.
customer_no
String
Nomor handphone/akun e-wallet tujuan.
nominal
Number
Nominal topup.
admin_transfer
Number
Biaya admin.
total
Number
Total saldo yang dipotong.
saldo
String
Sisa saldo akun setelah dipotong.
ref_id
String
ID Referensi Unik Mitra.
trx_status
String
Status awal transaksi di sistem (PENDING).
Catatan Penting: Sama seperti API Transfer, transaksi E-Wallet ini berjalan
secara Asynchronous. Saldo Anda akan langsung terpotong. Untuk mengetahui
status akhir transaksi (Sukses atau Gagal), pantau kiriman data melalui URL Callback / Webhook
Anda.
6.3 Advice E-Wallet
Digunakan untuk mengecek status akhir transaksi E-Wallet secara manual menggunakan
ref_id.
Daftar kode produk E-Wallet yang didukung oleh sistem.
Kode Produk E-Wallet
Nama E-Wallet
Loading data...
7. API Endpoints Virtual Account
Layanan Virtual Account (VA) memungkinkan mitra menerbitkan nomor rekening virtual
sekali pakai untuk menerima pembayaran dari pelanggan melalui transfer bank (ATM, Mobile Banking,
Internet Banking, atau Teller). Setiap nomor VA terikat pada satu transaksi dengan nominal pasti
(closed amount) dan memiliki masa berlaku.
7.1 Alur Transaksi VA
Buat VA: Kirim HTTP POST ke /q4/va/create dengan
kode_produk (bank), harga, cust_ref_id unik, dan
nama_order. Simpan ref_id dari response.
Tampilkan Nomor VA: Tampilkan nilai field paymentCode (nomor
VA), nama bank, nominal, dan expiredAt kepada pelanggan.
Pembayaran oleh Pelanggan: Pelanggan mentransfer nominal yang tepat ke
nomor VA melalui kanal bank yang dipilih.
Callback Webhook: Sistem mengirim HTTP POST ke Callback URL mitra
segera setelah status transaksi menjadi PAID.
Verifikasi (Disarankan): Panggil /q4/va/query untuk memastikan
status sebelum melakukan fulfillment.
💡
Callback URL yang Digunakan
Notifikasi VA dikirim ke Callback URL yang sama dengan QRIS (callback cash-in)
yang terdaftar pada profil mitra.
7.2 Create VA
Menerbitkan nomor Virtual Account baru untuk sebuah tagihan.
Transaksi Tidak Ditemukan
Jika ref_id tidak ditemukan atau bukan milik mitra Anda, API mengembalikan
HTTP 404 dengan body {"message":"Transaction not found"}.
7.4 Callback Notifikasi VA
Saat pelanggan berhasil membayar, sistem mengirim HTTP POST ke Callback URL mitra dengan
payload berikut:
Idempotensi & Timeout
Callback dikirim dengan timeout 5 detik. Pastikan endpoint mitra merespons cepat dengan HTTP
200 dan memproses callback secara idempoten (callback yang sama dapat diterima
lebih dari sekali). Jika callback tidak diterima, gunakan /q4/va/query.
7.5 Kode Produk VA
Daftar bank Virtual Account yang didukung:
Kode Produk
Nama Bank
MT-VA-BCA
VA BCA
MT-VA-BNI
VA BNI
MT-VA-BRI
VA BRI
MT-VA-MANDIRI
VA MANDIRI
MT-VA-PERMATA
VA PERMATA
MT-VA-CIMB
VA CIMB
💡
Biaya Transaksi VA
Biaya transaksi VA dihitung per transaksi PAID dengan rumus:
(persentase biaya VA × harga) + biaya admin VA. Besaran persentase dan
biaya admin mengikuti kesepakatan kerja sama masing-masing mitra.
8. Response Code
Tabel kode status spesifik yang dikembalikan oleh API:
RC
HTTP Status
Keterangan
2001
200 OK
Transaksi atau Query Berhasil
4021
401 Unauthorized
API Key atau PIN tidak valid, atau Mitra tidak aktif
4031
403 Forbidden
Akses ditolak, IP tidak terdaftar pada Whitelist Mitra
-
422 Unprocessable Entity
Parameter wajib (harga, cust_ref_id, nama_order) tidak diisi
-
409 Conflict
Duplikat cust_ref_id
-
404 Not Found
Transaksi tidak ditemukan (saat Query)
9. Status Pembayaran
Status Code
Deskripsi Transaksi
UNPAID
QRIS telah dibuat, menunggu scan dan pembayaran oleh pelanggan.
PAID
Pembayaran berhasil dikonfirmasi dan dana telah diterima.
10. API Endpoints Akun
10.1 Cek Saldo Transfer
Mengecek sisa saldo transfer yang tersedia pada akun Mitra secara real-time.
GET/account/balance
Request Body: Kosong (Tidak memerlukan payload JSON).