curl --request GET \
--url https://api-uat.dimetrades.com/api/wallet/history \
--header 'Authorization: Bearer <token>' \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-uat.dimetrades.com/api/wallet/history"
headers = {
"Authorization": "Bearer <token>",
"X-API-Key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'X-API-Key': '<api-key>'}
};
fetch('https://api-uat.dimetrades.com/api/wallet/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://api-uat.dimetrades.com/api/wallet/history",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api-uat.dimetrades.com/api/wallet/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-uat.dimetrades.com/api/wallet/history")
.header("Authorization", "Bearer <token>")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-uat.dimetrades.com/api/wallet/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"entries": [
{
"id": "43",
"sourceType": "FEE",
"tradeId": "019f2cfb-a1b2-733c-9d4e-42a3620ee901",
"entryType": "DEBIT",
"amount": 0.04,
"balanceBefore": 673.49,
"balanceAfter": 673.45,
"feeType": "MAKER_FEE",
"feeRate": 0.015,
"marketId": 60497,
"createdAt": "2026-07-04T11:55:17.483Z"
},
{
"id": "42",
"sourceType": "TRADE",
"tradeId": "019f2cfb-a1b2-733c-9d4e-42a3620ee901",
"entryType": "DEBIT",
"amount": 5.4,
"balanceBefore": 678.89,
"balanceAfter": 673.49,
"feeType": null,
"feeRate": null,
"marketId": 60497,
"createdAt": "2026-07-04T11:55:17.455Z"
}
],
"pagination": {
"count": 2,
"totalCount": 21,
"hasPreviousPage": false,
"hasNextPage": true
}
},
"errors": []
}Get wallet ledger history
Returns the authenticated user’s wallet ledger entries (trades, fees, deposits, withdrawals, settlements) with running balances. Filterable by source type, entry type, market, and date range.
Units
amount, balanceBefore and balanceAfter are all in dollars (decimal,
2 places) — amount: 0.04 is four cents of money. amount is always
positive; entryType (DEBIT / CREDIT) carries the direction.
feeRate is not an amount — it is the coefficient applied (0.015 =
1.5% maker, 0.06 = 6% taker). See
Conventions → Money and units.
Linking an entry back to its trade
Entries with sourceType: TRADE or sourceType: FEE carry a tradeId
matching the one on
GET /trades/my, so a fee can be
attributed to the fill that caused it. One trade produces several entries
sharing a tradeId — group on it to reconstruct the full cash impact of a
single fill. Every other sourceType returns tradeId: null.
curl --request GET \
--url https://api-uat.dimetrades.com/api/wallet/history \
--header 'Authorization: Bearer <token>' \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-uat.dimetrades.com/api/wallet/history"
headers = {
"Authorization": "Bearer <token>",
"X-API-Key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'X-API-Key': '<api-key>'}
};
fetch('https://api-uat.dimetrades.com/api/wallet/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://api-uat.dimetrades.com/api/wallet/history",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api-uat.dimetrades.com/api/wallet/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-uat.dimetrades.com/api/wallet/history")
.header("Authorization", "Bearer <token>")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-uat.dimetrades.com/api/wallet/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"entries": [
{
"id": "43",
"sourceType": "FEE",
"tradeId": "019f2cfb-a1b2-733c-9d4e-42a3620ee901",
"entryType": "DEBIT",
"amount": 0.04,
"balanceBefore": 673.49,
"balanceAfter": 673.45,
"feeType": "MAKER_FEE",
"feeRate": 0.015,
"marketId": 60497,
"createdAt": "2026-07-04T11:55:17.483Z"
},
{
"id": "42",
"sourceType": "TRADE",
"tradeId": "019f2cfb-a1b2-733c-9d4e-42a3620ee901",
"entryType": "DEBIT",
"amount": 5.4,
"balanceBefore": 678.89,
"balanceAfter": 673.49,
"feeType": null,
"feeRate": null,
"marketId": 60497,
"createdAt": "2026-07-04T11:55:17.455Z"
}
],
"pagination": {
"count": 2,
"totalCount": 21,
"hasPreviousPage": false,
"hasNextPage": true
}
},
"errors": []
}Authorizations
The end user's JWT access token, sent as Authorization: Bearer <token>.
Obtain one from POST /partner/customers or POST /partner/customers/login
— both return it as token. It identifies which of your users a call
is made for, and is sent alongside your X-API-Key on every authenticated
endpoint.
Event discovery, categories, subcategories and scores are public and need no token.
ISV / partner credential — public half. Required on every request.
Identifies the integration partner (ISV) making the call. Issued by Dime
Trades when the ISV is onboarded and sent on every /partner/* endpoint:
X-API-Key: dt_pk_live_7f3c9a2e5b18
- On the two partner endpoints that create accounts or issue tokens (
POST /partner/customers,POST /partner/customers/login), it is accompanied byX-API-Secretand is the only authentication — there is no user token yet. - On every other partner endpoint it is sent alongside the user's
Authorization: Bearer <token>: the API key says which platform is calling, the bearer token says which user it is calling for.
Credentials are scoped to one or more brands; using a key with a brandId outside that scope returns 403. Staging and production keys are separate.
The key identifies your platform — treat it as a backend credential.
Query Parameters
1-based page number for paginated results.
x >= 11 <= x <= 100Ledger source (e.g. TRADE, FEE, DEPOSIT, WITHDRAWAL, SETTLEMENT).
"TRADE"
DEBIT or CREDIT.
"DEBIT"
60497
