curl -H "Authorization: Bearer lid_live_XXXXXXXXXXXXXXXX" \
"https://api.liddie.io/api/v1/ledger/history?page=1&limit=20"
// Works with a secret API key (ledger:read) or a dashboard JWT (balances:view)
const res = await fetch('https://api.liddie.io/api/v1/ledger/history?page=1&limit=20', {
headers: { Authorization: 'Bearer lid_live_XXXXXXXXXXXXXXXX' },
})
const { items, total } = await res.json()
{ "items": [], "total": 0 }
Ledger
Get ledger history
Read your Liddie ledger history — paginated credits from settled payments and debits from withdrawals, refunds, conversions, and fees.
GET
/
api
/
v1
/
ledger
/
history
curl -H "Authorization: Bearer lid_live_XXXXXXXXXXXXXXXX" \
"https://api.liddie.io/api/v1/ledger/history?page=1&limit=20"
// Works with a secret API key (ledger:read) or a dashboard JWT (balances:view)
const res = await fetch('https://api.liddie.io/api/v1/ledger/history?page=1&limit=20', {
headers: { Authorization: 'Bearer lid_live_XXXXXXXXXXXXXXXX' },
})
const { items, total } = await res.json()
{ "items": [], "total": 0 }
Read the individual movements behind your balances: credits from settled payments (settled = funds finished moving to storage; shown as “Processing” in the dashboard while in flight) and debits from withdrawals, refunds, conversions, and fees.
This endpoint is read-only and returns amounts as decimal strings — exact precision, never floats.
A merchant with no activity yet gets an empty page, as shown. The envelope is the same
Authorization
Secret API-key scopeledger:read, or dashboard JWT with balances:view. Subject to the global rate limit (60 requests/minute — see the Overview). See the Authentication guide.
curl -H "Authorization: Bearer lid_live_XXXXXXXXXXXXXXXX" \
"https://api.liddie.io/api/v1/ledger/history?page=1&limit=20"
// Works with a secret API key (ledger:read) or a dashboard JWT (balances:view)
const res = await fetch('https://api.liddie.io/api/v1/ledger/history?page=1&limit=20', {
headers: { Authorization: 'Bearer lid_live_XXXXXXXXXXXXXXXX' },
})
const { items, total } = await res.json()
{ "items": [], "total": 0 }
{items, total} shape as the payments list.
Amounts inside ledger entries are decimal strings. Sum and compare them with a decimal library (
big.js, decimal.js) — never parseFloat, which silently loses precision on money.Parameters
integer
Page number for pagination. Defaults to
1; values below 1 are treated as 1.integer
Page size for pagination. Defaults to
50, capped at 100.Response fields
array
The ledger entries for the requested page (credits from settled payments, debits from withdrawals, refunds, conversions, fees).
number
Number of matching ledger entries, capped at 10,000. The count is issued with a scan limit, so a merchant past that many entries sees
10000 rather than the true figure — treat it as “at least this many”.Offset paging is also clamped at 10,000: any page addressing entries beyond position 10,000 silently reuses the same window, so “page until a short page comes back” never terminates for a merchant with more than ~10,000 entries and returns the same rows repeatedly. Bound your loop at
ceil(10000 / limit) pages, and reach older history with a date window (from/to) rather than deep offsets — entries past position 10,000 are not reachable by offset paging.See also
- Get balances: the per-currency totals these entries roll up into.
- List payments: the payment records behind settlement credits.
- List withdrawals: the egress (outbound money movement) records behind withdrawal debits.
- API Overview: response conventions and rate limits shared by all merchant endpoints.