Skip to main content
GET
cURL

Authorizations

Authorization
string
header
required

Your secret API key as a Bearer token: Authorization: Bearer vxn_sk_.... Keys are created and scoped in the dashboard - see Authentication.

Query Parameters

customer_id
string

Filter to one customer.

card_id
string

Filter to one card.

card_type
enum<string>

Filter by card family. For cashback, combine card_type=reward with type[]=cashback.earn&type[]=cashback.redeem.

Available options:
stamp,
reward,
discount,
coupon,
membership,
gift_card,
custom
location_id
string

Filter to one location.

team_member_id
string

Filter to entries recorded by one team member (tm_ id). Only matches source: "manual" scanner entries - the only origin that carries a person. Combine with created[gte|lte] for per-staff shift reports.

Pattern: ^tm_[A-Za-z0-9]+$
action
enum<string>

Filter by verb.

Available options:
award,
redeem
kind
enum<string>

normal or reversal. Passing tombstone returns 422 parameter_invalid - tombstones never surface.

Available options:
normal,
reversal
type

Filter by transaction type. Accepts a single value (?type=points.earn) OR an array of up to 10 values (?type[]=points.earn&type[]=points.redeem) - same toggle pattern as localized fields on the Card resource.

Available options:
card.issue,
card.link,
card.unlink,
cashback.earn,
cashback.redeem,
coupon.issue,
coupon.redeem,
discount.apply,
discount.tier_change,
employee_discount.apply,
gift_card.create,
gift_card.refund,
gift_card.spend,
gift_card.topup,
import,
manual_adjust,
membership.activate,
membership.expire,
membership.renew,
membership.use,
points.earn,
points.manual_adjust,
points.redeem,
purchase,
reversal,
stamp.add,
stamp.bonus,
stamp.redeem,
tier.change
source
string

Filter by origin. Known values: api, pos, manual, online, system - treat as an open set (new origins may be added). Unknown values return an empty list, not an error.

external_id
string

Exact match on your correlation reference.

created[gte]

Unix seconds lower bound (inclusive).

created[lte]

Unix seconds upper bound (inclusive).

reversed
boolean

true = only reversed originals; false = only un-reversed; omit for both.

limit
integer
default:25

Page size 1-100, default 25.

Required range: 1 <= x <= 100
starting_after
string

Cursor - strictly OLDER than this txn_ id (forward/next page). Numeric offset or page parameters are not supported; cursors are the only supported paging mechanism.

ending_before
string

Cursor - strictly NEWER than this txn_ id (walk forward in time from an anchor).

Response

Paginated transaction list.

Cursor-paginated transaction list (newest first, created_at desc, id desc).

object
string
required

Always "list".

Allowed value: "list"
data
object[]
required

Transaction rows.

has_more
boolean
required

True when more pages exist - pass the last id as starting_after.

next_cursor
string | null

Cursor for the next page in the direction you are already paging, or null when this page ends the collection. has_more: true always comes with a non-null next_cursor.

Feed it back to the SAME parameter you used: starting_after when paging forward (the default), or ending_before when paging backward. Treat it as opaque and do not parse it.

You no longer need to take the last object's id yourself. That still works and is unchanged, but deriving the cursor from the page put the burden of knowing the sort direction on you, and it broke silently on any endpoint whose cursor is not the object id.

Example:

"cus_iofv5j4hn6bphinmmyat27tc5y"

url
string

Stable collection URL.

Example:

"/v1/transactions"