{
"amount": "100.00",
"currency": "token",
"token_symbol": "USDT",
"payment_info": {
"bank_id": 970423,
"full_name": "NGUYEN VAN A",
"account_type": 1,
"account_number": "03815492701"
},
"callback": "https://yourapp.com/api/webhooks/payment",
"reference_no": "WITHDRAW-001",
"idempotency_key": "unique-idempotency-key-001",
"kyc_id": "cust-001"
}
{
"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,
"amount": "100.00",
"outcome": "2575000",
"currency": "token",
"rate": "25750",
"reference_no": "WITHDRAW-001",
"callback": "https://yourapp.com/api/webhooks/payment",
"created_at": { "seconds": 1700000000, "nanos": 0 }
}
}
}
{
"error": "insufficient balance",
"error_code": "INSUFFICIENT_BALANCE",
"message": "Partner fund balance is insufficient"
}
Prefunding
Create Withdrawal from Fund
Create a withdrawal/off-ramp order with a confirmed quote. No VND is sent until the order is confirmed.
POST
/
partners
/
orders
/
withdraw
{
"amount": "100.00",
"currency": "token",
"token_symbol": "USDT",
"payment_info": {
"bank_id": 970423,
"full_name": "NGUYEN VAN A",
"account_type": 1,
"account_number": "03815492701"
},
"callback": "https://yourapp.com/api/webhooks/payment",
"reference_no": "WITHDRAW-001",
"idempotency_key": "unique-idempotency-key-001",
"kyc_id": "cust-001"
}
{
"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,
"amount": "100.00",
"outcome": "2575000",
"currency": "token",
"rate": "25750",
"reference_no": "WITHDRAW-001",
"callback": "https://yourapp.com/api/webhooks/payment",
"created_at": { "seconds": 1700000000, "nanos": 0 }
}
}
}
{
"error": "insufficient balance",
"error_code": "INSUFFICIENT_BALANCE",
"message": "Partner fund balance is insufficient"
}
Create a withdrawal/off-ramp order that debits a partner fund balance and locks in a confirmed quote (rate, outcome, fees). No VND is sent yet — the order stays in a pending-confirmation state for up to 15 minutes, after which it expires.
To actually pay out VND, call Confirm Withdrawal with the returned
order.id before the order expires.
Use idempotency_key to ensure the order is not created twice.
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.
Body Parameters
string
required
Amount to withdraw.
string
required
Currency of the amount. Available values:
vnd, token.string
required
Token symbol for the withdrawal (e.g.,
USDT, USDC, USD1).object
required
Bank payment information for the withdrawal recipient.
Show payment_info
Show payment_info
integer
required
Bank ID. See List Banks.
string
required
Full name of the account holder.
integer
required
Type of account number.
1 = Bank account number, 2 = ATM card number.string
required
Bank account number.
string
required
Callback URL for receiving withdrawal status updates.
string
Optional. Use this to map the Holdstation Pay order to your internal order. Must be unique per partner.
string
required
Idempotency key to ensure the withdrawal is not processed twice.
string
Partner customer KYC id. Required when the
partner_kyc feature flag is enabled for your account — the order is rejected if this is missing or does not match a registered KYC record. See Partner Customer KYC.{
"amount": "100.00",
"currency": "token",
"token_symbol": "USDT",
"payment_info": {
"bank_id": 970423,
"full_name": "NGUYEN VAN A",
"account_type": 1,
"account_number": "03815492701"
},
"callback": "https://yourapp.com/api/webhooks/payment",
"reference_no": "WITHDRAW-001",
"idempotency_key": "unique-idempotency-key-001",
"kyc_id": "cust-001"
}
{
"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,
"amount": "100.00",
"outcome": "2575000",
"currency": "token",
"rate": "25750",
"reference_no": "WITHDRAW-001",
"callback": "https://yourapp.com/api/webhooks/payment",
"created_at": { "seconds": 1700000000, "nanos": 0 }
}
}
}
{
"error": "insufficient balance",
"error_code": "INSUFFICIENT_BALANCE",
"message": "Partner fund balance is insufficient"
}