Dokumentasi Integrasi API AryaPay
Integrasikan gerbang pembayaran QRIS otomatis ke dalam aplikasi, bot, toko online, atau platform Anda dengan mudah menggunakan HTTP request standar.
A. Persiapan & Autentikasi API
Sebelum dapat melakukan request ke endpoint API AryaPay, pastikan:
- Verifikasi Identitas (KYC): Lengkapi data KTP di menu Verifikasi KYC. Status akun harus Approved.
- Dapatkan Kredensial Project (Wajib): Buat project di menu Kelola Project untuk mendapatkan Project ID (contoh:
PRJ_1A181F56180) dan API Key Project. Kedua parameter ini wajib disertakan pada setiap request API.
Format Parameter Autentikasi (Project ID & API Key Wajib):
?project=PRJ_XXXXX&apikey=ARYAPAY_XXXXXX-PROJECT-ID: PRJ_XXXXXX-API-KEY: ARYAPAY_XXXXXB. Mode Sandbox & Lingkungan Pengujian (Testing)
SANDBOX APIAryaPay menyediakan lingkungan Sandbox penuh agar developer dapat menguji seluruh siklus transaksi pembayaran—mulai dari pembuatan tagihan, scan QRIS uji coba, hingga pengiriman webhook callback—tanpa melibatkan uang riil dan tanpa perlu menunggu verifikasi KYC.
ARYAPAY_SB_XXXXXXXXXXXXXXCukup tambahkan prefix _SB_ pada API Key Anda, atau salin langsung dari menu Kelola Project.
- Tanpa Uang Asli: Transaksi bersifat virtual 100%.
- Tanpa Syarat KYC: Akun baru langsung bisa test API.
- Simulasi 1-Klik: Bayar instan via button atau API.
- Live Webhook: Memicu notifikasi ke server Anda.
1. Cek Saldo Akun (Balance)
Memeriksa saldo utama dan saldo tertunda dari akun pemilik API Key.
const axios = require('axios');
const res = await axios.get('https://aryapay.com/api/balance', {
params: {
project: 'PRJ_your_project_id', // Wajib
apikey: 'ARYAPAY_your_api_key' // Wajib
}
});
console.log(res.data);{
"project_id": "PRJ_1A181F56180",
"project_name": "Toko Game Online",
"username": "budi_santoso",
"email": "budi@gmail.com",
"balance": 150000,
"pending_balance": 50000
}2. Buat Tagihan QRIS (Create Invoice)
Membuat transaksi pembayaran QRIS baru dan mengembalikan payment link serta gambar QR code.
const axios = require('axios');
const res = await axios.post('https://aryapay.com/api/invoice', {
amount: 50000
}, {
headers: {
'X-PROJECT-ID': 'PRJ_your_project_id', // Wajib
'X-API-KEY': 'ARYAPAY_your_api_key' // Wajib
}
});
console.log(res.data);{
"status": "success",
"invoice_id": "INV9a8b7c6d5e",
"amount": 50000,
"fee": 125,
"total": 50125,
"payment_link": "https://aryapay.com/payment/INV9a8b7c6d5e",
"qris_image": "https://...",
"expired_at": "2026-10-29T12:00:00.000Z"
}3. Cek Status Tagihan (Invoice Status)
Memeriksa status pembayaran sebuah invoice (pending, paid, expired, cancelled).
curl -X GET "https://aryapay.com/api/invoice/status?apikey=ARYAPAY_your_api_key&id=INV9a8b7c6d5e"
{
"invoice_id": "INV9a8b7c6d5e",
"status": "paid",
"amount": 50000,
"total": 50125,
"completed_at": "2026-10-28T18:05:00.000Z"
}4. Simulator Pembayaran Sandbox (Payment Simulator)
Mensimulasikan pembayaran lunas pada transaksi sandbox secara instan dan memicu pengiriman Webhook Callback ke server merchant.
curl -X POST "https://aryapay.com/api/sandbox/simulate-payment" \
-H "Content-Type: application/json" \
-d '{"invoice_id": "INV_SB_9a8b7c6d5e"}'{
"status": "success",
"sandbox": true,
"message": "Pembayaran tagihan sandbox berhasil disimulasikan!",
"invoice": {
"id": "INV_SB_9a8b7c6d5e",
"amount": 10000,
"fee": 142,
"total": 10142,
"status": "success"
},
"webhook": {
"attempted": true,
"target_url": "https://domainanda.com/api/payment-callback",
"success": true,
"http_status": 200,
"latency_ms": 134
}
}5. Spesifikasi Webhook Callback
Format HTTP POST request yang dikirimkan AryaPay ke server Anda saat sebuah transaksi berstatus sukses/lunas.
Content-Type: application/json User-Agent: AryaPay-Sandbox-Webhook/2.0 X-AryaPay-Event: payment.success X-AryaPay-Sandbox: true
{
"event": "payment.success",
"sandbox": true,
"data": {
"invoice_id": "INV_SB_9a8b7c6d5e",
"project_id": "PRJ_1A181F56180",
"project_name": "Toko Game Online",
"reference": "INV_SB_9a8b7c6d5e",
"amount": 10000,
"fee": 142,
"total": 10142,
"status": "success",
"paid_at": "2026-10-28T18:30:00.000Z"
},
"timestamp": "2026-10-28T18:30:00.000Z"
}200 OK dengan body {"status": "ok"} dalam waktu maksimal 5 detik.