Lewati ke konten utama

Create Bank Disbursement

Transfer funds from your wallet to a bank account.

Endpoint

POST /v1/disbursements

Request

Body

FieldTypeRequiredDescription
idempotency_keystringYesUnique key to prevent duplicates (e.g., disb-20260601-001)
channelstringYesMust be BANK
bank_short_codestringYesBank code (e.g., BCA, MANDIRI, BNI) — see Bank Codes
account_numberstringYesDestination account number
account_namestringYesAccount holder's name
amount_minorintegerYesTransfer amount in minor units (not including fee)
notify_urlstringNoWebhook URL for disbursement status updates

Example

cURL
curl -X POST https://api.nusio-saka.com/v1/disbursements \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"idempotency_key": "disb-20260601-001",
"channel": "BANK",
"bank_short_code": "BCA",
"account_number": "1234567890",
"account_name": "Budi Santoso",
"amount_minor": 50000000,
"notify_url": "https://your-site.com/webhooks/disbursement"
}'
PHP
$payload = [
'idempotency_key' => 'disb-20260601-001',
'channel' => 'BANK',
'bank_short_code' => 'BCA',
'account_number' => '1234567890',
'account_name' => 'Budi Santoso',
'amount_minor' => 50000000,
];

$ch = curl_init('https://api.nusio-saka.com/v1/disbursements');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: '.$apiKey, 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
]);
$response = json_decode(curl_exec($ch), true);

Response

HTTP 201 Created

{
"success": true,
"data": {
"id": "uuid",
"ref_code": "DSB-260601110000-C3D4",
"idempotency_key": "disb-20260601-001",
"channel": "BANK",
"bank_id": "uuid",
"account_number": "1234567890",
"account_name": "Budi Santoso",
"ewallet_provider": null,
"ewallet_phone": null,
"request_amount_minor": 50000000,
"fee_minor": 500000,
"final_amount_minor": 50500000,
"vendor_disbursement_id": null,
"source": "API",
"status": "PENDING",
"requested_at": "2026-06-01T11:00:00Z",
"created_at": "2026-06-01T11:00:00Z"
}
}

Note: final_amount_minor = request_amount_minor + fee_minor. This full amount is debited from your wallet.

Error Codes

CodeHTTPDescription
NOT_WALLET_MERCHANT403Account is not WALLET settlement type
BANK_NOT_FOUND400bank_short_code is not recognized
BANK_DISABLED422Bank exists but is not available for disbursement
MISSING_BANK_INFO400account_number or account_name is missing
INSUFFICIENT_BALANCE422Wallet balance < amount_minor + fee
AMOUNT_EXCEEDS_LIMIT422Exceeds per-transaction limit
DAILY_LIMIT_EXCEEDED422Exceeds daily limit
DUPLICATE_IDEMPOTENCY_KEY409A disbursement with this key already exists

Bank Codes

Common bank short codes:

CodeBank
BCABank Central Asia
MANDIRIBank Mandiri
BNIBank Negara Indonesia
BRIBank Rakyat Indonesia
CIMBCIMB Niaga
PERMATABank Permata
BTNBank Tabungan Negara
DANAMONBank Danamon
PANINBank Panin
MAYBANKMaybank Indonesia

For a complete list, use GET /v1/banks from the dashboard API or contact your account manager.