curl --request POST \
--url https://pay-api.holdstation.com/partners/orders/{order_id}/confirm-withdraw \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Partner-App-Key: YOUR_APP_KEY' \
--header 'X-HSPay-Signature: BASE64_ED25519_SIGNATURE' \
--header 'X-HSPay-Timestamp: 1700000000'
{
"message": "success",
"data": {
"success": true,
"code": 0,
"error": "",
"order": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": 200001,
"order_type": 2,
"state": 2,
"processing_state": 23,
"partner_id": "partner-xyz",
"user_id": "",
"external_id": "",
"reference_no": "WITHDRAW-001",
"amount": "100.00",
"outcome": "2575000",
"currency": "token",
"token_address": "",
"chain_id": 0,
"rate": "25750",
"original_rate": "25750",
"provider": 0,
"recipient": "",
"client_ip": "",
"processing_time": 0,
"total_fee_vnd": 0,
"fees": {
"min_fee": 0,
"service_fee": 0
},
"payment_info": {
"bank_id": 970423,
"full_name": "NGUYEN VAN A",
"account_type": 1,
"account_number": "03815492701"
},
"pay_data": {
"bank_account_name": "NGUYEN VAN A",
"bank_account_number": "03815492701",
"bank_bin_code": "970423",
"bank_name": "MB Bank",
"bank_short_code": "MB",
"external_id": "",
"payment_link": "",
"qr_code": "",
"qr_image": ""
},
"callback": "https://yourapp.com/api/webhooks/payment",
"error": {
"details": "",
"error_code": "",
"error_message": "",
"retryable": false,
"source": 0,
"timestamp": ""
},
"created_at": { "seconds": 1700000000, "nanos": 0 },
"updated_at": { "seconds": 1700000030, "nanos": 0 },
"expired_at": { "seconds": 1700000900, "nanos": 0 }
}
}
}
{
"error": "order expired",
"error_code": "ORDER_EXPIRED",
"message": "Withdrawal order has expired; create a new order"
}
{
"error": "order not found",
"error_code": "ORDER_NOT_FOUND",
"message": "Withdrawal order not found"
}
Prefunding
Confirm Withdrawal
Confirm a pending withdrawal order and trigger the VND disbursement.
POST
/
partners
/
orders
/
{order_id}
/
confirm-withdraw
curl --request POST \
--url https://pay-api.holdstation.com/partners/orders/{order_id}/confirm-withdraw \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Partner-App-Key: YOUR_APP_KEY' \
--header 'X-HSPay-Signature: BASE64_ED25519_SIGNATURE' \
--header 'X-HSPay-Timestamp: 1700000000'
{
"message": "success",
"data": {
"success": true,
"code": 0,
"error": "",
"order": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": 200001,
"order_type": 2,
"state": 2,
"processing_state": 23,
"partner_id": "partner-xyz",
"user_id": "",
"external_id": "",
"reference_no": "WITHDRAW-001",
"amount": "100.00",
"outcome": "2575000",
"currency": "token",
"token_address": "",
"chain_id": 0,
"rate": "25750",
"original_rate": "25750",
"provider": 0,
"recipient": "",
"client_ip": "",
"processing_time": 0,
"total_fee_vnd": 0,
"fees": {
"min_fee": 0,
"service_fee": 0
},
"payment_info": {
"bank_id": 970423,
"full_name": "NGUYEN VAN A",
"account_type": 1,
"account_number": "03815492701"
},
"pay_data": {
"bank_account_name": "NGUYEN VAN A",
"bank_account_number": "03815492701",
"bank_bin_code": "970423",
"bank_name": "MB Bank",
"bank_short_code": "MB",
"external_id": "",
"payment_link": "",
"qr_code": "",
"qr_image": ""
},
"callback": "https://yourapp.com/api/webhooks/payment",
"error": {
"details": "",
"error_code": "",
"error_message": "",
"retryable": false,
"source": 0,
"timestamp": ""
},
"created_at": { "seconds": 1700000000, "nanos": 0 },
"updated_at": { "seconds": 1700000030, "nanos": 0 },
"expired_at": { "seconds": 1700000900, "nanos": 0 }
}
}
}
{
"error": "order expired",
"error_code": "ORDER_EXPIRED",
"message": "Withdrawal order has expired; create a new order"
}
{
"error": "order not found",
"error_code": "ORDER_NOT_FOUND",
"message": "Withdrawal order not found"
}
Confirm a withdrawal order previously created via Create Withdrawal from Fund. Once confirmed, Holdstation Pay disburses VND to the recipient bank account using the payment details from the original order.
The order must be confirmed within 15 minutes of creation, otherwise it expires and a new order must be created.
Authentication
string
required
Your partner app key.
string
required
Base64-encoded Ed25519 signature of the sign data.
string
required
Unix timestamp (seconds) of the request. Must be within 60 seconds of server time.
Path Parameters
string
required
The
id of the withdrawal order returned by Create Withdrawal from Fund.curl --request POST \
--url https://pay-api.holdstation.com/partners/orders/{order_id}/confirm-withdraw \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Partner-App-Key: YOUR_APP_KEY' \
--header 'X-HSPay-Signature: BASE64_ED25519_SIGNATURE' \
--header 'X-HSPay-Timestamp: 1700000000'
{
"message": "success",
"data": {
"success": true,
"code": 0,
"error": "",
"order": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": 200001,
"order_type": 2,
"state": 2,
"processing_state": 23,
"partner_id": "partner-xyz",
"user_id": "",
"external_id": "",
"reference_no": "WITHDRAW-001",
"amount": "100.00",
"outcome": "2575000",
"currency": "token",
"token_address": "",
"chain_id": 0,
"rate": "25750",
"original_rate": "25750",
"provider": 0,
"recipient": "",
"client_ip": "",
"processing_time": 0,
"total_fee_vnd": 0,
"fees": {
"min_fee": 0,
"service_fee": 0
},
"payment_info": {
"bank_id": 970423,
"full_name": "NGUYEN VAN A",
"account_type": 1,
"account_number": "03815492701"
},
"pay_data": {
"bank_account_name": "NGUYEN VAN A",
"bank_account_number": "03815492701",
"bank_bin_code": "970423",
"bank_name": "MB Bank",
"bank_short_code": "MB",
"external_id": "",
"payment_link": "",
"qr_code": "",
"qr_image": ""
},
"callback": "https://yourapp.com/api/webhooks/payment",
"error": {
"details": "",
"error_code": "",
"error_message": "",
"retryable": false,
"source": 0,
"timestamp": ""
},
"created_at": { "seconds": 1700000000, "nanos": 0 },
"updated_at": { "seconds": 1700000030, "nanos": 0 },
"expired_at": { "seconds": 1700000900, "nanos": 0 }
}
}
}
{
"error": "order expired",
"error_code": "ORDER_EXPIRED",
"message": "Withdrawal order has expired; create a new order"
}
{
"error": "order not found",
"error_code": "ORDER_NOT_FOUND",
"message": "Withdrawal order not found"
}