Dokumentasi
Dokumentasi API
Seluruh endpoint memerlukan header Authorization: Bearer «redac..._…», yang dapat Anda peroleh setelah mendaftar. Format respons selalu { success, data } untuk permintaan yang berhasil, atau { success: false, error: { code, message } } apabila terjadi kesalahan.
1Membuat deposit
Kirim nominal pembayaran. Sistem akan mengembalikan kode QR dinamis beserta nominal unik yang harus dibayarkan oleh pelanggan.
POST /api/v1/deposit/create
Authorization: Bearer «redac..._…»|
{ "amount": 50000, "reference": "order-123" }
→ 201
{
"success": true,
"data": {
"id": "cpv...",
"unique_amount": 50001,
"qr_string": "000201010211...6304ABCD",
"expires_at": "2026-09-10T05:00:00.000Z"
}
}Sistem menambahkan selisih nominal unik (1–999 rupiah) pada setiap transaksi. Pelanggan wajib membayar tepat sebesar nominal unik tersebut agar pembayaran dapat diidentifikasi secara otomatis, termasuk apabila terdapat beberapa pesanan dengan nominal dasar yang sama. Kode QR berlaku selama 5 menit secara bawaan.
2Memeriksa status pembayaran
GET /api/v1/deposit/status/:id
Authorization: Bearer «redac..._…»
→ { "success": true,
"data": { "status": "paid", "paid_at": "...", "tx_id": "..." } }
status: pending → paid | expired | cancelled3Menerima notifikasi webhook
Daftarkan URL endpoint Anda melalui dasbor merchant (menu Webhook). SAKUPAY akan mengirimkan peristiwa payment.paid dan payment.expiredke URL tersebut. Keaslian setiap notifikasi dapat diverifikasi melalui tanda tangan digital:
POST {url-milik-anda} ← dari SAKUPAY
X-Webhook-Signature: <hex HMAC-SHA256(body, webhook_secret)>
X-Sakupay-Event: payment.paid
{ "event": "payment.paid", "payment_id": "cpv...",
"data": { "amount": 50000, "unique_amount": 50001, ... } }4Memeriksa saldo dan riwayat
GET /api/v1/balance
→ { "success": true,
"data": { "balance": 99300, "available": 99300,
"pending_withdrawal": 0 } }
GET /api/v1/payments?status=paid&per=20
→ { "success": true,
"data": { "total": 42, "page": 1, "items": [...] } }