Passes are prepaid punch cards sold by the organization (e.g., "10 x Sauna"). A pass grants a number of units that the customer can redeem against eligible service variants after purchase.
All endpoints are scoped to the organization that owns the API key:
/store/v0
List passes
Retrieve all public passes for the organization.
GET /store/v0/passesResponse
{
"passes": [
{
"public_id": "8b2c3d4e-5f60-4a71-9234-0b1c2d3e4f5a",
"name": "10 x Sauna",
"description": "Ten sauna sessions at a discounted price",
"short_description": "Sauna punch card",
"unit_count": 10,
"expires_after_value": 1,
"expires_after_unit": "years",
"human_expiration": "Expires after 1 year",
"thumbnail": null,
"price": {
"cents": 100000,
"currency": "NOK",
"amount": 1000.0,
"formatted": "1.000 NOK",
"abbreviated": "1K NOK"
},
"eligibilities": [
{
"id": "4a7b8c9d-0e1f-4a2b-9c3d-4e5f6a7b8c9d",
"name": "Sauna — Long Session"
}
]
}
]
}Field reference (pass)
| Field | Type | Notes |
|---|---|---|
public_id | string | Public identifier |
name | string | Display name |
description | string | null | May contain HTML |
short_description | string | null | Brief description |
unit_count | integer | Units granted per pass |
expires_after_value | integer | null | Together with expires_after_unit; null = no expiry |
expires_after_unit | string | null | "days", "weeks", "months", or "years" |
human_expiration | string | Human-readable expiry (e.g., "Expires after 1 year") |
thumbnail | object | null | Media (see Types) |
price | object | Money (see Types) |
eligibilities | array | Service variants the pass can be redeemed against (see below) |
Expiry
When expires_after_value and expires_after_unit are set, each purchased pass expires that long after purchase (e.g., 1 + "years" = one year after the purchase date). When both are null, the pass never expires.
Field reference (eligibility)
Each eligibility describes a service variant the pass can be redeemed against:
| Field | Type | Notes |
|---|---|---|
id | string | Public ID of the service variant |
name | string | Display name, including the parent service (e.g. "Sauna — Long Session") |
Get pass
Retrieve a single pass by public_id.
GET /store/v0/passes/{public_id}Path parameters
| Parameter | Type | Description |
|---|---|---|
public_id | string | Pass public identifier |
Response
{
"pass": {
"public_id": "8b2c3d4e-5f60-4a71-9234-0b1c2d3e4f5a",
"name": "10 x Sauna"
}
}The pass object has the same structure as in the list response (fields omitted above for brevity).
Purchasing a pass
Add a pass to a cart with a pass cart item:
POST /store/v0/carts/{cart_public_id}/items{
"cart_item": {
"type": "pass",
"attributes": {
"pass_product_id": "8b2c3d4e-5f60-4a71-9234-0b1c2d3e4f5a",
"quantity": 1
}
}
}The pass_product_id is the pass public_id from this endpoint.