Skip to main content

Bayar Tagihan Pascabayar

Endpoint untuk melakukan pembayaran tagihan setelah inquiry berhasil.

Endpoint: POST /v1/transaction

warning

Gunakan ref_id yang sama dengan saat inquiry. Sesi inquiry berlaku 5 menit — jika habis, ulangi inquiry dari awal.

Parameter Request​

ParameterTipeWajibKeterangan
api_idstring✅API ID
timestampinteger✅Unix timestamp
signaturestring✅HMAC-SHA256 — lihat cara membuat signature
cmdstring✅Harus pay
codestring✅Kode produk (sama dengan saat inquiry)
customer_nostring✅Nomor pelanggan (sama dengan saat inquiry)
ref_idstring✅Ref ID dari response inquiry
voucher_codestring❌Kode voucher diskon yang ingin dipakai, jika ada
testingboolean❌true untuk mode testing. Default: false

Contoh Request​

<?php
header('Content-Type: application/json');

// Lanjutan dari inquiry — gunakan $ref_id yang sudah disimpan
$api_id = 'your_api_id';
$api_key = 'your_api_key';
$secret_key = 'your_secret_key';
$timestamp = time();

// Business params
$businessParams = [
'cmd' => 'pay',
'code' => 'MPBPJS',
'customer_no' => '1234567890',
'ref_id' => $ref_id, // dari response inquiry
'testing' => true, // Opsional, untuk mode testing (tidak memproses transaksi nyata)
// 'voucher_code' => 'DISKON10RB', // Opsional, kode voucher diskon
];

// Urutkan A ke Z (ksort)
ksort($businessParams);

$canonicalBody = json_encode($businessParams, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$bodyHash = hash('sha256', $canonicalBody);
$stringToSign = implode('|', [$api_id, $api_key, $timestamp, $bodyHash]);
$signature = hash_hmac('sha256', $stringToSign, $secret_key);

$payload = array_merge($businessParams, [
'api_id' => $api_id,
'timestamp' => $timestamp,
'signature' => $signature,
]);

$ch = curl_init('https://api.isikuota.com/v1/transaction');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
]);
$response = json_decode(curl_exec($ch), true);
// print_r($response);
echo json_encode($response, JSON_PRETTY_PRINT);

Contoh Response​

{
"success": true,
"code": "BILL_PAYMENT_SUCCESS",
"message": "Pembayaran tagihan berhasil",
"data": {
"ref_id": "INQ-001",
"status": "success",
"customer_no": "08123456789",
"customer_name": "Demo Member",
"code": "MPBPJS",
"tagihan": 22500,
"admin": 2700,
"total": 25200,
"sn": "S1234554321N",
"desc": {
"jumlah_peserta": "2",
"lembar_tagihan": 1,
"alamat": "JAKARTA PUSAT",
"detail": [{ "periode": "01" }]
},
"created_at": "2026-05-31 10:41:16"
},
"errors": null,
"meta": null
}
code ≠ hasil akhir pembayaran

code: BILL_PAYMENT_SUCCESS (success: true) berarti request berhasil diproses — baca data.status untuk hasil pembayaran sebenarnya (success/pending/failed, sama seperti Order Prabayar). success: false (code: BILL_PAYMENT_FAILED) hanya muncul jika request ditolak sebelum diproses, dan pada kasus itu data selalu null.

Field Response​

FieldTipeKeterangan
ref_idstringID referensi transaksi
statusstringStatus pembayaran (success / pending / failed)
customer_nostringNomor pelanggan
customer_namestringNama pelanggan
codestringKode produk
tagihanintegerNilai tagihan sebelum admin (Rp)
adminintegerBiaya admin (Rp)
totalintegerTotal yang dibayarkan (Rp)
snstring/nullSerial number bukti bayar (null jika masih pending)
descobjectDetail tagihan
created_atstringWaktu transaksi dibuat
voucher_discount_amountintegerHanya muncul jika voucher_code dengan tipe DISCOUNT dipakai — nominal potongan (Rp)
net_priceintegerHanya muncul bersamaan voucher_discount_amount — nominal saldo yang benar-benar terpotong (total - voucher_discount_amount)