Gambaran Umum PPOB
PPOB (Payment Point Online Bank) API memungkinkan merchant untuk melakukan transaksi pembelian produk digital dan pembayaran tagihan melalui sistem Relay.
Endpoint yang Tersedia
| Endpoint | Metode | Keterangan |
|---|---|---|
POST /api/v1/merchant/ppob/check | POST | Cek status transaksi berdasarkan order_req_id |
POST /api/v1/merchant/ppob/phone-credit/transaction | POST | Beli pulsa / paket data |
POST /api/v1/merchant/ppob/ewallet/inquiry | POST | Inquiry sebelum top-up e-wallet |
POST /api/v1/merchant/ppob/ewallet/transaction | POST | Eksekusi top-up e-wallet |
POST /api/v1/merchant/ppob/pln/prepaid/inquiry | POST | Inquiry token listrik PLN prabayar |
POST /api/v1/merchant/ppob/pln/prepaid/transaction | POST | Beli token listrik PLN prabayar |
POST /api/v1/merchant/ppob/pln/postpaid/inquiry | POST | Inquiry tagihan PLN pascabayar |
POST /api/v1/merchant/ppob/pln/postpaid/transaction | POST | Bayar tagihan PLN pascabayar |
POST /api/v1/merchant/ppob/bpjs/inquiry | POST | Inquiry tagihan BPJS Kesehatan |
POST /api/v1/merchant/ppob/bpjs/transaction | POST | Bayar tagihan BPJS Kesehatan |
Autentikasi
Semua endpoint PPOB menggunakan API Key via header X-API-Key dan opsional Signature Validation. Lihat Autentikasi.
Alur Transaksi
Produk Tanpa Inquiry (Pulsa, Paket Data)
Merchant Sistem
│ │
│ POST /ppob/phone-credit/ │
│ transaction │
│────────────────────────────────>│
│ │ proses ke biller
│ 200 OK { status, serial_no } │
│<────────────────────────────────│
Produk Dengan Inquiry (E-Wallet, PLN, BPJS)
Merchant Sistem
│ │
│ POST /ppob/ewallet/inquiry │
│────────────────────────────────>│
│ 200 OK { amount, unit_price } │
│<────────────────────────────────│
│ │
│ POST /ppob/ewallet/transaction │
│────────────────────────────────>│
│ │ potong saldo, kirim ke biller
│ 200 OK { status, serial_no } │
│<────────────────────────────────│
Format Request Umum
Semua endpoint transaksi PPOB menerima JSON dengan field berikut (field spesifik per endpoint dijelaskan di halaman masing-masing):
| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
req_id | String | Ya (untuk payment) | ID unik merchant — idempotency key |
product_id | String | Ya | Kode produk dari Katalog Produk |
cust_id | String | Ya | ID pelanggan (nomor HP, ID meter PLN, nomor BPJS, dll) |
Format Response Umum
{
"success": true,
"message": "...",
"rc": "000",
"data": {
"req_id": "TXN-20240501-001",
"ref_id": "1777946295495371000",
"product_id": "XL5",
"cust_id": "08123456789",
"status": "SUCCESS",
"rc": "000",
"description": "Transaksi Sukses",
"message": "...",
"amount": "5000",
"unit_price": "5500",
"balance_used": "5500",
"balance": "494500",
"serial_no": "SN123456",
"data": {}
}
}
Poin Penting
- Strict JSON — field yang tidak dikenal dalam request body ditolak dengan
HTTP 422. - Minimal Amount — nominal minimum transaksi adalah Rp 1.000 (
"1000"). - Idempotency — gunakan
req_idyang sama untuk retry jika terjadi timeout; jangan kirimreq_idbaru untuk transaksi yang sama. - Produk dengan
status: MAINTENANCEataustatus: CLOSEDpada katalog tidak dapat diproses.