Checkout flow
The end-to-end white-label flow, from browsing to reserving to checkout.
Jetron Fluid powers a complete ticket-buying flow on your own frontend. The flow has three phases: browse, reserve, and order.
Browse events and tickets
Use GET /events to list your host's
public events and
GET /events/{slug}/tickets
to show
the purchasable ticket types. Each ticket includes live availability
(quantityLeft), pricing, and a status such as AVAILABLE or SOLD_OUT.
Reserve tickets
When the attendee picks tickets, call
POST /events/{slug}/reservations.
This
prices the cart and holds the stock for the checkout window, and returns:
reservationToken: identifies the attendee's cart. Echo it as theX-Device-IDheader on the order and release calls.quoteReference: an opaque handle to the priced, server-held quote.total,totalFees,items: the priced cart, in the smallest currency unit.clientExpiresAt: drive a countdown timer on your checkout page.
Calling it again with the same X-Device-ID refreshes/extends the same
reservation instead of holding fresh stock. See
Reservations for the details.
Render your checkout page
Collect the attendee's details (email, first name, last name) on your own checkout UI while the countdown runs. Tickets are issued to the email you submit.
Create the order
Call
POST /events/{slug}/orders
with the
quoteReference in the body and the reservationToken echoed as
X-Device-ID:
- Free (zero-total) orders are fulfilled immediately and return
status: "confirmed"with the orderreference. - Paid orders return
status: "pending_payment"and acheckoutUrl. Redirect the attendee there to pay. After payment, the gateway redirects to yourcallbackUrlwith areferencequery parameter.
A duplicate order for the same reservation returns 409.
Releasing a hold early
If the attendee abandons checkout, you can free the stock immediately with
DELETE /events/{slug}/reservations (echo the token as X-Device-ID). Holds
otherwise expire on their own.
Limitations
Seat Map events
Seat Map events cannot be sold through the API yet, and the checkout
endpoints return 400 for them. Use the checkout embed to sell
those events, which supports seat selection in full.
Reservations and orders are never cached.

