Paymenku Docs
Transaksi

Batal & refund

Membatalkan transaksi pending dan mengembalikan dana transaksi yang sudah dibayar.

Dua aksi tersedia lewat API: pembatalan transaksi pending dan refund transaksi paid.

Dukungan terbatas

Di produksi, pembatalan hanya tersedia untuk sebagian transaksi QRIS, dan refund hanya untuk sebagian transaksi e-wallet. Kanal lain dibalas 422. Transaksi sandbox diproses lokal tanpa memanggil penyedia.

Membatalkan transaksi

POST /transaction/cancel

curl https://paymenku.com/api/v1/transaction/cancel \
  --request POST \
  --header 'Authorization: Bearer sk_live_xxxxxxxxxxxxxxxx' \
  --header 'Content-Type: application/json' \
  --data '{ "trx_id": "IDP202610271005522956" }'

Hanya transaksi berstatus pending yang dapat dibatalkan.

{
  "status": "success",
  "message": "Transaction cancelled successfully",
  "data": {
    "trx_id": "IDP202610271005522956",
    "status": "cancelled"
  }
}

Transaksi sandbox dibalas Transaction cancelled (sandbox).

Galat yang mungkin:

HTTPPesanSebab
404Transaction not foundtrx_id salah atau milik merchant lain
422Cannot cancel transaction with status 'paid'. Only pending transactions can be cancelled.Status bukan pending
422Cancel is only supported for QRIS payment type.Kanal bukan QRIS
422Pesan bervariasi, mis. Cancel is not supported for this transaction.Kanal tidak mendukung pembatalan
422Cannot cancel: missing provider reference (platformTradeNo).Referensi penyedia tidak tersimpan
500Failed to cancel transaction: ...Penyedia menolak pembatalan

Refund transaksi

POST /transaction/refund

curl https://paymenku.com/api/v1/transaction/refund \
  --request POST \
  --header 'Authorization: Bearer sk_live_xxxxxxxxxxxxxxxx' \
  --header 'Content-Type: application/json' \
  --data '{
    "trx_id": "IDP202610271005426934",
    "refund_amount": 25950,
    "reason": "Pesanan dibatalkan pelanggan"
  }'
FieldWajibKeterangan
trx_idYaID transaksi Paymenku
refund_amountYaNominal refund, tidak melebihi nominal transaksi
reasonTidakAlasan, maksimal 255 karakter

Respons:

{
  "status": "success",
  "message": "Transaction refunded successfully",
  "data": {
    "trx_id": "IDP202610271005426934",
    "status": "refunded",
    "refund_amount": 25950,
    "merchant_refund_no": "REF20261027104512345678"
  }
}

Saldo merchant didebit sebesar refund_amount bila saldo mencukupi. Transaksi sandbox dibalas Transaction refunded (sandbox) tanpa memotong saldo nyata.

Galat yang mungkin:

HTTPPesanSebab
404Transaction not foundtrx_id salah atau milik merchant lain
422Cannot refund transaction with status 'pending'. Only paid transactions can be refunded.Status bukan paid
422Refund amount cannot exceed transaction amount.Nominal refund terlalu besar
422Refund is currently only supported for E-Wallet payment type.Kanal bukan e-wallet
422Pesan bervariasi, mis. Refund is not supported for this transaction.Kanal tidak mendukung refund
500Failed to refund transaction: ...Penyedia menolak refund

Setelah aksi

Status berubah menjadi cancelled atau refunded, dan webhook payment.status_updated tetap menjadi sumber status resmi. Jangan menganggap respons aksi sebagai pengganti webhook.

On this page