Dokumentasi API MauPay

Base URL & Autentikasi

Base URL — klik untuk membuka, atau gunakan tombol salin:

Semua endpoint mengembalikan JSON. Autentikasi memakai header X-API-Key.

Gunakan API key live (sk_live_...) untuk produksi dan key sandbox (sk_test_...) untuk pengujian.

Autentikasi

Kirim API key Anda lewat header X-API-Key pada setiap permintaan.

X-API-Key: sk_live_...

1. Payment Link & Gateway — QRIS

Buat pembayaran

POST https://app.maupay.online/api/v1/payments

Header: X-API-Key: sk_live_... (untuk sandbox pakai sk_test_...).

{ "amount": 132000, "customer_name": "Budi" }

Respons sukses:

{ "success": true, "data": { "transactionId": "TXN-...", "base_amount": 132000, "total_amount": 132480, "qris_string": "000201...6304ABCD", "expires_at": "...", "status": "PENDING" } }
AturanNilai
Nominal dasarinteger, 100 — 10.000.000
Masa berlaku30 menit — setelah itu status EXPIRED
Kredit saldoberdasar base_amount

Webhook Pembayaran

Saat transaksi PAID, sistem mengirim POST ke semua URL webhook yang diatur di panel Pengaturan → Webhook. Hasil hanya diberitahukan lewat webhook.

{ "transactionId": "TXN-...", "status": "PAID", "baseAmount": 132000, "totalAmount": 132480, "paidAmount": 132480, "paidAt": "2026-01-01T10:00:00Z", "_signature": "sha256=..." }

Keamanan: verifikasi tanda tangan _signature = 'sha256=' + base64(HMAC-SHA256(sisa body, webhook_secret)), dan header X-Webhook-Secret serta X-MauPay-Signature.

Contoh integrasi

// Node.js (axios) const res = await axios.post('https://app.maupay.online/api/v1/payments', { amount: 132000, customer_name: 'Budi' }, { headers: { 'X-API-Key': 'sk_live_...' } }); console.log(res.data.data.total_amount); // 132480 console.log(res.data.data.qris_string);
// PHP (cURL) $ch = curl_init('https://app.maupay.online/api/v1/payments'); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['amount'=>132000])); curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-Key: sk_live_...', 'Content-Type: application/json']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); echo curl_exec($ch);
# Python (requests) import requests r = requests.post('https://app.maupay.online/api/v1/payments', json={'amount': 132000}, headers={'X-API-Key': 'sk_live_...'}) print(r.json())

2. Sandbox

Gunakan API key sk_test_.... Buat transaksi seperti biasa; respons menyertakan simulatePayUrl untuk menandai transaksi sebagai PAID dan memicu webhook sandbox ke sandbox_webhook_url Anda.

POST https://app.maupay.online/api/sandbox/simulate-payment/:txId

Header: X-API-Key: sk_test_... milik pemilik transaksi.

Status transaksi: PENDINGPAID / EXPIRED / FAILED, diberitahukan lewat webhook.

3. Kode Error

KodeArti
200 / 201Sukses
400Parameter salah / validasi gagal
401API key salah / tidak valid
403Akses ditolak (bukan transaksi Anda)
404Sumber daya tidak ditemukan
500Kesalahan internal server