V2.4.0 Build

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"
}
POST
/v1/price-list

Price 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\"}"
Success Response
{
  "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%"
  }
}
POST
/v1/deposit

Request 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}"
Success Response
{
  "status": true,
  "message": "Tiket deposit berhasil dibuat.",
  "data": {
    "orderId": "DEP-1710000000000",
    "total": 50450,
    "qrDataUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEU..."
  }
}
POST
/v1/order

Create 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\"}"
Success Response
{
  "status": true,
  "data": {
    "ref_id": "unique_trx_123",
    "status": "Success",
    "sn": "10029388123901",
    "price": 24500,
    "tier": "Reseller",
    "discount": "2%"
  }
}
POST
/v1/status

Status 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\"}"
Success Response
{
  "status": true,
  "data": {
    "ref_id": "unique_trx_123",
    "status": "Success",
    "sn": "10029388123901",
    "price": 24500
  }
}
POST
/v1/inquiry-pasca

Cek 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\"}"
Success Response
{
  "status": true,
  "data": {
    "customer_no": "530000012345",
    "customer_name": "BUDI SANTOSO",
    "biller_name": "PLN Postpaid",
    "period": "07/2026",
    "amount": 350500,
    "admin_fee": 2500
  }
}
POST
/v1/payment-pasca

Bayar 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\"}"
Success Response
{
  "status": true,
  "data": {
    "ref_id": "unique_trx_124",
    "status": "Success",
    "sn": "20250728PLN001",
    "price": 353000
  }
}
POST
/v1/deposit/status

Status 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\"}"
Success Response
{
  "status": true,
  "data": {
    "orderId": "DEP-1710000000000",
    "status": "Paid",
    "paidAt": "2026-07-28T12:00:00Z"
  }
}
POST
/v1/deposit/cancel

Cancel 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\"}"
Success Response
{
  "status": true,
  "message": "Deposit dibatalkan."
}
POST
/v1/transfer/bank-list

List 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\"}"
Success Response
{
  "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"
    }
  ]
}
POST
/v1/transfer/create

Create 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\"}"
Success Response
{
  "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
  }
}
POST
/v1/transfer/status

Status 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\"}"
Success Response
{
  "status": true,
  "data": {
    "ref_id": "trf_unique_001",
    "status": "Success",
    "amount": 100000,
    "admin_fee": 2500,
    "paid_at": "2026-07-28T12:00:00Z"
  }
}
WEBHOOK
Live

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.

Success Response
{
  "event": "order.status",
  "ref_id": "unique_trx_123",
  "status": "Success",
  "sn": "10029388123901"
}
WEBHOOK
Live

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.

Success Response
{
  "event": "deposit.status",
  "orderId": "DEP-1710000000000",
  "status": "Paid"
}
POST
/v1/profile

Get 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\"}"
Success Response
{
  "status": true,
  "data": {
    "name": "Toko Pulsa Jaya",
    "email": "reseller@email.com",
    "tier": "Reseller",
    "balance": 1250000
  }
}