Dokumentasi
Rest API v1
Integrasi Gopay Merchant dan Shopee Partner lewat satu API yang konsisten. Semua endpoint menerima dan mengembalikan JSON.
https://pay.odzreshop.id/api/v1
Quickstart
- 1.Daftar akun lalu masuk ke dashboard.
- 2.Buka menu Proyek → buat proyek baru (nama, QRIS, merchant).
- 3.Salin API key yang muncul sekali saja.
- 4.Panggil endpoint dengan header
X-API-Key.
Contoh panggilan pertama (cURL)
curl -X POST https://pay.odzreshop.id/api/v1/transaction/create \
-H "X-API-Key: odzre_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 25000,
"customerName": "Budi Santoso",
"description": "Pembayaran pesanan #1234"
}'
Autentikasi
Semua endpoint memerlukan API key. Sertakan pada salah satu dari:
Header (disarankan)
X-API-Key: odzre_live_xxx
Bearer token
Authorization: Bearer odzre_live_xxx
API key hanya tampil satu kali saat dibuat. Simpan di variabel lingkungan server — jangan pernah di kode frontend atau repositori.
Rate Limit
Default 60 permintaan/menit per API key. Setiap response menyertakan header:
X-RateLimit-Limit: 60 X-RateLimit-Remaining: 57 Retry-After: 14 # hanya saat terkena limit (HTTP 429)
/api/v1/profile
Mengembalikan informasi akun dan proyek pemilik API key.
Contoh — JavaScript (fetch)
const res = await fetch('https://pay.odzreshop.id/api/v1/profile', {
headers: { 'X-API-Key': process.env.ODZRE_API_KEY },
});
const json = await res.json();
console.log(json.data.project.name);
Response 200
{
"success": true,
"data": {
"user": {
"id": "uuid",
"email": "john.doe@example.com",
"full_name": "John Doe",
"company": "Doe Digital",
"created_at": "2026-01-15T08:00:00.000Z"
},
"project": {
"id": "uuid",
"name": "Toko Sepatu Online",
"merchant": "gopay"
},
"scopes": ["profile:read", "transaction:write", "transaction:read"]
},
"timestamp": "2026-09-13T03:00:00.000Z"
}
/api/v1/transaction/create
Membuat transaksi QRIS baru. Status awal pending.
Parameter body
| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
amount | integer | Ya | Nominal dalam rupiah (100 – 50.000.000) |
orderId | string | Tidak | ID pesanan Anda (4-64 char). Kosong = dibuat otomatis |
customerName | string | Tidak | Nama pelanggan |
customerEmail | string | Tidak | Email pelanggan |
customerPhone | string | Tidak | Nomor telepon pelanggan |
description | string | Tidak | Keterangan transaksi (maks. 200 char) |
expiryMinutes | integer | Tidak | Masa berlaku (5–1440 menit, default 30) |
callbackUrl | string | Tidak | URL webhook saat status berubah |
Contoh — PHP (cURL)
<?php
$ch = curl_init('https://pay.odzreshop.id/api/v1/transaction/create');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: ' . getenv('ODZRE_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['amount' => 25000]),
]);
$res = json_decode(curl_exec($ch), true);
echo $res['data']['qris_string'];
Response 201
{
"success": true,
"data": {
"order_id": "ODZ-260913-K3P6W6CHKM",
"status": "pending",
"merchant": "gopay",
"amount": 25000,
"fee": 0,
"qris_string": "00020101021126...",
"customer": { "name": "Budi Santoso", "email": null, "phone": null },
"description": "Pembayaran pesanan #1234",
"expires_at": "2026-09-13T03:30:00.000Z",
"created_at": "2026-09-13T03:00:00.000Z"
},
"timestamp": "2026-09-13T03:00:00.000Z"
}
Tampilkan qris_string sebagai QR code di aplikasi Anda (mis. pakai library qrcode).
/api/v1/transaction/status/:orderId
Memeriksa status transaksi. Bila masih pending,
kami menyinkronkan dulu dengan provider sebelum menjawab.
Contoh
curl -H "X-API-Key: odzre_live_xxx" \ https://pay.odzreshop.id/api/v1/transaction/status/ODZ-260913-K3P6W6CHKM
Nilai status yang mungkin
Kode Error
Semua error mengikuti format yang sama:
{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "API key tidak valid, sudah dicabut, atau proyeknya tidak aktif."
},
"timestamp": "2026-09-13T03:00:00.000Z"
}
| HTTP | Code | Arti |
|---|---|---|
| 401 | MISSING_API_KEY | Header X-API-Key tidak disertakan |
| 401 | MALFORMED_API_KEY | Format key salah |
| 401 | INVALID_API_KEY | Key tidak terdaftar / dicabut |
| 403 | INSUFFICIENT_SCOPE | Key tidak punya izin endpoint |
| 404 | NOT_FOUND | Transaksi tidak ditemukan |
| 409 | DUPLICATE_ORDER_ID | orderId sudah pernah dipakai |
| 422 | VALIDATION_ERROR | Parameter tidak valid |
| 429 | RATE_LIMIT_EXCEEDED | Batas permintaan terlampaui |
| 502 | PROVIDER_ERROR | Provider menolak permintaan |
| 500 | INTERNAL_ERROR | Kesalahan internal server |
Siap Mencoba?
Buat akun gratis dan dapatkan API key dalam waktu kurang dari lima menit.