Skip to main content
Disburse funds from a client wallet to a bank account. All endpoints require the standard x-api-key + x-timestamp headers — see Authentication. Typical flow: list banks → quote → create → poll get.

1. List available banks

GET /api/v3/wallets/{wallet_id}/banks Call this first to obtain valid bank_code values for the wallet’s payout vendor.
{
  "banks": [
    { "code": "BCA", "name": "Bank Central Asia", "swift": "CENAIDJA" }
  ],
  "total_count": 1
}
FieldType
banks[].codestring
banks[].namestring
banks[].swiftstring
total_countinteger

2. Quote a disbursement (non-binding fee preview)

POST /api/v3/disbursements/quote

Request

FieldTypeRequiredNotes
client_wallet_idstring (UUID)Yes
amountstring (decimal)Yes
bank_codestringYesFrom List available banks.
account_nostringYes
transfer_typestringNoBIFAST or RTOL. Defaults to BIFAST.

Response

{
  "amount": "100000",
  "platform_fee": "2500",
  "net_amount": "97500",
  "currency": "IDR",
  "bank_code": "BCA",
  "bank_name": "Bank Central Asia",
  "account_no": "1234567890",
  "account_holder_name": "JOHN DOE"
}
Quote has no side effects (no funds locked, nothing persisted).

3. Create a disbursement

POST /api/v3/disbursements
Required header: Idempotency-Key (max 64 chars). Missing → 400. Reusing the same key returns the original result rather than creating a duplicate.

Request

FieldTypeRequiredNotes
client_wallet_idstring (UUID)Yes
amountstring (decimal)Yes
bank_codestringYes
account_nostringYes
transfer_typestringNoBIFAST or RTOL. Defaults to BIFAST.
memostringNoMax 255 chars.
curl -X POST https://live.launcx.com/api/v3/disbursements \
  -H "Content-Type: application/json" \
  -H "x-api-key: {{your-v3-api-key}}" \
  -H "x-timestamp: {{unix_timestamp_in_milliseconds}}" \
  -H "Idempotency-Key: {{unique-key-per-request}}" \
  -d '{
    "client_wallet_id": "....",
    "amount": "100000",
    "bank_code": "BCA",
    "account_no": "1234567890",
    "transfer_type": "BIFAST",
    "memo": "payout #123"
  }'

Response

FieldTypeNotes
idstring (UUID)
client_idstring (UUID)
wallet_idstring (UUID)
statusstringSee Status values.
amountstring (decimal)
platform_feestring (decimal)
net_amountstring (decimal)
currencystringIDR.
bank_codestring
bank_namestring
account_nostring
account_holder_namestring
memostring | null
idempotency_keystringEchoes the header.
failed_reasonstring | null
Status codes:
  • 201 Created — fresh disbursement created.
  • 200 OK with header Idempotent-Replayed: true — the Idempotency-Key was already used; the original result is returned.

4. Get a disbursement

GET /api/v3/disbursements/{id} Returns the disbursement if it belongs to your client; otherwise 404.
FieldTypeNotes
idstring (UUID)
client_idstring (UUID)
wallet_idstring (UUID)
amountstring (decimal)
currencystringIDR.
platform_feestring (decimal)
net_amountstring (decimal)
statusstringSee Status values.
failed_reasonstring | null
memostring | null
bank_codestring
bank_namestring
account_nostring
account_holder_namestring
verified_atstring | nullISO 8601 UTC.
requested_atstring | nullISO 8601 UTC.
completed_atstring | nullISO 8601 UTC.
created_atstringISO 8601 UTC.
updated_atstringISO 8601 UTC.

5. Disbursement status values

PENDING_VERIFICATIONVERIFIEDREQUESTEDSUCCESS, with terminal failure states FAILED, EXPIRED, and CANCELLED.