Dokumentasi API

Panduan lengkap integrasi API pembayaran untuk aplikasi Anda.

A. Persiapan

Langkah pertama yang harus Anda lakukan adalah mendaftar dan login ke dashboard. Setelah itu, dapatkan API Key Anda di menu Profil untuk mulai mengintegrasikan sistem pembayaran ke aplikasi Anda.

B. Cek Saldo (Balance)

Gunakan endpoint ini untuk mendapatkan informasi saldo akun Anda secara real-time.

  • Method: GET
  • URL: /api/balance

Parameter:

  • apikey (string, wajib)

Contoh Request:

/api/balance?apikey=YOUR_API_KEY

Contoh Response:

{ "balance": 150000 }

C. Membuat Invoice Baru

Endpoint ini digunakan untuk membuat invoice QRIS atau channel pembayaran Sakurupiah. QRIS sistem tetap menggunakan kode QRIS; channel lain menggunakan kode yang ditambahkan admin dari Sakurupiah.

  • Method: GET atau POST
  • URL: /api/invoice

Parameter:

  • apikey (string, wajib)
  • amount (integer, wajib)
  • payment_code (string, opsional, default QRIS)

Contoh Request:

/api/invoice?apikey=YOUR_API_KEY&amount=50000&payment_code=BCAVA

Contoh Response:

{ "success": true, "invoice_id": "64c8d9e...", "amount": 50000, "fee": 500, "total": 50500, "payment_code": "QRIS", "payment_name": "QRIS", "link_pembayaran": "https://app.dana.id/bayar", // kusus ewallet, virtual account dll. "qris_image": "https://qris.ppg", // kusus qris "expired_at": "2025-01-01 12:00:00" }

C2. Daftar Channel Pembayaran

Ambil daftar kode payment yang aktif sebelum membuat invoice. Kode QRIS adalah channel permanen untuk QRIS Gopay/Orderkuota, sedangkan channel lain berasal dari Sakurupiah.

  • Method: GET
  • URL: /api/payment-channels
{ "success": true, "channels": [ { "code": "QRIS", "name": "QRIS", "category": "qris" }, { "code": "BCAVA", "name": "BCA Virtual Account", "category": "virtual account" } ] }

D. Cek Status Invoice

Setelah invoice dibuat, gunakan endpoint ini untuk mengecek apakah pembayaran telah berhasil atau belum. Endpoint yang sama berlaku untuk QRIS lama dan channel Sakurupiah.

  • Method: GET
  • URL: /api/invoice/status

Parameter:

  • apikey (string, wajib)
  • invoice_id (string, wajib)

Contoh Request:

/api/invoice/status?apikey=YOUR_API_KEY&invoice_id=YOUR_INVOICE_ID

Contoh Response:

{ "invoice_id": "64c8d9e...", "amount": 50000, "fee": 500, "total": 50500, "status": "paid", "qris_image": "https://...", "expired_at": "2025-01-01 12:00:00", "created_at": "2025-01-01 11:30:00" }

E. Callback / Webhook Pembayaran

Isi Callback URL dan Whitelist IP di halaman Profil. Setelah pembayaran invoice berubah menjadi paid, sistem akan mengirim POST JSON otomatis ke URL milik Anda. Jika Callback URL kosong, callback tidak dikirim.

Contoh Callback URL:

https://domain.com/callback.php

Untuk mengamankan API, masukkan maksimal 4 IP di kolom Whitelist IP pada Profil dan pisahkan dengan koma. Jika dikosongkan, semua IP diizinkan. Nilai IP diproses tanpa slash atau backslash.

Method dan Header:

  • Method: POST
  • Content-Type: application/json
  • X-Callback-Event: payment.success

Contoh Payload:

{
  "success": true,
  "event": "payment.success",
  "status": "paid",
  "invoice_id": "INV1234567",
  "transaction_id": "TRX1234567",
  "reference": "INV1234567",
  "amount": 50000,
  "fee": 500,
  "total": 50500,
  "payment_code": "QRIS",
  "payment_name": "QRIS",
  "payment_category": "qris",
  "payment_provider": "qris",
  "mutation_id": "mutation-id",
  "paid_at": "2026-09-04T00:00:00.000Z"
}