Fields
idID!productProduct!participantParticipant!sessionsRemainingIntsessionsUsedInt!Number of confirmed activity registrations this purchase has covered. For passes, the lifetime count of registrations drawn from the pass. For memberships, the count within the current billing period (resets each renewal). Useful for unlimited memberships where sessionsRemaining is null and the UI still wants to show consumption. Always 0 for non-pass / non-membership purchases.
guestSessionsRemainingIntGuest passes remaining for the current billing period (memberships only). Null for non-membership purchases. Refilled or accumulated at billing- period rollover based on the membership's guestSessionCount and guestSessionsAccumulate settings.
balanceRemainingIntgiftCardCodeStringexpiresAtDateTimecurrentPeriodEndDateTimeclockStartsAtDateTimeWhen the validity clock started, for purchases of products whose clockStart is firstSession. Null means the clock has not started yet — the first session hasn't occurred — or the product doesn't defer its clock. While null on a deferred purchase, expiresAt (passes) and currentPeriodEnd (memberships) are also null.
subscriptionCancellationProductPurchaseSubscriptionCancellationPending Stripe subscription cancellation for membership purchases. Null when the subscription is not scheduled to cancel at the end of the current period.
recurringTermsSnapshotRecurringTermsSnapshotRecurring-billing terms disclosed to the buyer at purchase time (for recurring memberships). Null for one-time purchases.
blockResponses[PurchaseBlockResponse!]!Buyer responses to the product's purchase-page blocks, captured at checkout. Empty when the product had no blocks (or none were answered).
blockMetadata[BlockMetadataEntry!]!Structured values captured from purchase-page blocks the business tagged with a metadata key (contract, attestation, signature, …).
agreementDocumentPurchaseAgreementDocumentImmutable PDF record of the buyer's agreed-to blocks (contract, signature, acknowledgements), generated at agreement time (issue #1311). Null when the purchase captured no document-worthy responses.
receiptDocumentReceiptDocumentImmutable PDF receipt for this purchase. Null until generated (eagerly at fulfillment, or on first download). Free / $0 purchases get one too.
statusProductPurchaseStatus!billingIssueProductPurchaseBillingIssueLatest billing issue for recurring membership purchases. Null when billing is healthy or the purchase is not a membership subscription.
fulfillmentStatusProductFulfillmentStatusFulfillment state. Null for virtual products (passes, memberships, gift cards) that self-fulfill at payment time; set only for physical products.
fulfilledAtDateTimeWhen the purchase was fulfilled (handed over). Null while unfulfilled or for purchases that do not require fulfillment.
fulfilledByStaffMemberStaff member who recorded the fulfillment.
fulfillmentNoteStringFree-form note captured at fulfillment time (e.g. size, colour).
pricePaidIntpaymentPaymentpaymentSplits[PaymentSplit!]!Funding sources for this purchase. A direct card purchase has a single stripe split; a purchase paid partly by a gift card has multiple splits whose amountCents sum to pricePaid.
ledgerEntries[GiftCardLedgerEntry!]!Append-only balance history for gift-card purchases (each redemption, refund, and adjustment). Empty for non-gift-card purchases.
registrationsActivityRegistrationConnection!Activity registrations funded by this purchase. Includes guest registrations a buyer booked using their membership's guest passes — those have isGuestRegistration: true and a different participant, but their payment.purchase still points back here. For gift-card purchases, returns every registration the card paid for via a payment split — partial-amount splits included, so the gift card's detail page shows the full list of sessions it funded even when a Stripe charge covered the remainder. Empty for physical products. Cursor-paginated; default page size 50, clamped to [1, 100]. Sort order defaults to createdAt DESC, id ASC; pass sort: sessionStartAsc to order by the registration's session start time (e.g. first: 1 for the earliest, first-used session).
Arguments (3)
discountRedemptions[DiscountCodeRedemption!]!Discount-code redemptions applied to this purchase. Each redemption carries the discount code and the cents taken off, so receipts can show "Saved $5 with SPRING20" alongside the price. Excludes redemptions whose cancelledAt is set (ones invalidated by a cancellation).
urlResourceUrl!Canonical URLs for this purchase. business is the staff admin detail page nested under the parent product (/products/{productId}/purchases/{id}). go points the buyer at the same purchase on their account home (/my/purchases/{id}).
purchasedAtDateTime!createdAtDateTime!