Skip to main content
POST
/
api
/
v1.0
/
cardless-withdrawals
/
{account_id}
Create
curl --request POST \
  --url https://sandbox-payment-b2b.singapay.id/api/v1.0/cardless-withdrawals/{account_id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'X-PARTNER-ID: <api-key>' \
  --data '
{
  "withdraw_amount": 500000,
  "payment_vendor_code": "CLWD_BRI"
}
'
{
  "status": 200,
  "success": true,
  "data": {
    "id": 1001,
    "transaction_id": "CW-20251024-0001",
    "status": "pending",
    "otp_number": "847291",
    "otp_expired_at": "2025-10-24T14:00:00+07:00",
    "amount": 500000,
    "vendor_fee": 6500,
    "our_margin": 1500,
    "total_paid": 508000,
    "transaction_type": "withdrawal",
    "balance_before": 1500000,
    "balance_after": 992000,
    "created_at": "2025-10-24T13:44:39+07:00",
    "updated_at": "2025-10-24T13:45:07+07:00"
  }
}

Authorizations

Authorization
string
header
required

JWT issued by POST /api/v1.1/access-token/b2b. Send Authorization: Bearer <token>.

X-PARTNER-ID
string
header
required

Merchant API key (Credential.api_key). Required on every request.

Path Parameters

account_id
string
required

Unique identifier (ULID) of the merchant account to debit. The account must be active and belong to the authenticated merchant.

Example:

"01K946KF851RK7FX075GJHBVKF"

Body

application/json

Withdrawal amount and payment channel selection.

Request body for initiating a new cardless withdrawal transaction.

withdraw_amount
enum<number>
required

Net withdrawal amount in IDR. Must be one of the fixed denominations: 50,000 / 100,000 / 250,000 / 500,000 / 750,000 / 1,000,000.

Available options:
50000,
100000,
250000,
500000,
750000,
1000000
Example:

500000

payment_vendor_code
string
required

Code identifying the cardless withdrawal payment channel. Use the CLWD_ prefix followed by the bank code (for example CLWD_BRI). Contact support for the list of available vendor codes.

Example:

"CLWD_BRI"

Response

Withdrawal created successfully. The data object contains the new transaction record including the OTP for ATM redemption.

Success response envelope for cardless withdrawal endpoints returning a single transaction record.

status
integer
required

HTTP status code echoed in the response body.

Example:

200

success
boolean
required

Indicates whether the request completed successfully.

Example:

true

data
object
required

The cardless withdrawal transaction record.