Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Eksekusi Transfer Dana

Mengeksekusi transfer dana ke rekening bank tujuan. Saldo deposit merchant akan dipotong.

URL: POST /api/v1/merchant/disbursement/payment

Lakukan Inquiry Rekening terlebih dahulu untuk memvalidasi rekening dan mendapatkan informasi fee sebelum menjalankan payment.

Request

Headers

HeaderWajibKeterangan
X-API-KeyYaAPI Key merchant
Content-TypeYaapplication/json
X-SignatureKondisionalJika Signature Validation aktif
X-TimestampKondisionalUnix timestamp (jika Signature Validation aktif)

Body

FieldTipeWajibKeterangan
req_idStringYaID unik transaksi dari merchant — idempotency key
product_idStringYaKode produk transfer (contoh: "DSTF")
account_numberStringYaNomor rekening tujuan (sama dengan inquiry)
amountStringYaNominal transfer dalam IDR (sama dengan inquiry)
bank_codeStringTidakKode bank tujuan (opsional)

Idempotency via req_id

req_id berfungsi sebagai idempotency key:

  • Retry dengan req_id yang sama → sistem mengembalikan hasil transaksi pertama, tanpa debit ganda.
  • Gunakan req_id yang berbeda hanya untuk transaksi yang memang baru.

Contoh Request

{
  "req_id": "PAY-20240430-001",
  "product_id": "DSTF",
  "account_number": "1380610457",
  "amount": "10000",
  "bank_code": "014"
}
curl --location 'https://api-sandbox.alfakios.com/api/v1/merchant/disbursement/payment' \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: apk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  --data '{
    "req_id": "PAY-20240430-001",
    "product_id": "DSTF",
    "account_number": "1380610457",
    "amount": "10000",
    "bank_code": "014"
  }'

Response

Spesifikasi

FieldTipeKeterangan
trx_idStringID transaksi internal sistem
req_idStringreq_id yang dikirim merchant
ref_idStringID referensi dari biller
account_numberStringNomor rekening tujuan
account_nameStringNama pemilik rekening
bank_codeStringKode bank tujuan
bank_nameStringNama bank tujuan
statusStringSUCCESS, FAILED, atau PENDING
rcStringKode respon dari biller atau sistem
descriptionStringKeterangan RC
messageStringKeterangan detail
amountStringNominal transfer
feeStringBiaya admin yang dipotong
total_costStringTotal yang dipotong (amount + fee)
balance_usedStringSaldo yang benar-benar terpotong
balanceStringSaldo deposit setelah transaksi
serial_noStringNomor referensi transfer dari biller
dataObjectInformasi tambahan
detailsStringString OtomaX-style — lihat Integrasi OtomaX

Contoh Response Berhasil

{
  "success": true,
  "message": "Disbursement payment completed",
  "rc": "000",
  "data": {
    "trx_id": "177794638960894000",
    "req_id": "PAY-20240430-001",
    "ref_id": "980173",
    "account_number": "1380610457",
    "account_name": "DUMMY NAME",
    "bank_code": "014",
    "bank_name": "",
    "status": "SUCCESS",
    "rc": "00",
    "description": "Transaksi Sukses",
    "message": "DISBURSEMENT DSTF KE 1380610457 SUKSES. SAL=268994,ID=177794638960894000",
    "amount": "10000",
    "fee": "3000",
    "total_cost": "13000",
    "balance_used": "13000",
    "balance": "268994",
    "serial_no": "980173",
    "data": {},
    "details": "REQID:PAY-20240430-001.REFID:980173.STATUS:SUCCESS.RC:00.NAMA:DUMMY NAME.REK:1380610457.KODEBANK:014.NOMINAL:10000.FEE:3000.TOTAL:13000.SALDO:268994.TERPAKAI:13000.SN:980173.KET:Transaksi Sukses"
  }
}

Contoh Response Saldo Tidak Cukup

{
  "success": true,
  "message": "Disbursement payment completed",
  "rc": "008",
  "data": {
    "req_id": "PAY-20240430-002",
    "ref_id": "",
    "account_number": "1380610457",
    "account_name": "",
    "status": "FAILED",
    "rc": "008",
    "description": "Insufficient Balance",
    "message": "Saldo deposit tidak mencukupi",
    "amount": "500000",
    "fee": "6500",
    "total_cost": "506500",
    "balance_used": "0",
    "balance": "100000",
    "serial_no": "",
    "data": {}
  }
}

Contoh Response PENDING

{
  "success": true,
  "message": "Disbursement payment completed",
  "rc": "021",
  "data": {
    "req_id": "PAY-20240430-003",
    "ref_id": "980174",
    "account_number": "1380610457",
    "account_name": "BUDI SANTOSO",
    "status": "PENDING",
    "rc": "021",
    "description": "Transaction Pending",
    "message": "Transfer sedang diproses oleh bank tujuan",
    "amount": "500000",
    "fee": "6500",
    "total_cost": "506500",
    "balance_used": "506500",
    "balance": "4493500",
    "serial_no": "",
    "data": {}
  }
}

Jika status: "PENDING", gunakan endpoint Cek Status untuk polling hasil akhir.

Rekomendasi Retry Policy (PENDING)

Attempt 1 : tunggu  30 detik
Attempt 2 : tunggu  60 detik
Attempt 3 : tunggu 120 detik
Attempt 4 : tunggu 300 detik
Attempt 5+: eskalasi ke tim support dengan menyertakan req_id

JANGAN kirim payment baru sebelum mendapatkan status final. Transfer ganda dapat terjadi jika payment dikirim lebih dari sekali untuk transaksi yang sama.