Dokumentasi API
Integrasikan payment gateway Iegpay ke aplikasi Anda. Buat pembayaran, terima webhook, dan kelola status secara otomatis.
Pendahuluan
API Payment Iegpay memungkinkan Anda membuat pembayaran dan menerima status pembayaran secara otomatis. Anda cukup berinteraksi dengan satu API yang konsisten dari Iegpay.
- Buat invoice pembayaran lewat API.
- Dapatkan instruksi pembayaran (QRIS, Virtual Account, E-Wallet, atau halaman checkout), lalu tampilkan ke pelanggan.
- Pelanggan membayar dengan metode pilihannya.
- Iegpay mengirim webhook ke callback URL Anda saat status berubah.
https://iegpay.iegcode.com/api untuk LIVE dan https://iegpay.iegcode.com/api-sandbox untuk TEST.
Halaman dokumitasi ini bersifat publik.
Quickstart
Lima langkah untuk mulai menerima pembayaran:
- Daftar merchant di halaman register. Anda langsung mendapatkan API Key dan Webhook Token (mode TEST).
- Atur callback URL (webhook) di dashboard merchant, atau kirim
callback_urlper invoice. - Buat pembayaran dengan memanggil
POST /api-sandbox/v1/invoices(pengujian) atauPOST /api/v1/invoices(produksi). Sertakanpayment_methodjika ingin langsung memilih metode. - Tampilkan instruksi bayar ke pelanggan: QR code (QRIS), nomor Virtual Account (VA), atau link E-Wallet. Tanpa
payment_method, pelanggan memilih metode di halaman checkout. - Terima webhook ke callback URL Anda saat pembayaran berhasil.
Autentikasi
Kirim API Key Anda pada header Authorization dengan skema Bearer
di setiap request. Mode (TEST/LIVE) mengikuti endpoint yang dipakai:
- Sandbox (
/api-sandbox/v1/...) dengan Sandbox API Key untuk pengujian. Transaksi berjalan di mode TEST. - Production (
/api/v1/...) dengan Live API Key untuk transaksi uang sungguhan. Mode LIVE hanya aktif setelah bisnis Anda disetujui.
# Sandbox / TEST Authorization: Bearer sk_sandbox_XXXXXXXXXXXXXXXXXXXXXXXXXXXX curl https://iegpay.iegcode.com/api-sandbox/v1/invoices # Production / LIVE Authorization: Bearer sk_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXX curl https://iegpay.iegcode.com/api/v1/invoices
Integrasi QRIS
Ingin hanya menerima pembayaran via QRIS? Cukup kirim
"payment_method": "QRIS" saat membuat invoice. API akan langsung
membuat kode QRIS dinamis — tanpa halaman checkout — dan mengembalikan
qr_code serta qr_image_url.
1. Buat pembayaran QRIS
# POST /api-sandbox/v1/invoices (untuk TEST; produksi gunakan /api/v1/invoices) curl -X POST https://iegpay.iegcode.com/api-sandbox/v1/invoices \ -H "Authorization: Bearer pk_iegpay_sandbox_XXXX" \ -H "Content-Type: application/json" \ -d '{ "customer_name": "Budi Santoso", "customer_email": "budi@example.com", "customer_phone": "081234567890", "description": "Paket Premium", "amount": 100000, "payment_method": "QRIS" }'
2. Response (201 Created)
# HTTP 201 — payment_method QRIS { "id": "qr_...", "external_id": "INV-20260801-ABCDE", "status": "PENDING", "amount": 100000, "mode": "TEST", "payment_method": "QRIS", "qr_code": "000201010212...6304", "qr_image_url": "https://api.qrserver.com/...qr...", "invoice_url": null, "created_at": "2026-08-01T10:00:00+07:00" }
3. Tampilkan QR ke pelanggan
Gunakan qr_code (string QRIS, cocok untuk ditampilkan ulang) atau
qr_image_url (gambar siap tampil) untuk render kode QR di aplikasi Anda:
<!-- Contoh tampilan QR di frontend --> <!-- Gunakan nilai 'qr_image_url' dari respons API di atas --> <img src="https://pay.iegpay.com/storage/qr/INV-20260801-ABCDE.png" alt="QRIS" />
src di atas berasal dari field qr_image_url pada
response API — jangan di-hardcode. Jika ingin merender gambar sendiri,
decode string QRIS pada field qr_code.
PAID begitu pembayaran diterima — pantau lewat
webhook atau GET /api-sandbox/v1/invoices/{external_id} (produksi: /api/v1/...).
Integrasi Virtual Account (VA)
Untuk menerima transfer bank lewat Virtual Account, kirim salah satu kode VA pada
payment_method: BCA_VA, BNI_VA,
BRIVA, atau MANDIRI_VA. API mengembalikan
account_number (nomor VA) yang bisa langsung ditampilkan, atau
invoice_url sebagai alternatif.
1. Buat pembayaran BCA VA
# POST /api-sandbox/v1/invoices (untuk TEST; produksi gunakan /api/v1/invoices) curl -X POST https://iegpay.iegcode.com/api-sandbox/v1/invoices \ -H "Authorization: Bearer pk_iegpay_sandbox_XXXX" \ -H "Content-Type: application/json" \ -d '{ "customer_name": "Budi Santoso", "customer_email": "budi@example.com", "customer_phone": "081234567890", "description": "Paket Premium", "amount": 150000, "payment_method": "BCA_VA" }'
2. Response (201 Created)
# HTTP 201 { "external_id": "INV-20260801-ABCDE", "status": "PENDING", "amount": 150000, "payment_method": "BCA_VA", "account_number": "2833400000000123", "bank_code": "BCA", "invoice_url": null, "created_at": "2026-08-01T10:00:00+07:00" }
account_number ke pelanggan beserta instruksi transfer
(mis. dari m-banking BCA ke nomor VA tersebut). Status VA berubah menjadi
PAID setelah transfer masuk & dikonfirmasi.
Integrasi E-Wallet
Mendukung OVO, DANA, GoPay
(GOPAY), dan ShopeePay (SHOPEEPAY).
E-Wallet diarahkan ke halaman pembayaran penyedia — API mengembalikan
invoice_url yang harus dimuat pelanggan untuk menyelesaikan pembayaran.
1. Buat pembayaran DANA
# POST /api-sandbox/v1/invoices (untuk TEST; produksi gunakan /api/v1/invoices) curl -X POST https://iegpay.iegcode.com/api-sandbox/v1/invoices \ -H "Authorization: Bearer pk_iegpay_sandbox_XXXX" \ -H "Content-Type: application/json" \ -d '{ "customer_name": "Budi Santoso", "customer_email": "budi@example.com", "customer_phone": "081234567890", "description": "Top Up Saldo", "amount": 50000, "payment_method": "DANA" }'
2. Response (201 Created)
# HTTP 201 { "external_id": "INV-20260801-XYZ89", "status": "PENDING", "amount": 50000, "payment_method": "DANA", "invoice_url": "https://checkout-sandbox.iegpay.com/...", "created_at": "2026-08-01T10:00:00+07:00" }
invoice_url untuk menyelesaikan pembayaran
E-Wallet. Setelah pembayaran berhasil, mereka dikembalikan ke
invoice_url/halaman status pembayaran aplikasi Anda.
Buat Pembayaran
Membuat invoice pembayaran baru dan mengembalikan instruksi pembayaran.
/api-sandbox/v1/invoices untuk mode TEST dan /api/v1/invoices untuk mode LIVE.
POST /api/v1/invoices
Parameter
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
external_id | string | opsional | Reference ID unik milik Anda. Jika kosong dibuat otomatis. |
customer_name | string | ya | Nama pelanggan. |
customer_email | ya | Email pelanggan. | |
customer_phone | string | ya | Nomor telepon pelanggan. |
description | string | ya | Deskripsi pembayaran. |
amount | number | ya | Nominal pembayaran dalam IDR, minimal 1.000. |
currency | string | opsional | Mata uang, default IDR. |
payment_method | string | opsional | Nama metode (cth: QRIS, BCA_VA, OVO). Jika diisi, pembayaran langsung dibuat untuk metode itu; jika kosong, pelanggan memilih lewat halaman checkout. Lihat daftar channel di bawah. |
callback_url | url | opsional | URL webhook khusus invoice ini. Mengesampingkan callback URL akun. |
Daftar Payment Method
Contoh Request (cURL) — tanpa metode (pelanggan memilih)
# POST /api-sandbox/v1/invoices (untuk TEST; produksi gunakan /api/v1/invoices) curl -X POST https://iegpay.iegcode.com/api-sandbox/v1/invoices \ -H "Authorization: Bearer pk_iegpay_sandbox_XXXX" \ -H "Content-Type: application/json" \ -d '{ "customer_name": "Budi Santoso", "customer_email": "budi@example.com", "customer_phone": "081234567890", "description": "Pembayaran Paket Premium", "amount": 100000 }'
Contoh Response (201 Created)
# HTTP 201 { "id": "64f1c2b3e4a5f6c7d8e9f0a1", "external_id": "INV-20260801-ABCDE", "status": "PENDING", "amount": 100000, "currency": "IDR", "mode": "TEST", "payment_method": "QRIS", "paid_at": null, "qr_code": "000011010212265215...", "qr_image_url": "https://...", "account_number": null, "bank_code": null, "invoice_url": "https://pay.iegpay.com/payment/status/INV-20260801-ABCDE", "created_at": "2026-08-01T10:00:00+07:00" }
Jika payment_method kosong, arahkan pelanggan ke
invoice_url tempat mereka memilih metode — mulai dari QRIS,
E-Wallet, hingga Virtual Account.
Cek Status Invoice
Mendapatkan detail invoice berdasarkan reference ID Anda atau ID transaksi Iegpay.
GET /api/v1/invoices/{external_id}
Contoh Request (cURL)
# GET /api-sandbox/v1/invoices/INV-20260801-ABCDE (TEST; produksi: /api/v1/...) curl https://iegpay.iegcode.com/api-sandbox/v1/invoices/INV-20260801-ABCDE \ -H "Authorization: Bearer pk_iegpay_sandbox_XXXX"
Contoh Response (200 OK)
# HTTP 200 { "id": "64f1c2b3e4a5f6c7d8e9f0a1", "external_id": "INV-20260701-ABCDE", "status": "PAID", "amount": 100000, "currency": "IDR", "mode": "TEST", "payment_method": "QRIS", "paid_at": "2026-08-01T10:05:00+07:00", "invoice_url": "https://pay.iegpay.com/checkout/...", "created_at": "2026-08-01T10:00:00+07:00" }
Status Pembayaran
Setiap invoice memiliki salah satu status berikut:
| Status | Deskripsi |
|---|---|
| Menunggu Pembayaran | Pembayaran dibuat, menunggu pelanggan membayar. |
| Lunas | Pembayaran berhasil. |
| Gagal | Pembayaran gagal. |
| Kadaluarsa | Waktu pembayaran habis. |
| Dibatalkan | Pembayaran dibatalkan. |
Status PAID bersifat final dan tidak akan berubah meskipun ada webhook datang belakangan.
Pengenalan Webhook
Saat status pembayaran berubah, Iegpay mengirimkan notifikasi ke
callback_url yang Anda daftarkan. Anda tidak perlu mengecek status
secara terus-menerus.
| Field | Deskripsi |
|---|---|
id | ID event webhook. |
external_id | Reference ID invoice milik Anda. |
status | Status terbaru pembayaran (PENDING, PAID, FAILED, dst). |
amount | Nominal pembayaran. |
currency | Mata uang pembayaran. |
payment_method | Metode pembayaran yang digunakan pelanggan. |
paid_at | Waktu pembayaran berhasil (jika sudah dibayar). |
Contoh Payload Webhook
# POST <callback_url> { "id": "evt_8f2d91a5", "external_id": "INV-20260701-ABCDE", "status": "PAID", "amount": 100000, "currency": "IDR", "payment_method": "QRIS", "paid_at": "2026-08-01T10:05:00+07:00" }
GET /api-sandbox/v1/invoices/{external_id} (produksi: /api/v1/...).
Verifikasi Webhook
Untuk memastikan webhook benar-benar berasal dari Iegpay, bandingkan header
x-callback-token pada request dengan Webhook Token Anda.
x-callback-token: <Webhook Token Anda>
Contoh verifikasi di PHP:
// $expectedToken = 'Webhook Token Anda' // $receivedToken = $_SERVER['HTTP_X_CALLBACK_TOKEN'] ?? '' if (!hash_equals($expectedToken, $receivedToken)) { return 'Invalid signature'; // tolak } return 'OK'; // HTTP 200, webhook valid
Testing dengan Postman
Kami menyediakan koleksi API Postman yang sudah berisi contoh pembuatan pembayaran (QRIS, VA, E-Wallet, dan tanpa metode) plus cek status.
Download Postman Collection- Unduh file JSON di atas.
- Buka aplikasi Postman, klik Import, lalu pilih file JSON tersebut.
- Buka tab Variables di dalam koleksi.
- Ganti value
API_KEYdengan Sandbox API Key dari dashboard Anda. - Jalankan request folder "QRIS" untuk percobaan tanpa checkout — ambil
qr_image_urllalu pindai QR. - Untuk mode LIVE, ubah
BASE_URLke/apidan gantiAPI_KEYke Live API Key.
Kode Error
| HTTP | Deskripsi |
|---|---|
401 | API Key tidak valid atau tidak dikirim. |
403 | Mode LIVE digunakan tetapi bisnis belum terverifikasi. Selesaikan verifikasi di dashboard merchant. |
404 | Invoice tidak ditemukan. |
422 | Validasi gagal (misalnya nominal di bawah 1.000), atau gagal membuat pembayaran di penyedia — transaksi ditandai FAILED. |
500 | Terjadi kesalahan server. |
Mode Sandbox & Production
Setiap merchant memiliki mode: TEST atau LIVE .
- TEST — transaksi berjalan di sandbox. Tidak ada uang sungguhan. Ini default saat mendaftar dan dapat langsung dipakai.
- LIVE — transaksi uang sungguhan. Mode ini hanya aktif setelah bisnis Anda disetujui melalui verifikasi di dashboard merchant.
Gunakan endpoint /api-sandbox/v1 untuk mode TEST dan
/api/v1 untuk mode LIVE, dengan API Key yang sesuai.