Lewati ke konten utama

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?#

POST/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 amount ditambah 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.
cURL
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?#

200 OK
{
  "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.
statusstring
approved: penarikan diterima dan saldonya dicadangkan.
processing_statusstring
queued (dikirim otomatis) atau manual_payout_pending (menunggu transfer oleh tim kami).
estimated_processed_atstring
Perkiraan waktu proses, Y-m-d H:i:s WIB.
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?#

HTTPKodeArti
400BANK_NOT_VERIFIEDRekening penarikan belum diverifikasi di dasbor.
400BANK_DETAILS_INCOMPLETEData rekening penarikan belum lengkap.
400INSUFFICIENT_BALANCESaldo tersedia kurang dari amount ditambah biaya; data.shortage adalah kekurangannya.
400PENDING_SETTLEMENT_EXISTSMasih ada penarikan yang berjalan. Tunggu sampai selesai.
400WITHDRAWAL_REJECTEDPenarikan ditolak karena keadaan akun berubah saat diproses. Periksa saldo dan rekening, lalu coba lagi.
503PAYOUT_UNAVAILABLELayanan transfer sedang tidak bisa memproses penarikan (sisi kami, bukan saldo Anda). Coba lagi beberapa menit kemudian.
500INTERNAL_SERVER_ERRORKesalahan di sisi kami; detailnya tidak dikirim. Coba lagi, atau hubungi dukungan dengan waktu kejadian dan merchant_ref_id.
400 INSUFFICIENT_BALANCE
{
  "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