Developer Console
Infrastruktur API untuk pengiriman produk digital prabayar paling efisien di Indonesia.
Authentication
Kirimkan merchantId dan secretKey dalam body JSON untuk setiap permintaan API.
{
"merchantId": "CT-XXXXXX",
"secretKey": "CT-Key-XXXXXX"
}/v1/price-listPrice List
Sinkronisasi katalog secara real-time. Harga yang dikembalikan sudah termasuk margin sesuai tier akun Anda.
curl -X POST https://ciaatopup.com/v1/price-list -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\"}"{
"status": true,
"data": [
{
"code": "xld25",
"name": "XL Data 25GB",
"category": "Data",
"brand": "XL",
"price": 24500,
"admin_fee": 1000,
"status": "Available"
}
],
"account": {
"tier": "Reseller",
"applied_margin": "2%"
}
}/v1/depositRequest Deposit
Otomatisasi pengisian saldo via QRIS dinamis. Saldo akan otomatis bertambah setelah QRIS dibayar tepat sesuai nominal.
Tiket dibuat langsung sebagai QRIS dinamis DANA Bisnis — cukup kirim nominal, tidak perlu memilih channel apa pun.
curl -X POST https://ciaatopup.com/v1/deposit -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\",\"nominal\":50000}"{
"status": true,
"message": "Tiket deposit berhasil dibuat.",
"data": {
"orderId": "DEP-1710000000000",
"total": 50450,
"qrDataUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEU..."
}
}/v1/orderCreate Order
Eksekusi transaksi topup digital. Pastikan saldo mencukupi sebelum mengirimkan permintaan.
curl -X POST https://ciaatopup.com/v1/order -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\",\"buyer_sku_code\":\"xld25\",\"customer_no\":\"087800001233\",\"ref_id\":\"unique_trx_123\"}"{
"status": true,
"data": {
"ref_id": "unique_trx_123",
"status": "Success",
"sn": "10029388123901",
"price": 24500,
"tier": "Reseller",
"discount": "2%"
}
}/v1/statusStatus Transaksi
Cek status akhir sebuah order prabayar berdasarkan ref_id, berguna untuk polling transaksi yang statusnya masih pending.
curl -X POST https://ciaatopup.com/v1/status -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\",\"ref_id\":\"unique_trx_123\"}"{
"status": true,
"data": {
"ref_id": "unique_trx_123",
"status": "Success",
"sn": "10029388123901",
"price": 24500
}
}/v1/inquiry-pascaCek Tagihan
Ambil rincian tagihan pascabayar (PLN, PDAM, BPJS, dll) sebelum dibayarkan ke pelanggan. Simpan ref_id dari response ini untuk dipakai di Bayar Tagihan.
curl -X POST https://ciaatopup.com/v1/inquiry-pasca -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\",\"buyer_sku_code\":\"pln\",\"customer_no\":\"530000012345\"}"{
"status": true,
"data": {
"customer_no": "530000012345",
"customer_name": "BUDI SANTOSO",
"biller_name": "PLN Postpaid",
"period": "07/2026",
"amount": 350500,
"admin_fee": 2500
}
}/v1/payment-pascaBayar Tagihan
Eksekusi pembayaran tagihan pascabayar. Pakai ref_id yang sama persis dari response Cek Tagihan — ref_id ini hanya berlaku sekali dan tidak expired sampai dibayar.
curl -X POST https://ciaatopup.com/v1/payment-pasca -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\",\"buyer_sku_code\":\"pln\",\"customer_no\":\"530000012345\",\"ref_id\":\"unique_trx_124\"}"{
"status": true,
"data": {
"ref_id": "unique_trx_124",
"status": "Success",
"sn": "20250728PLN001",
"price": 353000
}
}/v1/deposit/statusStatus Deposit
Cek apakah tiket deposit QRIS yang dibuat lewat Request Deposit sudah dibayar atau masih menunggu.
curl -X POST https://ciaatopup.com/v1/deposit/status -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\",\"orderId\":\"DEP-1710000000000\"}"{
"status": true,
"data": {
"orderId": "DEP-1710000000000",
"status": "Paid",
"paidAt": "2026-07-28T12:00:00Z"
}
}/v1/deposit/cancelCancel Deposit
Batalkan tiket deposit yang belum dibayar, misalnya karena nominal salah input. Tidak bisa dipakai kalau deposit sudah Paid.
curl -X POST https://ciaatopup.com/v1/deposit/cancel -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\",\"orderId\":\"DEP-1710000000000\"}"{
"status": true,
"message": "Deposit dibatalkan."
}/v1/transfer/bank-listList Bank
Ambil daftar bank & e-wallet tujuan yang didukung untuk fitur Withdraw, lengkap dengan kode bank-nya. Dipakai untuk validasi bank_code sebelum Create Withdraw.
curl -X POST https://ciaatopup.com/v1/transfer/bank-list -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\"}"{
"status": true,
"data": [
{
"code": "BCA",
"name": "Bank Central Asia"
},
{
"code": "MANDIRI",
"name": "Bank Mandiri"
},
{
"code": "BNI",
"name": "Bank Negara Indonesia"
},
{
"code": "BRI",
"name": "Bank Rakyat Indonesia"
},
{
"code": "DANA",
"name": "DANA E-Wallet"
},
{
"code": "OVO",
"name": "OVO E-Wallet"
}
]
}/v1/transfer/createCreate Withdraw
Ajukan penarikan saldo akun ke rekening bank atau e-wallet tujuan. Setiap request masuk sebagai antrian di Admin Dashboard > Withdrawal Requests dengan status Pending sampai diverifikasi manual oleh admin — saldo baru dipotong saat disetujui.
curl -X POST https://ciaatopup.com/v1/transfer/create -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\",\"bank_code\":\"BCA\",\"account_number\":\"1234567890\",\"account_name\":\"Budi Santoso\",\"amount\":100000,\"ref_id\":\"trf_unique_001\"}"{
"status": true,
"message": "Permintaan penarikan dana berhasil diajukan dan sedang dalam antrian verifikasi.",
"data": {
"ref_id": "trf_unique_001",
"status": "Pending",
"amount": 100000,
"admin_fee": 2500
}
}/v1/transfer/statusStatus Withdraw
Cek status akhir sebuah pengajuan withdraw berdasarkan ref_id. Status Pending berarti masih menunggu di-ACC admin; begitu admin menyetujui, status otomatis berubah jadi Success (kalau ditolak jadi Failed).
curl -X POST https://ciaatopup.com/v1/transfer/status -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\",\"ref_id\":\"trf_unique_001\"}"{
"status": true,
"data": {
"ref_id": "trf_unique_001",
"status": "Success",
"amount": 100000,
"admin_fee": 2500,
"paid_at": "2026-07-28T12:00:00Z"
}
}Webhook Prabayar
Notifikasi otomatis (POST) yang dikirim ke URL callback kamu setiap kali status order prabayar berubah, sebagai alternatif polling lewat Status Transaksi.
Daftarkan URL-nya dulu di Dashboard > Developers > API Keys sebelum webhook mulai dikirim.
Setiap request ditandatangani HMAC-SHA256 memakai Secret Key kamu, dikirim lewat header X-Signature — verifikasi ini di sisi server kamu supaya yakin request beneran dari CiaaTopUp.
{
"event": "order.status",
"ref_id": "unique_trx_123",
"status": "Success",
"sn": "10029388123901"
}Webhook Deposit
Notifikasi otomatis (POST) yang dikirim ke URL callback kamu saat QRIS deposit (DANA Bisnis) berhasil dibayar.
Daftarkan URL-nya dulu di Dashboard > Developers > API Keys sebelum webhook mulai dikirim.
Setiap request ditandatangani HMAC-SHA256 memakai Secret Key kamu, dikirim lewat header X-Signature — verifikasi ini di sisi server kamu supaya yakin request beneran dari CiaaTopUp.
{
"event": "deposit.status",
"orderId": "DEP-1710000000000",
"status": "Paid"
}/v1/profileGet Profile
Ambil data akun reseller yang sedang login: nama, email, tier, dan sisa saldo.
curl -X POST https://ciaatopup.com/v1/profile -H "Content-Type: application/json" -d "{\"merchantId\":\"CT-XXXXXX\",\"secretKey\":\"CT-Key-XXXXXX\"}"{
"status": true,
"data": {
"name": "Toko Pulsa Jaya",
"email": "reseller@email.com",
"tier": "Reseller",
"balance": 1250000
}
}