Buat dan cek status pembayaran QRIS, Virtual Account, dan Direct payment.
Semua endpoint membutuhkan header x-api-key. Lihat Authentication.
Payment adalah tagihan pembayaran yang Anda buat untuk menerima uang dari pelanggan. Setelah pelanggan membayar, transaksi akan muncul di Mutations API dengan field payment berisi detail order.
Siklus Status Pembayaran
POST /api/v1/payments
Buat permintaan pembayaran baru.
Request Body
| Field | Type | Required | Keterangan |
|---|---|---|---|
amount | number | Ya | Jumlah pembayaran dalam IDR |
walletAccountId | string | Ya | UUID akun e-wallet penerima — akun ini harus sudah terhubung via Accounts API |
redirectUrl | string | Ya | URL redirect setelah pelanggan selesai membayar |
orderId | string | Ya | ID order unik dari sistem Anda — gunakan untuk mencocokkan pembayaran |
type | string | Ya | Tipe pembayaran (lihat tabel provider di bawah) |
Tipe Pembayaran per Provider
| Provider | Tipe yang Didukung |
|---|---|
GOPAY-MERCHANT | QRIS, QRIS-DYNAMIC |
GRAB-MERCHANT | QRIS |
DANA | DIRECT, VA-BCA, VA-MANDIRI, VA-PERMATA |
DANA BISNIS | QRIS, QRIS-DYNAMIC |
Virtual Account (VA-BCA, VA-MANDIRI, VA-PERMATA) dan DIRECT hanya tersedia untuk provider DANA. Menggunakan tipe ini di provider lain akan mengembalikan error 400.
Response 200
Penjelasan Field Respons
| Field | Keterangan |
|---|---|
id | UUID pembayaran — gunakan untuk cek status via endpoint di bawah |
uniqueCode | Kode unik yang ditambahkan ke amount agar nominal pembayaran berbeda tiap tagihan. Jika 0, tidak ada kode unik |
totalAmount | Nominal yang harus dibayar pelanggan (amount + uniqueCode) |
paymentUrl | Halaman pembayaran yang bisa Anda tampilkan ke pelanggan |
expiresAt | Batas waktu pembayaran — setelah ini status berubah menjadi EXPIRED |
qrisImage | URL gambar QR code PNG 256×256 — hanya ada untuk tipe QRIS dan QRIS-DYNAMIC |
Tampilkan QR code langsung ke pelanggan dengan tag <img>:
Errors
| Status | Keterangan |
|---|---|
400 | Tipe pembayaran tidak didukung provider ini |
401 | API key tidak valid atau tidak ada |
404 | Akun e-wallet (walletAccountId) tidak ditemukan |
500 | Internal server error |
Contoh
GET /api/v1/payments/status/:paymentId
Cek status pembayaran. Gunakan ini untuk polling setelah membuat tagihan, atau untuk verifikasi sebelum memproses order.
Untuk notifikasi otomatis tanpa polling, gunakan Webhooks dan dengarkan event payment.completed atau payment.expired.
Path Parameters
| Parameter | Type | Required | Keterangan |
|---|---|---|---|
paymentId | string | Ya | UUID pembayaran dari response create |
Response 200
Status Pembayaran
| Status | Keterangan |
|---|---|
PENDING | Menunggu pembayaran dari pelanggan |
PAID | Pembayaran berhasil diterima |
EXPIRED | Pelanggan tidak membayar sebelum expiresAt |
FAILED | Pembayaran gagal diproses |
Errors
| Status | Keterangan |
|---|---|
401 | API key tidak valid atau tidak ada |
404 | Pembayaran tidak ditemukan |
500 | Internal server error |
Contoh
© 2026 PT. Cobra Code Indonesia. All rights reserved.
Last updated: 4/11/2026