curl --request POST \
--url "https://api.stablepay.co/api/v1/fund/withdrawals" \
--header "Authorization: Bearer <API_KEY>" \
--header "X-StablePay-Timestamp: <TIMESTAMP>" \
--header "X-StablePay-Nonce: <NONCE>" \
--header "X-StablePay-Signature: <SIGNATURE>" \
--header "Content-Type: application/json" \
--data '{
"merchant_id": "2000000001",
"currency": "USDC",
"amount": 10000,
"recipient_id": "9000000080"
}'
const response = await fetch("https://api.stablepay.co/api/v1/fund/withdrawals", {
method: "POST",
headers: {
"Authorization": "Bearer <API_KEY>",
"X-StablePay-Timestamp": "<TIMESTAMP>",
"X-StablePay-Nonce": "<NONCE>",
"X-StablePay-Signature": "<SIGNATURE>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"merchant_id": "2000000001",
"currency": "USDC",
"amount": 10000,
"recipient_id": "9000000080"
})
});
console.log(await response.json());
{
"withdrawal_id": "9000000060",
"merchant_id": "2000000001",
"account_no": "00000001",
"currency": "USDC",
"amount": 10000,
"recipient_id": "9000000080",
"network": "solana",
"recipient": {
"address": "4fYNw3dojWmQ4dXtSGE9epjRGy9pFSx62YymTvAVmRoz"
},
"status": "processing",
"created": 1718726403,
"updated": 1718726403
}
Global Accounts API
Create a withdrawal
Create a withdrawal
POST
/
api
/
v1
/
fund
/
withdrawals
curl --request POST \
--url "https://api.stablepay.co/api/v1/fund/withdrawals" \
--header "Authorization: Bearer <API_KEY>" \
--header "X-StablePay-Timestamp: <TIMESTAMP>" \
--header "X-StablePay-Nonce: <NONCE>" \
--header "X-StablePay-Signature: <SIGNATURE>" \
--header "Content-Type: application/json" \
--data '{
"merchant_id": "2000000001",
"currency": "USDC",
"amount": 10000,
"recipient_id": "9000000080"
}'
const response = await fetch("https://api.stablepay.co/api/v1/fund/withdrawals", {
method: "POST",
headers: {
"Authorization": "Bearer <API_KEY>",
"X-StablePay-Timestamp": "<TIMESTAMP>",
"X-StablePay-Nonce": "<NONCE>",
"X-StablePay-Signature": "<SIGNATURE>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"merchant_id": "2000000001",
"currency": "USDC",
"amount": 10000,
"recipient_id": "9000000080"
})
});
console.log(await response.json());
{
"withdrawal_id": "9000000060",
"merchant_id": "2000000001",
"account_no": "00000001",
"currency": "USDC",
"amount": 10000,
"recipient_id": "9000000080",
"network": "solana",
"recipient": {
"address": "4fYNw3dojWmQ4dXtSGE9epjRGy9pFSx62YymTvAVmRoz"
},
"status": "processing",
"created": 1718726403,
"updated": 1718726403
}
See authentication, signing, data conventions, and errors. Regenerate the timestamp, nonce, and signature on every retry.
POST /fund/withdrawals Sends stablecoins to an external wallet using a recipient for address and network.
Request headers
string
required
Bearer API Key.
string
required
Unix seconds, within five minutes of server time.
string
required
Unique per request, 16–64 characters.
string
required
Lowercase hexadecimal HMAC-SHA256 signature for the exact request body.
string
Idempotency key; same key with different parameters returns 409
Request parameters
string
10 digits; omit for merchant apps, required for service-provider apps
string
Business reference forming the idempotency key
string
Debit account; defaults to the primary account
string
required
Stablecoin
integer
required
Amount received by payee
string
required
Recipient of type
stablecoin_addressobject
Up to 20 key-value pairs
Response
string
required
Withdrawal ID
string
required
Merchant ID
string
Business reference
string
required
Debit account
string
required
Stablecoin
integer
required
Amount received by payee
string
Recipient ID
string
required
Network
object
required
address and memo
string
Transaction hash
string
required
processing,
payment_submitted, completed, bounced_backstring
Failure reason
object
Custom metadata
integer
required
Creation time
integer
Last update time
Status and errors
400 invalid parameters; 404 unknown recipient; 409 idempotency conflict or insufficient funds.curl --request POST \
--url "https://api.stablepay.co/api/v1/fund/withdrawals" \
--header "Authorization: Bearer <API_KEY>" \
--header "X-StablePay-Timestamp: <TIMESTAMP>" \
--header "X-StablePay-Nonce: <NONCE>" \
--header "X-StablePay-Signature: <SIGNATURE>" \
--header "Content-Type: application/json" \
--data '{
"merchant_id": "2000000001",
"currency": "USDC",
"amount": 10000,
"recipient_id": "9000000080"
}'
const response = await fetch("https://api.stablepay.co/api/v1/fund/withdrawals", {
method: "POST",
headers: {
"Authorization": "Bearer <API_KEY>",
"X-StablePay-Timestamp": "<TIMESTAMP>",
"X-StablePay-Nonce": "<NONCE>",
"X-StablePay-Signature": "<SIGNATURE>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"merchant_id": "2000000001",
"currency": "USDC",
"amount": 10000,
"recipient_id": "9000000080"
})
});
console.log(await response.json());
{
"withdrawal_id": "9000000060",
"merchant_id": "2000000001",
"account_no": "00000001",
"currency": "USDC",
"amount": 10000,
"recipient_id": "9000000080",
"network": "solana",
"recipient": {
"address": "4fYNw3dojWmQ4dXtSGE9epjRGy9pFSx62YymTvAVmRoz"
},
"status": "processing",
"created": 1718726403,
"updated": 1718726403
}
Last modified on October 29, 2026
Was this page helpful?
