FurniOpsDocs
API referenceBilling

List credit entries

The credit ledger, newest first: purchases, staff grants, Ask AI spend (per member, never what they asked), refunds, disputes and expiry, each with the balance after it. Filter by kind and time.

  • Scopesbilling:read
  • Rate classread
GET/v1/billing/credits/entries

The credit ledger, newest first: purchases, staff grants, Ask AI spend (per member, never what they asked), refunds, disputes and expiry, each with the balance after it. Filter by kind and time.

Authorization

apiKey
AuthorizationBearer <token>

An API key (fo_live_… / fo_test_…) as a bearer token

In: header

Query Parameters

limit?integer

Page size

Range1 <= value <= 100
Default20
starting_after?string

Opaque position returned by a previous page

Match^[A-Za-z0-9_-]{1,512}$
ending_before?string

Opaque position returned by a previous page

Match^[A-Za-z0-9_-]{1,512}$
kind?string

What moved the balance

Value in

  • "purchase"
  • "grant"
  • "spend"
  • "refund"
  • "dispute"
  • "dispute_won"
  • "expire"
  • "adjustment"
from?string

Entries at or after it

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
to?string

Entries before it

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time

Header Parameters

FurniOps-Version?string

Dated API version; pinned per organisation on first use and overridable per request

Value in

  • "2026-10-01"
  • "2026-10-04"
FurniOps-Mode?string

The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused

Value in

  • "live"
  • "test"
If-None-Match?string

ETag of a cached representation; a match returns 304

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://example.com/v1/billing/credits/entries"
{  "object": "list",  "data": [    {      "object": "credit_entry",      "id": "string",      "kind": "purchase",      "amount_micros": -1000000000000,      "balance_after_micros": 0,      "lot": "string",      "purchase": "string",      "person": "string",      "reason": "string",      "created_at": "2019-08-24T14:15:22Z"    }  ],  "has_more": true,  "next_cursor": "string"}