Balance history

Every movement on your balance, newest first, for reconciling with your own books.

GET/api/v1/ledger

Purchases, 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.csv
Response
{  "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

ParameterDescription
limitPage size, 1 to 100. Default 50.
cursorThe nextCursor from the previous page, passed back unchanged. It is opaque: do not build or decode it.
created_afterInclusive. Unix seconds or ISO 8601 (2026-10-01, 2026-10-01T12:00:00Z). No offset means UTC.
created_beforeExclusive, same formats. created_after=2026-10-01&created_before=2026-11-01 is exactly October.
formatcsv for a CSV download. The next page's cursor is then in the X-Next-Cursor header.

Fields

  • id is opaque and stable. Use it to de-duplicate when you import.
  • kind is purchase (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) or other.
  • amountCents is signed: positive adds to your balance, negative takes from it.
  • order is the order the entry belongs to, as the id /order accepts, or null.

Paging

  • Newest first. Call again with cursor set to the last nextCursor until it comes back null.
  • 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 limit of 0 or 500, an unreadable date, a cursor from another endpoint or account) is refused with E1101, never guessed at.

Errors

CodeHTTPMeaning
E1001401The key is missing, malformed, revoked or unknown.
E1002429Too many requests. Wait for the minute to roll over and retry. See Rate limits.
E1101400A required parameter is missing, or one is not valid (a bad limit, date or cursor on the list endpoints, for example).
E1702403The request came from an IP that is not on your allowlist.
E1000500Something 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.

Balance history (GET /ledger) · API reference · nfa.pub