Bagaimana menarik saldo lewat API?
Kirim POST /withdrawal berisi amount, yaitu nominal bersih yang Anda terima. Saldo dipotong amount ditambah biaya penarikan (Rp 3.000 ke rekening bank, Rp 1.000 ke e-wallet DANA) dan dana dikirim ke tujuan yang sudah diverifikasi di dasbor. Nominal Rp 10.000 sampai Rp 10.000.000. Detail rekening tidak bisa dikirim lewat API.
Isi halaman ini dicocokkan dengan kode API per 16 Oktober 2026.
Ke mana permintaan dikirim?#
/api/v1/gateway/withdrawal- Batas per menit:
- 2 permintaan per menit per API key
- Tanda tangan:
- Wajib di kedua mode
Apa syaratnya?#
- Rekening penarikan sudah diisi lengkap dan diverifikasi di menu Rekening penarikan di dasbor.
- Tidak ada penarikan lain yang sedang berjalan.
- Saldo tersedia cukup untuk
amountditambah biaya.
Apa yang dikirim?#
amountintegerWajib- Nominal bersih yang Anda terima, Rp 10.000 sampai Rp 10.000.000. Di luar rentang itu dibalas galat validasi
422.
BODY='{"amount":100000}'
SIGNATURE=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$SEKALIPAY_SECRET_KEY" | sed 's/^.* //')
curl -X POST https://sekalipay.com/api/v1/gateway/withdrawal \
-H "X-API-Key: $SEKALIPAY_API_KEY" \
-H "X-Signature: $SIGNATURE" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--data-raw "$BODY"Apa isi respons sukses?#
{
"status": true,
"message": "Withdrawal request accepted and is waiting for manual payout",
"data": {
"settlement_id": 1287,
"settlement_number": "WD20261008001",
"net_amount": 100000,
"withdrawal_fee": 3000,
"gross_amount": 103000,
"total_deducted": 103000,
"status": "approved",
"processing_status": "manual_payout_pending",
"requested_at": "2026-10-08 15:10:00",
"estimated_processed_at": "2026-10-08 15:15:00",
"bank_account": {
"bank_name": "BCA",
"account_number": "1234****7890",
"account_holder": "Budi Santoso",
"verified_at": "2026-10-01T03:12:00.000000Z"
},
"balance": {
"available": 397000,
"pending": 103000
},
"info": "You will receive Rp 100.000 (withdrawal fee Rp 3.000 has been deducted)"
}
}net_amountnumber- Yang Anda terima di rekening.
withdrawal_feenumber- Biaya penarikan.
total_deductednumber- Yang dipotong dari saldo:
net_amount+withdrawal_fee. statusstringapproved: penarikan diterima dan saldonya dicadangkan.processing_statusstringqueued(dikirim otomatis) ataumanual_payout_pending(menunggu transfer oleh tim kami).estimated_processed_atstring- Perkiraan waktu proses,
Y-m-d H:i:sWIB. bank_accountobject- Rekening tujuan dengan nomor tersamar.
balanceobject- Saldo tersedia dan tertahan setelah penarikan.
Setiap penarikan, termasuk lewat API, dikabarkan ke email akun Anda. Penarikan yang tidak Anda kenali berarti API key dan secret key harus segera diganti di Pengaturan API.
Galat apa yang khusus endpoint ini?#
| HTTP | Kode | Arti |
|---|---|---|
| 400 | BANK_NOT_VERIFIED | Rekening penarikan belum diverifikasi di dasbor. |
| 400 | BANK_DETAILS_INCOMPLETE | Data rekening penarikan belum lengkap. |
| 400 | INSUFFICIENT_BALANCE | Saldo tersedia kurang dari amount ditambah biaya; data.shortage adalah kekurangannya. |
| 400 | PENDING_SETTLEMENT_EXISTS | Masih ada penarikan yang berjalan. Tunggu sampai selesai. |
| 400 | WITHDRAWAL_REJECTED | Penarikan ditolak karena keadaan akun berubah saat diproses. Periksa saldo dan rekening, lalu coba lagi. |
| 503 | PAYOUT_UNAVAILABLE | Layanan transfer sedang tidak bisa memproses penarikan (sisi kami, bukan saldo Anda). Coba lagi beberapa menit kemudian. |
| 500 | INTERNAL_SERVER_ERROR | Kesalahan di sisi kami; detailnya tidak dikirim. Coba lagi, atau hubungi dukungan dengan waktu kejadian dan merchant_ref_id. |
{
"status": false,
"message": "INSUFFICIENT_BALANCE",
"data": {
"available_balance": 50000,
"requested_amount": 100000,
"withdrawal_fee": 3000,
"gross_amount": 103000,
"total_required": 103000,
"shortage": 53000,
"info": "You need Rp 103.000 (amount + fee) but only have Rp 50.000"
}
}Jangan mengulang otomatis
Endpoint ini memindahkan uang dan tidak punya kunci idempotensi. Permintaan kedua saat yang pertama masih berjalan ditolak PENDING_SETTLEMENT_EXISTS, tetapi setelah penarikan pertama selesai, permintaan ulang membuat penarikan BARU. Setelah timeout atau galat 5xx, cek dulu riwayat penarikan di dasbor atau saldo lewat info akun sebelum mengirim lagi.
Siap memakai kunci Anda sendiri?
Masuk ke dasbor merchant untuk mengambil API key dan secret key, mengatur mode akses dan URL webhook, serta mengunduh koleksi Postman berisi kunci akun Anda.
Masuk ke dasbor
