Paymenku Docs
Referensi APITransaksi

Buat transaksi

POST
/transaction/create

Membuat transaksi pembayaran pada satu kanal.

amount yang Anda kirim adalah nominal dasar. Nominal yang akhirnya dibayar pelanggan bergantung pada fee_mode kanal:

fee_modeDibayar pelangganDiterima merchant
merchantamountamount − fee
customeramount + feeamount
splitamount + bagian pelangganamount − bagian merchant

Nilai yang dibebankan ke pelanggan dibulatkan ke rupiah utuh agar halaman bayar dan QR ke bank tidak pernah berbeda.

Isi payment_info berbeda tiap tipe kanal. Panduan per metode: Virtual Account, QRIS, E-Wallet, Gerai Ritel.

Authorization

bearerAuth
headerAuthorizationBearer <token>

Kirim kunci API sebagai bearer token pada header Authorization, dengan format Bearer YOUR_APIKEY.

Ada dua jenis kunci:

  • sk_live_ — produksi. Transaksi nyata, dan butuh KYC yang sudah disetujui.
  • sk_test_ — sandbox. Tanpa perpindahan dana, tanpa syarat KYC.

Ambil kunci di Dashboard Merchant, menu Settings lalu API Keys.

Kunci API adalah kredensial rahasia: simpan di environment variable atau secret manager. Jangan pernah menaruhnya di frontend, aplikasi mobile, atau repositori publik.

Request Body

application/json
  1. body
channel_code*string

Kode kanal dari GET /payment-channels.

amount*number

Nominal dasar dalam rupiah. Minimum global 1.000, tetapi tiap kanal punya batasnya sendiri (VA 10.000, gerai ritel 15.000) — pakai min_amount dari daftar kanal.

Range1000 <= value
reference_id*string

Identitas unik di sistem Anda. Dipakai untuk pencocokan webhook.

Lengthlength <= 255
customer_name*string
customer_email*string
Formatemail
return_url*string

Tujuan redirect setelah pembayaran selesai.

Formaturi
customer_phone?string

Wajib untuk OVO. Dipakai juga untuk notifikasi WhatsApp bila merchant mengaktifkannya.

Lengthlength <= 20
order_items?array<>

Rincian produk; tampil di halaman bayar dan jejak audit.

Itemsitems <= 100

Response Body

Transaksi dibuat dengan status pending.

application/json
  1. response
status?string
data?
curl -X POST 'https://paymenku.com/api/v1/transaction/create' \  -H 'Content-Type: application/json' \  -d '{  "channel_code": "qris",  "amount": 15000,  "reference_id": "INV-20261027-001",  "customer_name": "Uji Dokumentasi",  "customer_email": "uji@example.com",  "return_url": "https://tokoanda.com/selesai",  "order_items": [    {      "name": "Item Uji",      "quantity": 1    }  ]}'
Example Response
{  "status": "success",  "data": {    "trx_id": "IDP202610271005522956",    "reference_id": "INV-20261027-001",    "amount": "15305.00",    "status": "pending",    "pay_url": "https://paymenku.com/pay/IDP202610271005522956",    "payment_info": {      "transaction_id": "6a1f0c2e-9d4b-4f7a-8c11-2b7e5d9a1c33",      "transaction_status": "pending",      "qr_url": "https://paymenku.com/api/qris/IDP202610271005522956",      "qr_string": "00020101021226670016ID.CO.QRIS.WWW01189360091400000000000215ID10240000000000303UMI51440014ID.CO.QRIS.WWW5204481453033605802ID5910Toko Anda6013Jakarta Pusat61051034062070703A0163041A2B",      "expiration_date": "2026-10-27T10:20:40+07:00"    }  }}