The append-only ledger
GET/v1/wallet/ledger
scope wallet.read
Every movement, in order. Reconcile against THIS, not against the balance: balances are a current view, the ledger is the history.
Query parameters#
| Name | Example | |
|---|---|---|
limit | 50 | Max 100 |
cursor | — | next_cursor |
currency | RON | Filter by currency |
order_id | 716 | Entries for one order |
entry_type | payout_paid | Filter by movement type |
Response#
| Field | Type | Description |
|---|---|---|
count | integer | How many entries in this page. |
next_cursor | string|null | Pass back as ?cursor=; null on the last page. |
data | array | Append-only: every movement of money, newest first. Entries are never edited or deleted, so this is what to reconcile your own books against. |
data[]. | integer | The entry id. |
data[]. | integer|null | Which lot moved. |
data[]. | integer|null | Which order it belongs to. |
data[]. | string | Which way the money went. Accepts |
data[]. | string | What happened, as a stable key — return_window_started, payout_created and so on. Match on this, not on any human wording. |
data[]. | integer | Minor units, always positive; direction carries the sign. |
data[]. | string | Its currency. |
data[]. | string | Which balance bucket this entry moved money into. |
data[]. | string | ISO-8601 UTC. |
Example
{
"count": 1,
"next_cursor": null,
"data": [
{
"id": 224550,
"lot_id": 1091,
"order_id": 716,
"direction": "credit",
"type": "return_window_started",
"amount": 123400,
"currency": "RON",
"balance_category": "pending",
"created_at": "2026-09-10T07:01:08Z"
}
]
}