Balance history
Every movement on your balance, newest first, for reconciling with your own books.
GET
/api/v1/ledgerPurchases, refunds, top-ups and adjustments, one entry each. The entries add up to your balance. Same paging, date filters and CSV export as /orders.
Request
curl "https://www.nfa.pub/api/v1/ledger?created_after=2026-10-01&format=csv" \ -H "X-Api-Key: rsk_..." -o ledger.csvResponse
{ "ok": true, "entries": [ { "id": "led_3f9c2a7e5b1d48c0a6e2f913", "at": "2026-10-25T14:31:05.112Z", "kind": "refund", "amountCents": 145, "currency": "EUR", "order": "339620d0e1843b5b-cc957e7efa86a0db" }, { "id": "led_81e0b4c95d2a7f3e1c6b0a44", "at": "2026-10-25T14:31:01.512Z", "kind": "purchase", "amountCents": -290, "currency": "EUR", "order": "339620d0e1843b5b-cc957e7efa86a0db" }, { "id": "led_c2d7a0e9f4b3816d5e2a9c07", "at": "2026-10-24T09:12:44.000Z", "kind": "topup", "amountCents": 5000, "currency": "EUR", "order": "9e1b7c40aa52d3f8-0c6e1b2d9f7a4e35" } ], "nextCursor": null}Parameters
| Parameter | Description |
|---|---|
limit | Page size, 1 to 100. Default 50. |
cursor | The nextCursor from the previous page, passed back unchanged. It is opaque: do not build or decode it. |
created_after | Inclusive. Unix seconds or ISO 8601 (2026-10-01, 2026-10-01T12:00:00Z). No offset means UTC. |
created_before | Exclusive, same formats. created_after=2026-10-01&created_before=2026-11-01 is exactly October. |
format | csv for a CSV download. The next page's cursor is then in the X-Next-Cursor header. |
Fields
idis opaque and stable. Use it to de-duplicate when you import.kindispurchase(an API, dashboard or website purchase paid from balance),refund(money for an order coming back),topup,adjustment(a correction by us, or a carried-over or transferred balance) orother.amountCentsis signed: positive adds to your balance, negative takes from it.orderis the order the entry belongs to, as the id/orderaccepts, ornull.
Paging
- Newest first. Call again with
cursorset to the lastnextCursoruntil it comes backnull. - Pages never shift: rows that arrive while you page through do not push rows onto the next page or show one twice.
- Anything malformed (a
limitof 0 or 500, an unreadable date, a cursor from another endpoint or account) is refused withE1101, never guessed at.
Errors
| Code | HTTP | Meaning |
|---|---|---|
E1001 | 401 | The key is missing, malformed, revoked or unknown. |
E1002 | 429 | Too many requests. Wait for the minute to roll over and retry. See Rate limits. |
E1101 | 400 | A required parameter is missing, or one is not valid (a bad limit, date or cursor on the list endpoints, for example). |
E1702 | 403 | The request came from an IP that is not on your allowlist. |
E1000 | 500 | Something went wrong on our side. Retry, and contact support if it keeps happening. |
Rate limits: 60 requests a minute per IP address, and 30 a minute per account.