curl --request GET \
--url https://api.platform.dakota.xyz/developer-fees/statement \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.platform.dakota.xyz/developer-fees/statement', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/developer-fees/statement"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/developer-fees/statement"
req, _ := http.NewRequest("GET", url, nil)
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))
}{
"totals": {
"earned": "12480.55",
"paid": "9200.00",
"return_fees": "12.00",
"owed": "3268.55"
},
"months": [
{
"month": "2026-09",
"earned": "2140.20",
"paid": "0",
"return_fees": "12.00"
},
{
"month": "2026-08",
"earned": "3510.80",
"paid": "3510.80",
"return_fees": "0"
}
],
"assets": [
{
"asset": "eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"symbol": "USDC",
"earned": "10204.30"
},
{
"asset": "eip155:8453/erc20:0x3788806ff15b639146a0309218190572ff365059",
"symbol": "RD",
"earned": "1890.25"
}
],
"transactions": {
"items": [
{
"id": "3JSAEmeRoI3MYTxJR43kVc1kQ82",
"date": 1789603200,
"asset": "eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"symbol": "USDC",
"volume": "40000.00",
"fee": "40.00"
}
],
"total": 1284
}
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}Get your developer fee statement
Returns what your developer fees came to over a date range: the totals earned and paid in the range, the balance owed as of the range end, per-month sub-totals, per-asset earnings, and the fee transactions the earned figure is made of.
The statement is always your own. Nothing in a request names a client.
owed is your balance as of the range end: everything earned, less
everything paid and all return fees, up to to. It is not bounded by
from, so a balance you were owed before the range still counts, and
it need not equal the range totals’ earned − paid − return fees.
Payouts are initiated by Dakota, so an owed balance is what is due
rather than what is scheduled.
Return fees are what automatic returns of deposits charged against your developer-fee balance. Like earned, they are recorded per asset and count toward the USD figures only for USD-pegged assets. Each fee counts when it was charged; a fee given back because the return later failed counts as a negative amount when it was given back.
All money figures are decimal strings. The USD totals are USD; a
per-asset earned is in that asset’s own units.
curl --request GET \
--url https://api.platform.dakota.xyz/developer-fees/statement \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.platform.dakota.xyz/developer-fees/statement', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.platform.dakota.xyz/developer-fees/statement"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.platform.dakota.xyz/developer-fees/statement"
req, _ := http.NewRequest("GET", url, nil)
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))
}{
"totals": {
"earned": "12480.55",
"paid": "9200.00",
"return_fees": "12.00",
"owed": "3268.55"
},
"months": [
{
"month": "2026-09",
"earned": "2140.20",
"paid": "0",
"return_fees": "12.00"
},
{
"month": "2026-08",
"earned": "3510.80",
"paid": "3510.80",
"return_fees": "0"
}
],
"assets": [
{
"asset": "eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"symbol": "USDC",
"earned": "10204.30"
},
{
"asset": "eip155:8453/erc20:0x3788806ff15b639146a0309218190572ff365059",
"symbol": "RD",
"earned": "1890.25"
}
],
"transactions": {
"items": [
{
"id": "3JSAEmeRoI3MYTxJR43kVc1kQ82",
"date": 1789603200,
"asset": "eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"symbol": "USDC",
"volume": "40000.00",
"fee": "40.00"
}
],
"total": 1284
}
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}{
"type": "https://docs.dakota.xyz/api-reference/errors#not-found",
"title": "Customer Not Found",
"status": 404,
"detail": "Customer cst_2abc123 was not found in your organization.",
"instance": "https://api.platform.dakota.xyz/customers/cst_2abc123",
"request_id": "req_7f3a8b2c"
}Authorizations
Query Parameters
Unix seconds lower bound on the fee's completion time (inclusive).
Unix seconds upper bound on the fee's completion time (inclusive). Also the as-of date for the owed balance.
1-based page of the fee transactions list. The page size is 250;
transactions.total reports the full count so you can tell when a
range runs past one page.
x >= 1Was this page helpful?

