curl --request POST \
--url https://whitebit.com/api/v4/main-account/history \
--header 'Content-Type: application/json' \
--header 'X-TXC-APIKEY: <api-key>' \
--header 'X-TXC-PAYLOAD: <api-key>' \
--header 'X-TXC-SIGNATURE: <api-key>' \
--data '
{
"transactionMethod": 1,
"ticker": "BTC",
"offset": 0,
"limit": 100,
"status": [
3,
7
],
"request": "{{request}}",
"nonce": 1594297865000
}
'import requests
url = "https://whitebit.com/api/v4/main-account/history"
payload = {
"transactionMethod": 1,
"ticker": "BTC",
"offset": 0,
"limit": 100,
"status": [3, 7],
"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({
transactionMethod: 1,
ticker: 'BTC',
offset: 0,
limit: 100,
status: [3, 7],
request: '{{request}}',
nonce: 1594297865000
})
};
fetch('https://whitebit.com/api/v4/main-account/history', 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/history",
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([
'transactionMethod' => 1,
'ticker' => 'BTC',
'offset' => 0,
'limit' => 100,
'status' => [
3,
7
],
'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/history"
payload := strings.NewReader("{\n \"transactionMethod\": 1,\n \"ticker\": \"BTC\",\n \"offset\": 0,\n \"limit\": 100,\n \"status\": [\n 3,\n 7\n ],\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/history")
.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 \"transactionMethod\": 1,\n \"ticker\": \"BTC\",\n \"offset\": 0,\n \"limit\": 100,\n \"status\": [\n 3,\n 7\n ],\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/main-account/history")
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 \"transactionMethod\": 1,\n \"ticker\": \"BTC\",\n \"offset\": 0,\n \"limit\": 100,\n \"status\": [\n 3,\n 7\n ],\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}"
response = http.request(request)
puts response.read_bodyGet deposit/withdraw history
The endpoint retrieves the history of deposits and withdraws.
Deposit status codes:
Successful- 3, 7Canceled- 4, 9Unconfirmed by user- 5AML frozen- 21Uncredited- 22Pending- 15
Successful (3, 7) is a final state. A credited deposit does not later transition to AML frozen (21) or Uncredited (22); those checks happen before crediting.
Travel Rule Deposit check status codes:
Awaiting verification- 27: The transaction has been frozen due to the lack of data required under the Travel Rule. The user is required to provide this data manually through the exchange interface.Confirmation in progress- 28: The Travel Rule data provided by the user is currently being verified by WhiteBIT.
⚠️ Due to regulatory requirements in Turkey and EU, the system places every inbound crypto deposit on hold (frozen) until confirming the transaction’s origin. The sender must provide certain details if the transaction is from another Virtual Asset Service Provider (VASP) or verify the address if from a self-hosted wallet. The system credits deposited funds to the account only after successful verification.
Withdraw status codes:
Pending- 1, 2, 6, 10–17 (withdrawal in progress).Successful- 3, 7Canceled- 4Unconfirmed by user- 5AML frozen- 21Partially successful- 18
Rate limit: 200 requests/10 sec.
Requests with limit values above 100 return large payloads. Use high limits only when necessary and ensure the client application can handle large response sizes.
The API does not cache the response.
Results are sorted newest first (descending by timestamp).
No date filtering: the endpoint does not accept startDate / endDate parameters, and pagination is capped at offset + limit ≤ 10000 (requests beyond the cap return Offset is too big. Please use offset + limit less than 10000.). To read more than 10,000 records, narrow the result set with the available filters (transactionMethod, ticker, status) and paginate within each subset; for a complete history export beyond the cap, use the Report on the History page.
curl --request POST \
--url https://whitebit.com/api/v4/main-account/history \
--header 'Content-Type: application/json' \
--header 'X-TXC-APIKEY: <api-key>' \
--header 'X-TXC-PAYLOAD: <api-key>' \
--header 'X-TXC-SIGNATURE: <api-key>' \
--data '
{
"transactionMethod": 1,
"ticker": "BTC",
"offset": 0,
"limit": 100,
"status": [
3,
7
],
"request": "{{request}}",
"nonce": 1594297865000
}
'import requests
url = "https://whitebit.com/api/v4/main-account/history"
payload = {
"transactionMethod": 1,
"ticker": "BTC",
"offset": 0,
"limit": 100,
"status": [3, 7],
"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({
transactionMethod: 1,
ticker: 'BTC',
offset: 0,
limit: 100,
status: [3, 7],
request: '{{request}}',
nonce: 1594297865000
})
};
fetch('https://whitebit.com/api/v4/main-account/history', 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/history",
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([
'transactionMethod' => 1,
'ticker' => 'BTC',
'offset' => 0,
'limit' => 100,
'status' => [
3,
7
],
'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/history"
payload := strings.NewReader("{\n \"transactionMethod\": 1,\n \"ticker\": \"BTC\",\n \"offset\": 0,\n \"limit\": 100,\n \"status\": [\n 3,\n 7\n ],\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/history")
.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 \"transactionMethod\": 1,\n \"ticker\": \"BTC\",\n \"offset\": 0,\n \"limit\": 100,\n \"status\": [\n 3,\n 7\n ],\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://whitebit.com/api/v4/main-account/history")
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 \"transactionMethod\": 1,\n \"ticker\": \"BTC\",\n \"offset\": 0,\n \"limit\": 100,\n \"status\": [\n 3,\n 7\n ],\n \"request\": \"{{request}}\",\n \"nonce\": 1594297865000\n}"
response = http.request(request)
puts response.read_bodyUsed in these guides
- 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
Request signature
"{{request}}"
Unique request identifier
1594297865000
Method. Example: 1 to display deposits / 2 to display withdraws. Do not send this parameter in order to receive both deposits and withdraws.
1, 2 1
Can be used for filtering transactions by specific address.
"3ApEASLcrQtZpg1TsssFgYF5V5YQJAKvuE"
Can be used for filtering transactions by specific array of addresses.
20["3ApEASLcrQtZpg1TsssFgYF5V5YQJAKvuE"]
Can be used for filtering transactions by specific unique id
"24529041"
LIMIT is a special clause used to limit records a particular query can return. Default: 50, Min: 1, Max: 500
1 <= x <= 500100
Use the OFFSET clause to return entries starting from a particular line.
0 <= x <= 100000
Can be used for filtering transactions by status codes.
⚠️ Caution: Use this parameter with the appropriate transactionMethod and valid status codes for that method. See the endpoint description above for valid codes. Example: "status": [3,7]
[3, 7]
Was this page helpful?