Dokumentasi API

Integrasikan layanan kami ke sistem kamu dengan mudah.

REST API · JSON

API Console (Live Test)

Coba langsung endpoint API tanpa tools tambahan.

Panduan Endpoint API

Cek Saldo User GET

Memuat...

Cek sisa saldo aktif pada akun Anda secara real-time.

Contoh Response:

{
  "balance": 100000
}

Membuat Invoice Deposit GET

Memuat...

Buat tagihan/invoice deposit baru untuk menghasilkan QRIS.

Response sukses dari endpoint ini berarti invoice/QRIS berhasil dibuat, bukan berarti deposit sudah selesai. Status invoice tetap pending sampai pembayaran benar-benar terverifikasi — gunakan endpoint Cek Status Invoice di bawah untuk memantau.

Contoh Response:

{
  "success": true,
  "invoice_id": "64c8d9e...",
  "amount": 10000,
  "fee": 123,
  "total": 10123,
  "qris_image": "https://...",
  "expired_at": "2025-01-01 12:00:00"
}

Cek Status Invoice GET

Memuat...

Cek status pembayaran invoice (pending, paid, expired).

Penting: status hanya berubah menjadi paid setelah sistem memverifikasi mutasi QRIS asli yang cocok nominal dan waktunya dengan invoice ini. Lakukan polling endpoint ini secara berkala (disarankan setiap 5–10 detik) sampai status berubah dari pending, jangan asumsikan sukses hanya karena invoice berhasil dibuat.

Contoh Response:

{
  "invoice_id": "64c8d9e...",
  "amount": 10000,
  "fee": 123,
  "total": 10123,
  "status": "pending",
  "qris_image": "https://...",
  "expired_at": "2025-01-01 12:00:00",
  "created_at": "2025-01-01 11:30:00"
}

Batalkan Invoice (Cancel QRIS) POST

Memuat...

Metode: POST — kirim invoice_id via query param atau JSON body

Membatalkan invoice yang statusnya masih pending. Invoice akan berubah menjadi expired. Invoice yang sudah paid tidak bisa dibatalkan.

Contoh Request:

POST /api/v1/invoice/cancel?invoice_id={invoice_id}&apikey={api_key}

Contoh Response (Berhasil):

{
  "success": true,
  "invoice_id": "64c8d9e...",
  "status": "expired",
  "message": "Invoice berhasil dibatalkan"
}

Contoh Response (Gagal — sudah paid):

{
  "error": "Invoice tidak bisa dibatalkan, status saat ini: paid"
}

Buat Permintaan Withdraw DANA POST

Memuat...

Metode: POST JSON

Body request harus berupa JSON dengan format:

{
  "amount": 50000,
  "accountNumber": "081234567890",
  "accountName": "John Doe"
}

Ajukan permintaan penarikan dana via DANA. Status awal adalah pending. Admin akan menyetujui (status menjadi success) atau menolak (status menjadi rejected).

Contoh Request Body:

{
  "amount": 100000,
  "accountNumber": "081234567890",
  "accountName": "John Doe"
}

Contoh Response (Berhasil):

{
  "success": true,
  "message": "Permintaan penarikan berhasil diajukan",
  "withdraw_id": "65a1b2c3d4e5f6...",
  "amount": 100000,
  "fee": 1000,
  "total_deduct": 101000,
  "new_balance": 899000,
  "status": "pending",
  "created_at": "2025-01-15T10:30:00.000Z"
}

Cek Status Withdraw (Real-time) GET

Memuat...

Cek status real-time dari permintaan withdraw.

pending success rejected

Contoh Response:

{
  "success": true,
  "withdraw_id": "65a1b2c3d4e5f6...",
  "amount": 100000,
  "fee": 1000,
  "total_deduct": 101000,
  "status": "success",
  "method": "dana",
  "account_number": "081234567890",
  "account_name": "John Doe",
  "admin_note": null,
  "created_at": "2025-01-15T10:30:00.000Z",
  "processed_at": "2025-01-15T14:20:00.000Z"
}

Riwayat Withdraw GET

Memuat...

Ambil daftar riwayat withdraw dengan pagination dan filter status.

Contoh Response:

{
  "success": true,
  "data": [
    {
      "withdraw_id": "65a1b2c3...",
      "amount": 100000,
      "fee": 1000,
      "total_deduct": 101000,
      "status": "success",
      "method": "dana",
      "account_number": "081234567890",
      "account_name": "John Doe",
      "admin_note": null,
      "created_at": "2025-01-15T10:30:00.000Z",
      "processed_at": "2025-01-15T14:20:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 5,
    "total_pages": 1
  }
}

Daftar Produk Withdraw Instant GET INSTANT

Ambil daftar produk e-wallet yang tersedia untuk withdraw instant (DANA, OVO, GoPay).

Memuat...

Parameter

ParamWajibKeterangan
apikeyYaAPI Key akun
ewalletYaDana / OVO / GoPay

Contoh Response

{"success":true,"products":[
  {"code":"BBSDN","name":"H2H DANA Topup (Bebas Nominal)",
   "price":200,"isOpenNominal":true,"minNominal":200},
  {"code":"D10","name":"Dana 10.000",
   "price":10200,"isOpenNominal":false}
],"extraFee":0}
isOpenNominal: true = bebas nominal (kirim qty). minNominal = minimal topup sesuai provider. price = fee provider per transaksi.

Buat Withdraw Instant POST INSTANT

Proses withdraw instant ke e-wallet. Dana dikirim ke nomor rekening terdaftar di profil user. Potongan saldo = nominal + fee provider + fee admin.

Memuat...

Request Body (JSON)

FieldWajibKeterangan
apikeyYaAPI Key akun
productCodeYaKode produk dari pricelist (mis. BBSDN)
isOpenNominalYatrue/false sesuai produk
qtyKondisionalNominal topup (wajib jika isOpenNominal: true). Kelipatan 1.000
Total dipotong = qty + fee provider (price) + fee admin (settings)

Contoh Response

// Berhasil:
{"success":true,"status":"processing",
 "invoice":"INV20260629001",
 "productName":"H2H DANA Topup (Bebas Nominal)",
 "amount":50000,"fee":1200,
 "destination":"081380847521",
 "refId":"WI1A2B3C4D"}

// Gagal saldo:
{"success":false,
 "error":"Saldo tidak cukup (estimasi total Rp 51.200)"}

Cek Status Withdraw Instant GET INSTANT

Cek status terbaru dari transaksi withdraw instant berdasarkan refId. Status: processingsuccess / failed.

Memuat...

Parameter

ParamWajibKeterangan
apikeyYaAPI Key akun
ref_idYarefId dari response order instant

Contoh Response

{"success":true,"data":{
  "status":"success",
  "status_label":"Berhasil",
  "invoice":"INV20260629001",
  "productName":"H2H DANA Topup",
  "amount":50000,"fee":1200,
  "destination":"081380847521",
  "serial_number":"081380847521",
  "createdAt":"2026-06-29T07:20:00.000Z"
}}