Account Statement
Read all balances and a paginated list of operations for a user over a window.
POST /api/account/statement
Returns the API key user's current balances on every supported network plus a paginated feed of operations (deposits, withdrawals, payouts, transfers) within a date range.
All amounts are in the asset's native units (e.g.
USDC, not cents). BRL is the only currency expressed as integer cents on receipt and decimal string here.
Request
curl --request POST \
--url https://api.hodle.com.br/api/account/statement \
--header "Authorization: Bearer $API_KEY" \
--header "Content-Type: application/json" \
--data '{
"from": "2026-04-01T00:00:00Z",
"to": "2026-05-01T00:00:00Z",
"limit": 50
}'const res = await fetch('https://api.hodle.com.br/api/account/statement', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.HODLE_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
from: '2026-04-01T00:00:00Z',
to: '2026-05-01T00:00:00Z',
limit: 50,
}),
})
const data = await res.json()import os, requests
res = requests.post(
"https://api.hodle.com.br/api/account/statement",
headers={
"Authorization": f"Bearer {os.environ['HODLE_API_KEY']}",
"Content-Type": "application/json",
},
json={
"from": "2026-04-01T00:00:00Z",
"to": "2026-05-01T00:00:00Z",
"limit": 50,
},
)
data = res.json()Parameters
| Field | Type | Required | Description |
|---|---|---|---|
from | string | Yes | ISO start of window (inclusive). |
to | string | Yes | ISO end of window (exclusive). |
limit | integer | No | 1–200. Default 50. |
cursor | string | No | Continuation token from a previous response's nextCursor. |
type | string | No | Filter: deposit, withdraw, payout, transfer. Repeat to combine. |
Response
{
"success": true,
"data": {
"balances": [
{ "network": "polygon", "asset": "USDT", "amount": "182.45" },
{ "network": "base", "asset": "USDC", "amount": "0.00" },
{ "network": "tron", "asset": "USDT", "amount": "0.00" }
],
"operations": [
{
"id": "op_8f3a...",
"type": "payout",
"status": "COMPLETED",
"amount": "5.00",
"asset": "USDT",
"network": "polygon",
"valueInBrl": "27.40",
"fee": "1.55",
"txHash": "0xeafe9c...",
"endToEndId": "E12345...",
"reference": null,
"createdAt": "2026-04-28T23:32:10.000Z",
"completedAt": "2026-04-28T23:33:42.000Z"
},
{
"id": "op_b21f...",
"type": "deposit",
"status": "COMPLETED",
"amount": "100.00",
"asset": "USDC",
"network": "base",
"valueInBrl": "545.00",
"fee": "0.00",
"txHash": "0xa1b2...",
"createdAt": "2026-04-26T14:11:02.000Z",
"completedAt": "2026-04-26T14:13:55.000Z"
}
],
"nextCursor": "c2Vla180MjkyMjEz",
"total": 137
}
}| Field | Type | Description |
|---|---|---|
data.balances | array | Same shape as POST /api/wallet/get. |
data.operations | array | One row per operation, sorted by createdAt desc. |
data.nextCursor | string? | If present, pass back as cursor to fetch the next page. |
data.total | integer | Total count for the window — useful for pagination UIs. |
Operation types
| Type | Source endpoint | Direction |
|---|---|---|
deposit | /api/deposit/asset | In |
withdraw | /api/withdraw/pix | Out |
payout | /api/wallet/payout | Out |
transfer | /api/wallet/transfer | Out |
lightning | /api/lightning/invoice (paid) | In |
Errors
{ "success": false, "error": "Window must be at most 90 days" }{ "success": false, "error": "Invalid or expired cursor" }