---
title: "List Vouchers"
method: GET
path: "/shop/vouchers"
tags: ["Vouchers"]
---

# List Vouchers

`GET /shop/vouchers`

Returns a paginated list of `Voucher`s imported into the site. The
list reflects vouchers managed by an external processor (e.g.
GiftPro) that have been synced into Trybe via a previous
`importVouchers` run.

Requires the `RESERVATIONS_VIEW` permission on the target site.

## Query parameters

- `site_id` string, required
- `page` integer
- `per_page` integer

## Response `200`

A paginated list of imported `Voucher`s for the requested site.

- object
  - `data` Voucher[], required — The vouchers on this page, ordered by their MongoDB insertion order (effectively chronological by import time).
    - `id` string, object-id, required — The Trybe ID of the voucher record.
    - `name` string, required — Customer- and cashier-facing name of the voucher, mirrored from the source system at import time.
    - `description` string, nullable, required — Long-form description of the voucher imported from the source system. Shown to cashiers when redeeming.
    - `processor_voucher_id` string, required — The voucher's primary key in the external processor's system (e.g. the GiftPro voucher ID). Used to reconcile the Trybe record with the source of truth.
    - `price` integer, required — The face value of the voucher in the smallest unit of `currency` (e.g. pence for `gbp`). Mirrored from the source system and used as the redemption amount when the voucher is presented as payment.
    - `currency` string, required — The ISO-4217 currency code (lowercase) the voucher's `price` is expressed in.
    - `processor` string, required — Identifier of the integration that owns this voucher. Drives which redemption flow Trybe routes the voucher through at checkout.
    - `processor_data` object, required — Processor-specific metadata captured at import time. Shape varies by `processor`; treat as opaque unless you specifically target a known integration.
    - `valid_offerings` VoucherValidOffering[], required — Offerings the voucher may be redeemed against. When the endpoint is called with offering summaries enabled (the default for `getVoucher` and the mutation endpoints), each entry is enriched with the offering's display name. When empty, the voucher is redeemable against any offering subject to the site's normal rules.
      - `offering_id` string, required — The ID of the offering. For most offering types this is the MongoDB `_id` of the offering. For `Membership` offerings, the ID is a synthetic composite of the form `{membership_type_id}_{membership_rate_id}_{duration}`.
      - `offering_type` string, required — Display-friendly type label of the offering, capitalised. Maps one-to-one to the underlying offering class (e.g. `Session`, `AppointmentType`, `Package`, `Membership`).
      - `offering_name` string — The customer-facing name of the offering.
      - `offering_details` VoucherMembershipOfferingDetails — Extra metadata attached to a `valid_offerings` entry when the offering is a membership. Captures which membership type and rate the voucher grants, plus the duration of the granted membership.
        - `membership_type_id` string, uuid, required — The ID of the granted `MembershipType`.
        - `membership_type_name` string, required — Display name of the granted membership type.
        - `membership_rate_id` string, uuid, required — The ID of the rate within `membership_type_id` to grant.
        - `membership_rate_name` string, required — Display name of the granted rate.
        - `duration` string, required — Length of the granted membership as an ISO 8601 duration.
        - `duration_friendly` string, required — Human-readable rendering of `duration` for UI display.
    - `valid_weekdays` string[], required — Lowercase weekday names the voucher may be redeemed on. Empty means "any weekday".
    - `invalid_date_set_ids` string[], required — IDs of date sets (e.g. bank holidays, peak-season blackouts) on which the voucher may **not** be redeemed. Each ID must reference a date set on the caller's organisation.
    - `site_id` string, uuid, required — The ID of the site this voucher record belongs to.
    - `organisation_id` string, uuid, required — The ID of the organisation that owns the voucher record.
    - `processor_created_at` string, date-time, nullable, required — When the voucher was created in the source processor's system.
    - `created_at` string, date-time, required — When the voucher record was imported into Trybe.
    - `updated_at` string, date-time, required — When the voucher record was last updated in Trybe.
  - `meta` PaginationMeta, required — Counts and positional information for the current page of a list response. Use `current_page` and `last_page` to drive pagination UI, `total` for result counts, and `per_page` to confirm the page size the server actually applied (which may differ from the requested value when capped).
    - `from` integer, required — The item number from which this results set starts from
    - `to` integer, required — The item number from which this results set ends at
    - `total` integer, required — The total number of results
    - `current_page` integer, required — The current page number
    - `last_page` integer, required — The page number of the last result set
    - `per_page` integer, required — The number of results per page
    - `path` string, required — The path of this api request
  - `links` PaginationLinks, required — Hypermedia navigation links for paging through a list response. Each property is a fully-qualified URL that preserves the original query string (filters, sort, page size) and only swaps the `page` parameter. `next` and `prev` are `null` at the ends of the result set; `first` and `last` are always present.
    - `first` string, required — The url of the first page for the paginated results set
    - `next` string, nullable, required — The url of the next page for the paginated results set
    - `prev` string, nullable, required — The url of the previous page for the paginated results set
    - `last` string, required — The url of the last page for the paginated results set

## Other responses

- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.

---

[API](https://skmtc.dev/try/apis/trybe-api.md) · [All operations](https://skmtc.dev/try/apis/trybe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/try/trybe-api/revisions/f37f92702da5/schema)
