Skip to content

List transactions

GET
/transactions

The ledger: every stamp, redemption, reversal and expiry, newest first. Filterable by location, program, card, type and date range, and cursor-paginated — the cursor is a keyset, so a row inserted while you are paging cannot make you skip one. This is the one read a location-restricted key can genuinely narrow, because every transaction carries the site it happened at; asking for a location outside the restriction returns an EMPTY PAGE rather than an error, so a sync loop does not break on it. There is NO endpoint that writes a transaction, and no transactions:write scope: a transaction is the record that a real card was presented at a real place.

Authorizations

ApiKeyBearer

A shop-scoped API key created in the dashboard and shown exactly once. An MCP tmk_ key presented here returns a 401 that names the mistake.

Type
HTTP (bearer)

Parameters

Query Parameters

limit

Page size. Clamped to the maximum (100 by default, PUBLIC_API_MAX_PAGE_SIZE) rather than rejected.

Type
integer
Minimum
1
cursor

Opaque cursor from a previous response's next_cursor. Absent next_cursor (null) means the end.

Type
string
location_id
Type
string
program_id
Type
string
card_id
Type
string
type
Type
string
from
Type
string
Format
"date-time"
to
Type
string
Format
"date-time"

Responses

List transactions

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"id": "trx_docsfixture0001",
  
  
  
"card_id": "cin_docsfixture0001",
  
  
  
"program_id": "prg_docsfixture0001",
  
  
  
"type": "stamp",
  
  
  
"location_id": "loc_docsfixture0001",
  
  
  
"location_name": "Via Roma 1",
  
  
  
"stamps_delta": 1,
  
  
  
"value_delta": null,
  
  
  
"prize_id": null,
  
  
  
"reversed_at": null,
  
  
  
"created_at": "2026-08-05T10:15:00.000Z"
  
  
}
  
],
  
"next_cursor": "eyJjIjoiMjAyNi0wOC0wNVQxMDoxNTowMC4wMDBaIiwiaSI6ImNpbl9kb2NzZml4dHVyZTAwMDEifQ",
  
"limit": 25
}

Samples

Powered by VitePress OpenAPI

Requires the Business API add-on.