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
amountintegerYesWhole-Rupiah transfer amount (not including fee)
notify_urlstringNoWebhook URL for disbursement status updates

Example​

cURL
curl -X POST https://api.flypay.asia/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": 500000,
"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' => 500000,
];

$ch = curl_init('https://api.flypay.asia/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": 500000,
"fee": 5000,
"final_amount": 500000,
"total_debit": 505000,
"vendor_disbursement_id": null,
"source": "API",
"status": "PENDING",
"requested_at": "2026-06-01T11:00:00Z",
"created_at": "2026-06-01T11:00:00Z"
}
}

final_amount is the amount delivered to the beneficiary and never includes the fee. total_debit = request_amount + fee is the amount debited from your wallet. All amount fields are Rupiah.

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 + 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.