KiPaydocs
Dokumentasi/Panduan

PANDUAN

Buat transaksi yang tetap terhubung dengan order Anda

Kirim nominal dan referensi order, simpan identitas publik transaksi, lalu gunakan response KiPay sebagai sumber data checkout.

FIELD LINEAGEDari input order ke data transaksi yang harus disimpan.
Field lineage dari order ke transaksiamount dan note masuk ke KiPay. KiPay memvalidasi request, menghitung amount akhir, lalu membuat identitas dan QR. Backend menyimpan trx_id, amount, qr_payload, status, dan expires_at.amount285000noteorder_nusa_2048credentialhanya serverrequestValidasiamount + credentialHitungunique_code + feeBuattrx_id + QR + expires_atresponsetrx_idSBX...VG57V5amount285215qr_payloadtersediastatuspendingexpires_at14:50Simpan seluruh response.Jangan merakit ulang status transaksi di browser.
01

Endpoint

POST/api/pay/{apiKey}/transactions

Endpoint ini membuat transaksi baru untuk project pemilik API key. Mode transaksi mengikuti mode project ketika request diterima.

02

Request

FieldTipeWajibKeterangan
amountintegerYaNominal sebelum unique_code
notestring atau nullTidakReferensi order atau pembeli
request.json
JSON
{
  "amount": 285000,
  "note": "order_nusa_2048"
}
03

Response

Gunakan trx_id untuk semua operasi berikutnya. Field amount berisi jumlah final yang harus dibayar pelanggan setelah unique_code ditambahkan. Field qr_url siap dipakai langsung sebagai src gambar, atau pakai qr_payload kalau ingin me-render QR sendiri — lihat panduan "Tampilkan QR".

201-response.json
JSON
{
  "trx_id": "SBX-20260825-VG57V5",
  "mode": "sandbox",
  "requested_amount": 285000,
  "unique_code": 215,
  "amount": 285215,
  "fee_amount": 2925,
  "fee_bearer": "merchant",
  "status": "pending",
  "provider": null,
  "note": "order_nusa_2048",
  "qr_payload": "0002010102122661...",
  "qr_url": "https://api.kipay.biz.id/api/pay/apg_your_project_key/transactions/SBX-20260825-VG57V5/qr.png",
  "matched_at": null,
  "created_at": "2026-08-26 06:35:08",
  "expires_at": "2026-08-26 06:50:08"
}
04

Simpan relasi dengan order

order-mapping.ts
TypeScript
await orders.update(orderId, {
  kipayTransactionId: response.trx_id,
  paymentStatus: response.status,
  payableAmount: response.amount,
  paymentExpiresAt: response.expires_at
});
Gunakan note sebagai referensi, bukan primary key

trx_id tetap menjadi identitas transaksi KiPay. Simpan relasi eksplisit antara trx_id dan order internal Anda.

05

Error yang perlu ditangani

HTTPKondisiTindakan aplikasi
400amount tidak valid atau QRIS belum diaturPerbaiki input atau konfigurasi project
404API key tidak ditemukanHentikan request dan periksa project
409unique_code tidak dapat dibuatKirim request baru dengan batas retry yang jelas