DASHBOARD & API GOPAY MERCHANT

Satu dashboard buat semua transaksi GoPay toko kamu.

Cek mutasi, bikin QRIS dinamis, pantau laporan — atau kalau kamu punya sistem sendiri, tinggal sambungin lewat API. Tanpa ribet.

Real-time QRIS dinamis REST API Secret key auth
DEVELOPER

Dokumentasi API

Semua request wajib pakai header X-Merchant-Code dan X-Secret-Key, ambil dari halaman API Settings setelah login.

Wajib upload QRIS toko dulu sebelum pakai API

Endpoint Create Payment cuma bisa jalan kalau toko kamu sudah punya QRIS tersimpan di sistem. Upload dulu QRIS statis toko kamu lewat menu Generate QRIS di dashboard — dari situ baru API bisa generate QRIS dinamis per transaksi. Kalau belum upload, request bakal ditolak dengan pesan "Merchant belum punya QRIS tersimpan".

Create Payment POST
https://gopay.orionpay.cloud/api/create-payment

Headers

KeyValue
X-Merchant-CodeKode/ID merchant kamu
X-Secret-KeySecret key dari API Settings
Content-Typeapplication/json

Body

{
  "amount": 20000
}

Contoh cURL

curl -X POST https://gopay.orionpay.cloud/api/create-payment \
  -H "X-Merchant-Code: KODE_MERCHANT" \
  -H "X-Secret-Key: SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount": 20000}'

Response (sukses)

{
  "success": true,
  "reference": "PAY-XXXXXXXXXXXX",
  "amount": 20000,
  "unique_code": 47,
  "total_amount": 20047,
  "qris_string": "000201...6304XXXX",
  "qr_url": "https://gopay.orionpay.cloud/qris-image/PAY-XXXXXXXXXXXX.png",
  "expires_at": "2026-01-01T00:15:00+00:00"
}
qr_url tinggal pasang langsung ke <img src="...">, ga perlu decode base64 sendiri.
Penting: nominal yang harus dibayar pelanggan itu total_amount (nominal + unique_code), bukan amount. QR yang dibikin sudah pakai nominal ini, supaya transaksi dengan nominal dasar sama ga ketuker.

Response (kuota habis)

{
  "success": false,
  "message": "Limit request kamu sudah habis. ..."
}
HTTP 403. Setiap request yang berhasil bikin pembayaran bakal ngurangin kuota merchant. Hubungi admin buat top up.

Response (belum upload QRIS)

{
  "success": false,
  "message": "Merchant belum punya QRIS tersimpan. Upload dulu lewat dashboard."
}
HTTP 422. Artinya toko kamu belum upload QRIS. Buka menu Generate QRIS di dashboard dulu, baru coba lagi.
Check Status GET
https://gopay.orionpay.cloud/api/check-status/{reference}

Headers

KeyValue
X-Merchant-CodeKode/ID merchant kamu
X-Secret-KeySecret key dari API Settings

Contoh cURL

curl -X GET https://gopay.orionpay.cloud/api/check-status/PAY-XXXXXXXXXXXX \
  -H "X-Merchant-Code: KODE_MERCHANT" \
  -H "X-Secret-Key: SECRET_KEY"

Response

{
  "success": true,
  "reference": "PAY-XXXXXXXXXXXX",
  "status": "pending",
  "amount": 20000,
  "unique_code": 47,
  "total_amount": 20047,
  "transaction_id": null,
  "paid_at": null
}
status nilainya pending, paid, atau expired. Polling tiap beberapa detik sampai statusnya berubah.