Dokumentasi API
Selamat datang di dokumentasi API GoPay Gateway. Integrasikan gateway pembayaran QRIS otomatis ke dalam aplikasi, web, atau bot Telegram Anda secara mandiri dalam hitungan menit.
Layanan kami bekerja dengan membungkus QRIS statis GoPay Merchant Anda dan memformatnya menjadi QRIS dinamis bernominal khusus sesuai nilai transaksi. Hal ini membantu memverifikasi setiap pembayaran masuk secara akurat tanpa biaya per transaksi.
Mulai Cepat
Ikuti 3 langkah mudah di bawah ini untuk mulai menerima pembayaran otomatis:
Daftar akun di platform kami dan dapatkan kunci rahasia unik Anda melalui halaman Pengaturan API Key.
Salin string QRIS statis dari aplikasi GoBiz / GoPay Merchant Anda dan simpan di menu Setup QRIS.
Gunakan REST endpoints yang tercantum di bawah untuk mulai memicu pembuatan QRIS dinamis.
Autentikasi
Semua panggilan API Anda harus diautentikasi menggunakan API Key unik yang telah terdaftar. Kami menyediakan dua metode untuk mengirimkan API Key tersebut:
Jaga kerahasiaan API Key Anda. Jangan pernah membagikan API Key Anda di client-side JavaScript, repository publik, atau ke pihak ketiga mana pun.
API Reference
Berikut adalah spesifikasi endpoint yang tersedia untuk melakukan integrasi pembayaran.
Endpoint ini digunakan untuk membuat pesanan baru dan menghasilkan string QRIS Dinamis berserta gambar QR code instan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
| amount wajib | integer | Jumlah nominal pembayaran dalam Rupiah. Minimum Rp 100 dan maksimum Rp 50.000.000. |
| ref_id opsional | string | ID referensi internal dari sistem Anda (misal: ID order web Anda). |
| description opsional | string | Deskripsi singkat transaksi untuk pelacakan. |
| expired_minutes opsional | integer | Masa berlaku QR code dalam hitungan menit. Default adalah 15 menit. |
curl -X POST "http://localhost:8080/api/create_order.php" \
-H "Content-Type: application/json" \
-H "X-API-Key: gpg_live_xxxxxxxxxxxx" \
-d '{
"amount": 150000,
"ref_id": "ORDER-001",
"description": "Pembelian Produk A",
"expired_minutes": 15
}'
{
"status": "success",
"code": 200,
"message": "Order berhasil dibuat. Tampilkan QR kepada pelanggan.",
"data": {
"order_id": "GPG-B2E8D1-20260611161500",
"transaction_id": 128,
"ref_id": "ORDER-001",
"merchant_name": "Toko Budi Online",
"amount": 150000,
"amount_formatted": "Rp 150.000",
"qr_string": "00020101021226...",
"qr_url": "https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=...",
"status": "pending",
"description": "Pembelian Produk A",
"expired_minutes": 15,
"expires_at": "2026-06-11 16:30:00",
"created_at": "2026-06-11 16:15:00"
}
}
Endpoint ini digunakan untuk memantau atau mendeteksi status transaksi berdasarkan `order_id` yang didapatkan pada proses pembuatan pesanan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
| order_id wajib | string | ID Order unik yang didapatkan dari respons pembuatan order (contoh: `GPG-xxxx-xxxx`). |
curl -X GET "http://localhost:8080/api/check_status.php?order_id=GPG-B2E8D1-20260611161500"
{
"status": "success",
"code": 200,
"message": "Success",
"data": {
"order_id": "GPG-B2E8D1-20260611161500",
"merchant_name": "Toko Budi Online",
"ref_id": "ORDER-001",
"amount": 150000,
"amount_formatted": "Rp 150.000",
"qr_string": "00020101021226...",
"qr_url": "https://...",
"status": "paid", // status: pending | paid | expired | failed
"description": "Pembelian Produk A",
"expired_minutes": 15,
"expires_at": "2026-06-11 16:30:00",
"created_at": "2026-06-11 16:15:00",
"paid_at": "2026-06-11 16:18:22"
}
}
Endpoint ini digunakan untuk mensimulasikan pembaruan status transaksi secara manual atau bertindak sebagai webhook simulasi dari server Anda ke gateway.
| Parameter | Tipe | Deskripsi |
|---|---|---|
| order_id wajib | string | ID Order unik dari sistem (contoh: `GPG-xxxx-xxxx`). |
| status wajib | string | Status baru yang ingin diubah. Pilihan status: `paid`, `failed`, `expired`, `pending`. |
curl -X POST "http://localhost:8080/api/update_status.php" \
-H "Content-Type: application/json" \
-H "X-API-Key: gpg_live_xxxxxxxxxxxx" \
-d '{
"order_id": "GPG-B2E8D1-20260611161500",
"status": "paid"
}'