curl --request POST \
--url https://whitebit.com/api/v4/main-account/refund-deposit \
--header 'Content-Type: application/json' \
--header 'X-TXC-APIKEY: <api-key>' \
--header 'X-TXC-PAYLOAD: <api-key>' \
--header 'X-TXC-SIGNATURE: <api-key>' \
--data '
{
"transactionId": "54bffeb7-7a8f-43f8-bcd8-f14ec10fee85",
"address": "0x1234567890abcdef1234567890abcdef12345678",
"request": "{{request}}",
"nonce": 1594297865000
}
'import requests
url = "https://whitebit.com/api/v4/main-account/refund-deposit"
payload = {
"transactionId": "54bffeb7-7a8f-43f8-bcd8-f14ec10fee85",
"address": "0x1234567890abcdef1234567890abcdef12345678",
"request": "{{request}}",
"nonce": 1594297865000
}
headers = {
"X-TXC-APIKEY": "<api-key>",
"X-TXC-PAYLOAD": "<api-key>",
"X-TXC-SIGNATURE": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-TXC-APIKEY': '<api-key>',
'X-TXC-PAYLOAD': '<api-key>',
'X-TXC-SIGNATURE': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
transactionId: '54bffeb7-7a8f-43f8-bcd8-f14ec10fee85',
address: '0x1234567890abcdef1234567890abcdef12345678',
request: '{{request}}',
nonce: 1594297865000
})
};
fetch('https://whitebit.com/api/v4/main-account/refund-deposit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://whitebit.com/api/v4/main-account/refund-deposit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'transactionId' => '54bffeb7-7a8f-43f8-bcd8-f14ec10fee85',
'address' => '0x1234567890abcdef1234567890abcdef12345678',
'request' => '{{request}}',
'nonce' => 1594297865000
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-TXC-APIKEY: <api-key>",
"X-TXC-PAYLOAD: <api-key>",
"X-TXC-SIGNATURE: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://whitebit.com/api/v4/main-account/refund-deposit"
payload := strings.NewReader("{\n \"transactionId\": \"54bffeb7-7a8f-43f8-bcd8-f14ec10fee85\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\",\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-TXC-APIKEY", "<api-key>")
req.Header.Add("X-TXC-PAYLOAD", "<api-key>")
req.Header.Add("X-TXC-SIGNATURE", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://whitebit.com/api/v4/main-account/refund-deposit")
.header("X-TXC-APIKEY", "<api-key>")
.header("X-TXC-PAYLOAD", "<api-key>")
.header("X-TXC-SIGNATURE", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"transactionId\": \"54bffeb7-7a8f-43f8-bcd8-f14ec10fee85\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\",\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/main-account/refund-deposit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-TXC-APIKEY"] = '<api-key>'
request["X-TXC-PAYLOAD"] = '<api-key>'
request["X-TXC-SIGNATURE"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"transactionId\": \"54bffeb7-7a8f-43f8-bcd8-f14ec10fee85\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\",\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}"
response = http.request(request)
puts response.read_bodyRefund deposit
Refund a deposit.
The system processes refunds only for deposits with status canceled.
Obtain transactionId from the deposit.canceled webhook (uniqueId) or from the deposit/withdraw history in the WhiteBIT interface after support confirms refund availability.
The refund address must support the same network and asset as the original deposit. The refund address must not be a WhiteBIT address. The refund address can differ from the original deposit sender address.
Rate limit: 1000 requests/10 sec.
The API does not cache the response.
Refund processing does not complete instantly. Use the refund.successful and refund.failed webhooks to receive refund status updates.
curl --request POST \
--url https://whitebit.com/api/v4/main-account/refund-deposit \
--header 'Content-Type: application/json' \
--header 'X-TXC-APIKEY: <api-key>' \
--header 'X-TXC-PAYLOAD: <api-key>' \
--header 'X-TXC-SIGNATURE: <api-key>' \
--data '
{
"transactionId": "54bffeb7-7a8f-43f8-bcd8-f14ec10fee85",
"address": "0x1234567890abcdef1234567890abcdef12345678",
"request": "{{request}}",
"nonce": 1594297865000
}
'import requests
url = "https://whitebit.com/api/v4/main-account/refund-deposit"
payload = {
"transactionId": "54bffeb7-7a8f-43f8-bcd8-f14ec10fee85",
"address": "0x1234567890abcdef1234567890abcdef12345678",
"request": "{{request}}",
"nonce": 1594297865000
}
headers = {
"X-TXC-APIKEY": "<api-key>",
"X-TXC-PAYLOAD": "<api-key>",
"X-TXC-SIGNATURE": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-TXC-APIKEY': '<api-key>',
'X-TXC-PAYLOAD': '<api-key>',
'X-TXC-SIGNATURE': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
transactionId: '54bffeb7-7a8f-43f8-bcd8-f14ec10fee85',
address: '0x1234567890abcdef1234567890abcdef12345678',
request: '{{request}}',
nonce: 1594297865000
})
};
fetch('https://whitebit.com/api/v4/main-account/refund-deposit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://whitebit.com/api/v4/main-account/refund-deposit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'transactionId' => '54bffeb7-7a8f-43f8-bcd8-f14ec10fee85',
'address' => '0x1234567890abcdef1234567890abcdef12345678',
'request' => '{{request}}',
'nonce' => 1594297865000
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-TXC-APIKEY: <api-key>",
"X-TXC-PAYLOAD: <api-key>",
"X-TXC-SIGNATURE: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://whitebit.com/api/v4/main-account/refund-deposit"
payload := strings.NewReader("{\n \"transactionId\": \"54bffeb7-7a8f-43f8-bcd8-f14ec10fee85\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\",\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-TXC-APIKEY", "<api-key>")
req.Header.Add("X-TXC-PAYLOAD", "<api-key>")
req.Header.Add("X-TXC-SIGNATURE", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://whitebit.com/api/v4/main-account/refund-deposit")
.header("X-TXC-APIKEY", "<api-key>")
.header("X-TXC-PAYLOAD", "<api-key>")
.header("X-TXC-SIGNATURE", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"transactionId\": \"54bffeb7-7a8f-43f8-bcd8-f14ec10fee85\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\",\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/main-account/refund-deposit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-TXC-APIKEY"] = '<api-key>'
request["X-TXC-PAYLOAD"] = '<api-key>'
request["X-TXC-SIGNATURE"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"transactionId\": \"54bffeb7-7a8f-43f8-bcd8-f14ec10fee85\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\",\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}"
response = http.request(request)
puts response.read_bodyUsed in these guides
- On/Off-Ramp integration — corporate fiat ↔ crypto over EUR/SEPA rails.
- Payment Integration — crypto deposits, withdrawals, conversion, WhiteBIT Codes, and Express Withdraw.
Authorizations
The public WhiteBIT API key.
Base64-encoded JSON request body.
HMAC-SHA512 signature of the payload, hex-encoded. Computed as hex(HMAC-SHA512(payload, api_secret)).
Body
Transaction UUID of the deposit. Obtain from the deposit.canceled webhook (uniqueId field) or from the deposit/withdraw history in the WhiteBIT interface.
"54bffeb7-7a8f-43f8-bcd8-f14ec10fee85"
Destination wallet address for the refund. The address must support the same network and asset as the original deposit. Cannot be a WhiteBIT address. Does not have to match the original deposit address.
"0x1234567890abcdef1234567890abcdef12345678"
Base64-encoded request body. See the authentication guide for signature generation details.
"{{request}}"
A unique identifier for the request. Use a monotonically increasing value such as a Unix timestamp in milliseconds.
1594297865000
Response
System accepts refund request
Transaction ID of the deposit (echoed from request)
Was this page helpful?